Nén và giải nén file ZIP trên Terminal Linux

Trên Windows, chúng ta có thể tạo và giải nén các file ZIP bằng cách sử dụng các phần mềm chuyên dụng như WinRAR hay 7 Zip. Vậy có thể giải nén file Zip trên Linux không?, bạn đọc cùng tham khảo tiếp bài viết dưới đây của Taimienphi.vn để tìm hiểu cách nén và giải nén file ZIP trên Terminal Linux.

 

Mục Lục bài viết:
1. Định dạng file nén ZIP
   1.1. Lệnh zip, unzip, và các tiện ích khác
2. Cách tạo file ZIP trên Linux bằng lệnh zip
   2.1. Bao gồm các thư mục trong file ZIP
   2.2. Thiết lập mức độ nén
   2.3. Thêm mật khẩu cho file ZIP
3. Giải nén file ZIP trên Linux bằng lệnh unzip
   3.1. Giải nén các file vào thư mục đích
   3.2. Giải nén file ZIP được bảo vệ mật khẩu
   3.3. Bao gồm các file
   3.4. Ghi đè các file
   3.5. Tìm kiếm bên trong file ZIP
4. Thêm mật khẩu file ZIP bằng lệnh zipcloak
5. Sử dụng lệnh zipdetails để xem chi tiết file ZIP
6. Sử dụng lệnh zipgrep để tìm kiếm bên trong file ZIP
7. Sử dụng lệnh zipinfo để xem thông tin file ZIP
8. Sử dụng lệnh zipsplit để chia file ZIP thành các file nhỏ hơn

 

1. Định dạng file nén ZIP

File ZIP là định dạng file nén được sử dụng phổ biến nhất hiện nay. Mặc dù các .tar.gz và tar.bz2 là các file phổ biến trên Linux, tuy nhiên đôi khi trong một số trường hợp người dùng Windows có thể gửi cho bạn các file được nén ở định dạng ZIP. Hoặc giả sử trong trường hợp nếu bạn đang sử dụng Linux và muốn nén các file để gửi cho người dùng Windows khác, trong trường hợp này định dạng file ZIP là lựa chọn lý tưởng nhất, phù hợp và tương thích với tất cả người dùng.

 

1.1 Lệnh zip, unzip, và các tiện ích khác

Trên các hệ điều hành như macOS được tích hợp sẵn các lệnh cho phép người dùng tạo các file ZIP và giải nén các file này, các lệnh này được gọi là lệnh zip và unzip. Ngoài ra còn có một số tiện ích khác liên quan như zipcloak, zipdetails, zipsplit và zipinfo.

Các tiện ích trên hiện có sẵn trên các phiên bản Ubuntu 19.04, 18.10, 18.04, Manjaro 18.04 và Fedora 29. Tuy nhiên trên một số bản phân phối Linux khác chẳng hạn như CentOS vẫn bị thiếu một số tiện ích.

Để cài đặt các phần tử bị thiếu trên Fedora 29, bạn sử dụng lệnh dưới đây:

sudo dnf install perl-IO-Compress

 

Để cài đặt các phần tử bị thiếu trên CentOS 7, bạn sử dụng lệnh dưới đây:

sudo yum install perl-IO-Compress

 

Nếu bất kỳ tiện ích zip nào bị thiếu trên các bản phân phối Linux ở trên, bạn có thể sử dụng công cụ quản lý gói của bản phân phối Linux đó để cài đặt gói cần thiết.

 

2. Cách tạo file ZIP trên Linux bằng lệnh zip

Để tạo file ZIP trên Linux, trước hết bạn phải chọn tên file nén và các file được chứa trong đó. Ngoài ra nếu muốn, bạn có thể thêm phần đuôi mở rộng ".zip" vào tên file nén để dễ nhận biết.

Giả sử để tạo một file có tên source_code.zip chứa tất cả file mã nguồn C và các file tiêu đề trong thư mục hiện tại, bạn sử dụng lệnh dưới đây:

zip source_code *.c *.h

Mỗi một file sẽ được liệt kê khi được thêm. Tên và số lượng file nén sẽ được hiển thị.

Khi nhìn vào file nén ZIP mới vừa được tạo, bạn sẽ thấy có phần đuôi mở rộng ".zip" đã được zip thêm tự động.

ls -l source_code.zip

Nếu không muốn hiển thị phần đuôi mở rộng ".zip" trên file ZIP vừa tạo, bạn có thể sử dụng tùy chọn -q (quiet):

zip -q source_code *.c *.h

 

2.1 Bao gồm các thư mục trong file ZIP

Để bao gồm các thư mục con trong file ZIP, bạn có thể sử dụng tùy chọn -r (recursive) và tên thư mục con trong dòng lệnh. Để tạo file ZIP như trước đây nhưng bao gồm các thư mục con trong file nén, bạn sử dụng lệnh dưới đây:

zip -r -q source_code archive/ *.c *.h

Để người nhận khi giải nén file ZIP, tất cả các file sẽ được sắp xếp và nằm trong một thư mục trên máy tính của họ.

Lệnh dưới đây sẽ nén thư mục work và tất cả các thư mục con. Lưu ý lệnh này sẽ nén thư mục mẹ của thư mục work:

zip -r -q source_code work/

 

2.2. Thiết lập mức độ nén

Nếu muốn bạn cũng có thể thiết lập mức độ nén cho các file thêm các file này vào file nén ZIP. Phạm vi trong khoảng từ 0 đến 9, trong đó 0 là không nén. Mức độ nén càng cao càng mất nhiều thời gian để tạo file ZIP.

Để zip sử dụng mức độ nén cụ thể, chúng ta chỉ cần chuyển số dưới dạng tùy chọn trên dòng lệnh bằng cách thêm "-", như lệnh dưới đây:

zip -0 -r -q source_code work/

Mặc định mức độ nén là 6, vì vậy bạn không cần phải cung cấp tùy chọn -6, nhưng nếu thêm tùy chọn này cũng không ảnh hưởng gì cả.

zip -r -q source_code work/

Mức độ nén tối đa là 9.

zip -9 -r -q source_code work/

Với các file và thư mục nén được chọn, sự khác biệt giữa mức độ 0 (không nén) và mức độ nén mặc định (mức 6) là 400K. Sự khác biệt giữa mức độ nén mặc định (mức 6) và mức độ nén cao nhất (mức 9) chỉ là 4K.

Với các file nén lưu trữ hàng trăm hoặc hàng nghìn file, kích thước file nén càng nhỏ càng tiết kiệm được nhiều không gian trống.

 

2.3. Thêm mật khẩu cho file ZIP

Để thêm mật khẩu cho file ZIP khá đơn giản. Chỉ cần sử dụng tùy chọn -e (encrypt) và bạn sẽ được yêu cầu nhập mật khẩu 2 lần để xác minh:

zip -e -r -q source_code work/

 

3. Giải nén file ZIP trên Linux bằng lệnh unzip

Để giải nén file ZIP trên Linux, chúng ta sử dụng lệnh unzip + tên file ZIP. Lưu ý chúng ta sẽ phải thêm phần đuôi mở rộng ".zip":

unzip source_code.zip

Các file sau khi được giải nén sẽ được liệt kê và hiển thị trên cửa sổ Terminal:

Cũng giống như lệnh zip, lệnh unzip cũng có tùy chọn -q (quiet), vì vậy nếu không muốn xem, hiển thị các file sau khi được nén trên cửa sổ Terminal, bạn sử dụng lệnh dưới đây:

unzip -q source_code.zip

 

3.1. Giải nén các file vào thư mục đích

Để giải nén các file vào một thư mục cụ thể, bạn sử dụng tùy chọn -d (directory) + đường dẫn đến thư mục mà bạn muốn lưu trữ các file được giải nén.

unzip -q source_code.zip -d ./development

 

3.2. Giải nén file ZIP được bảo vệ mật khẩu

Nếu một file ZIP được tạo có mật khẩu bảo vệ, trong quá trình giải nén file bạn sẽ được yêu cầu nhập mật khẩu để tiếp tục. Nếu nhập sai mật khẩu, quá trình giải nén file sẽ thất bại.

unzip -q source_code.zip

Nếu không quan tâm mật khẩu bảo vệ file có bị người khác phát hiện và nhìn thấy hay không, bạn có thể thêm mật khẩu trong dòng lệnh cùng tùy chọn -P (password). Lưu ý tùy chọn này phải viết hoa là "-P".

unzip -P fifty.treacle.cutlass -q source_code.zip

 

3.3. Bao gồm các file

Nếu không muốn giải nến một hoặc một nhóm file cụ thể, bạn có thể sử dụng tùy chọn -x (exclude). Giả sử trong ví dụ này Taimienphi.vn sẽ giải nén tất cả các file ngoài các file có phần đuôi mở rộng kết thúc là ".h":

unzip -q source_code.zip -x *.h

 

3.4. Ghi đè các file

Giả sử vừa giải nén một file ZIP nhưng chẳng may bạn lỡ ta xóa mất một số file giải nén.

Giải pháp trong trường hợp này là giải nén lại các file lần nữa. Nhưng nếu giải nén file ZIP trong cùng thư mục trước, bạn sẽ được thông báo ghi đè các file. Trong trường hợp này bạn có thể sử dụng các tùy chọn phản hồi dưới đây:

Lưu ý: ngoài tùy chọn phản hồi r (rename), các tùy chọn còn lại phân biệt chữ hoa chữ thường.

y: Yes, ghi đè file này.

n: No, không cho phép ghi đè file.

A: All, ghi đè lên tất cả các file.

N: None, không ghi đè file nào.

r:Rename, giải nén file này nhưng đặt tên mới. Bạn sẽ được thông báo nhập một tên mới.

Để buộc giải nén để ghi đè các file hiện có, chúng ta sử dụng tùy chọn -o (overwrite):

unzip -o -q source_code.zip

Ngoài ra giải pháp hiệu quả nhất để thay thế các file bị thiếu là chỉ giải nén các file nén không có trong thư mục đích. Để làm được điều này, chúng ta sử dụng tùy chọn -n (never overwrite):

unzip -n source_code.zip

 

3.5. Tìm kiếm bên trong file ZIP

Ngoài ra nếu muốn bạn có thể xem trước các file bên trong file ZIP trước khi giải nén file. Để làm được điều này, bạn có thể sử dụng tùy chọn -l (list archive):

unzip -l source_code.zip | less

Đầu ra lệnh sẽ hiển thị các file và thư mục bên trong file ZIP, bao gồm kích thước và ngày tháng được thêm vào file nén. Nhấn phím "q" để thoát.

 

4. Thêm mật khẩu file ZIP bằng lệnh zipcloak

Trong trường hợp nếu vừa tạo file ZIP nhưng chẳng may bạn quên mất không thêm mật khẩu bảo vệ. Trong trường hợp này bạn có thể dễ dàng thêm mật khẩu cho file ZIP bằng cách sử dụng lệnh zipcloak + tên file ZIP trong dòng lệnh. Lúc này bạn sẽ được yêu cầu nhập mật khẩu 2 lần để xác minh.

zipcloak source_code.zip

 

5. Sử dụng lệnh zipdetails để xem chi tiết file ZIP

Lệnh zipdetails sẽ hiển thị các thông tin liên quan đến file ZIP:

zipdetails source_code.zip | less

Lưu ý các thông tin này bao gồm tên file ngay cả khi file ZIP được bảo vệ bằng mật khẩu. Loại thông tin này được lưu trữ trong file ZIP dưới dạng siêu dữ liệu (meta-data) và không phải là một phần của dữ liệu được mã hóa.

 

6. Sử dụng lệnh zipgrep để tìm kiếm bên trong file ZIP

Lệnh zipgrep cũng cho phép bạn tìm kiếm bên trong file ZIP. Trong ví dụ dưới đây, giả sử nếu muốn tìm kiếm file có chuỗi "keyval.h" trong file ZIP, bạn sử dụng lệnh dưới đây:

zipgrep keyval.h source_code.zip

Như bạn có thể thấy các file slang.c và getval.c có chứa chuỗi "keyval.h". Ngoài ra còn có 2 bản sao của mỗi file rong mỗi thư mục khác nhau trong file ZIP.

 

7. Sử dụng lệnh zipinfo để xem thông tin file ZIP

Ngoài lệnh zipgrep, lệnh zipinfo cũng cho phép người dùng xem nội dung bên trong file nén ZIP.

zipinfo source_code.zip | less

Từ trái sang phải, đầu ra hiển thị:

- Các quyền của file.

- Phiên bản công cụ được sử dụng để tạo tệp ZIP.

- Kích thước file gốc.

- File descriptor.

- Phương pháp nén (giảm phát, trong trường hợp này).

- Dữ liệu và time stamp.

- Tên của file và thư mục.

File descriptor được tạo bởi 2 ký tự. Ký tự đầu tiên là "t" hoặc "b"để chỉ đó là file văn bản hoặc file nhị phân. Nếu ký tự là chữ in hóa, file sẽ được mã hóa. Ký tự thứ 2 có thể là một trong bốn ký tự dưới đây. Các ký tự này đại diện cho các loại siêu dữ liệu được bao gồm trong file: none, extended local header, extra field, hoặc cả 2.

-: Nếu không tồn tại, ký tự sẽ là dấu gạch nối

l: Nếu có extended local header không có extra field.

x: Nếu không có extended local header có extra field.

X: Nếu có extended local header và extra field.

 

8. Sử dụng lệnh zipsplit để chia file ZIP thành các file nhỏ hơn

Trường hợp nếu cần gửi file nén ZIP cho người dùng nào đó nhưng kích thước giới hạn hoặc sự cố xảy ra trong quá trình gửi file, bạn có thể sử dụng lệnh zipsplit để chia tệp ZIP gốc thành các file ZIP kích thước nhỏ hơn.

Tùy chọn -n (size) cho phép thiết lập kích thước tối đa cho mỗi file ZIP mới. Trong ví dụ này Taimienphi.vn sẽ chia nhỏ file có tên source_code.zip thành các file ZIP mới có kích thước dưới 100KB (102400 byte).

zipsplit -n 102400 source_code.zip

Kích thước mà bạn lựa chọn không thể nhỏ hơn kích thước của file bất kỳ trong file ZIP.

Bài viết trên đây Taimienphi. vn vừa hướng dẫn bạn cách nén và giải nén file ZIP trên Terminal Linux. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết đã có trên Taimienphi.vn để tìm hiểu cách tạo file ZIP trong Mac OS X đơn giản nhé.

File ZIP là các file nén được sử dụng phổ biến trên các nền tảng Windows và macOS, thậm chí là cả Linux. Để tạo và giải nén file ZIP trên Linux, chúng ta có thể sử dụng các lệnh Linux Terminal phổ biến, tham khảo tiếp bài viết dưới đây của Taimienphi.vn để tìm hiểu cách nén và giải nén file ZIP trên Terminal Linux nhé.
Cách nén và giải nén file bằng WinRAR trên máy tính
Nén và giải nén dữ liệu sang file RAR, ZIP trên máy tính bằng WinZip
Cách giải nén file RAR trên Linux hoặc Unix
Tổng hợp lỗi khi giải nén file bằng WinRAR
So sánh WinRAR và 7-Zip
Cách chặn WinRAR mở file JAR trên PC

ĐỌC NHIỀU