Trong số các định dạng nén phổ biến, ZIP nổi bật với khả năng tương thích cao trên nhiều hệ điều hành, đặc biệt là Windows và Linux. Với sự hỗ trợ của Zip và Unzip, bạn có thể dễ dàng nén và giải nén đa dạng file, từ văn bản, hình ảnh đến video, phần mềm,… Cùng Vietnix khám phá cách cài đặt Zip và Unzip trên Linux để nén và giải nén file thông qua Terminal.
Cách cài đặt và tạo file Zip trên Linux
Cài đặt file Zip cho các bản phân phối của Linux
Linux và các hệ điều hành dựa trên Unix khác như macOS đều có hỗ trợ những công cụ để người dùng tạo và giải nén file Zip, gọi là zip
và unzip
. Bên cạnh đó còn có nhiều tiện ích liên quan khác như zipcloak
, zipdetails
, zipslit
hay zipinfo
.
Mọi tiện ích này đều có trong Ubuntu 19.04, 18.10 và 18.04, Manjora 18.04 cũng tương tự. Mặt khác, Fedora và CentOS lại mới chỉ hỗ trợ zip
và unzip
.
- Để cài đặt các phần tử còn thiếu trên Fedora 29, hãy sử dụng lệnh sau:
sudo dnf install perl-IO-Compress
- Tương tự đối với CentOS 7:
sudo yum install perl-IO-Compress
Đối với những bản phân phối Linux khác, bạn có thể sử dụng công cụ quản lý package để cài đặt zip
và unzip
trên Linux cho bản phân phối đó.
Tạo file Zip trên Linux
Bây giờ để tạo file Zip, bạn có thể dùng lệnh zip
rồi chỉ định tên file lưu trữ và các file thành phần.
zip source_code *.c *.h
Các file được thêm sẽ hiển thị ở trên Terminal, cung cấp các thông tin liên quan đến tên file và tiến độ thực hiện lưu trữ.
- Để kiểm tra file Zip mới, bạn có thể thấy phần mở rộng
.zip
đã được tự động thêm:
ls -l source_code.zip
- Nếu không muốn xem output khi tạo file từ lệnh
zip
thì bạn cũng có thể thêmoption -q
(quiet) như sau:
zip -q source_code *.c *.h
Thêm thư mục vào file ZIP
Để thêm thư mục con vào file Zip, bạn có thể thêm option -r
(recursive) rồi kèm theo tên của thư mục con vào câu lệnh. Ví dụ như bạn cần tạo một file ZIP như ở trên rồi thêm vào folder con:
zip -r -q source_code archive/ *.c *.h
Việc lưu trữ tất cả file trong một thư mục khi zip sẽ giúp việc giải nén được gọn gàng hơn. Trong lệnh dưới đây, ta sẽ nén thư mục work và mọi thư mục con trong đó (lưu ý rằng lệnh này được gọi từ thư mục cha của work):
zip -r -q source_code work/
Thiết lập mức độ nén file
Lệnh zip
cho phép người dùng chỉ định mức độ nén file, ở mức từ 0 đến 9, trong đó 0 nghĩa là không nén. Mức độ càng cao thì thời gian tạo file ZIP càng lâu. Đối với các file ZIP có kích thước nhỏ thì thời gian chênh lệch không quá đáng kể, mức nén thường được dùng là level 0 cho những file này.
- Để chỉ định mức độ nén file, truyền tham số vào lệnh trong command line, viết sau dấu “-” như sau:
zip -0 -r -q source_code work/
- Mức độ nén mặc định là 6 nên nếu dùng level 6 thì bạn không cần phải chỉ định rõ:
zip -r -q source_code work/
- Mức độ nén tối đa là 9:
zip -9 -r -q source_code work/
Trong ví dụ trên, nén file ở mức độ 0 và 6 chênh lệch nhau 400K, trong khi đó chênh lệch giữa mức 6 và 9 chỉ là 4K. Nghe thì có vẻ không đáng kể, nhưng đối với những file có kích thước lớn thì sẽ ảnh hưởng rất nhiều đến thời gian và kích thước file zip tạo được.
Thêm mật khẩu cho file ZIP
Việc thêm mật khẩu cho ZIP trên Linux rất đơn giản, bạn chỉ cần thêm option -e
(encrypt) rồi nhập mật khẩu, sau đó xác thực lại lần nữa để hoàn tất:
zip -e -r -9 zipfile.zip ~/Desktop/
Cách Unzip trên Linux
Để giải nén file từ một file ZIP, bạn dùng lệnh unzip
trên Linux như sau:
unzip zipfile.zip
Kết quả khi giải nén:
File ZIP không chứa thông tin về quyền sở hữu, tất cả các file được giải nén đều xem chủ sở hữu là người dùng đang giải nén file. Tương tự như zip
, lệnh unzip
cũng có option -q
(quiet) để ẩn danh sách file khi đang giải nén:
unzip -q source_code.zip
Giải nén file vào một thư mục
Để Unzip trên Linux vào một thư mục nhất định, bạn thêm option -d
(directory) rồi trích đường dẫn đến thư mục như sau:
unzip -q source_code.zip -d ./development
Giải nén file có mật khẩu
Nếu file được nén kèm theo mật khẩu thì lệnh unzip sẽ tự yêu cầu người dùng cung cấp mật khẩu để giải nén: Nếu bạn muốn hiển thị mật khẩu khi nhập thì bạn có thể nhập lệnh trong command-line bằng option -P
(password):
unzip -P fifty.treacle.cutlass -q source_code.zip
Loại file khỏi danh sách cần nén
Bạn không muốn giải nén một hoặc một nhóm file nhất định thì có thể dùng option -x
(exclude). Giả sử bạn cần giải nén tất cả các file, trừ những file có phần mở rộng là “.h
“:
unzip -q zipfile.zip -x *.h
Ghi đè file
Ví dụ bạn có một file lưu trữ đã được giải nén, nhưng lại chẳng may xoá mất một vài file trong đó. Cách giải quyết đơn giản nhất chính là extract lại file lưu trữ một lần nữa, nhưng nếu giải nén trong cùng một thư mục với file cũ thì lệnh unzip
sẽ hỏi bạn có muốn ghi đè file không.
Khi đó, bạn có thể phản hồi theo danh sách sau (có phân biệt chữ hoa và chữ thường):
- y: Yes – Ghi đè file.
- n: No – Không thực hiện ghi đè file.
- A: All – Ghi đè tất cả file.
- N: None – Không ghi đè file nào.
- r: Rename – Đổi sang tên mới, yêu cầu người dùng nhập tên mới cho file.
Để buộc unzip phải ghi đè các file hiện có, bạn có thể sử dụng option -o (overwrite) như sau:
unzip -o -q zipfile.zip
Cách hiệu quả nhất để thay thế những file bị mất là sử dụng unzip, chỉ giải nén những file có trong file lưu trữ, nhưng không có trong thư mục đích. Cụ thể, bạn dùng option -n
(never overwrite) như sau:
unzip -n source_code.zip
Kiểm tra file ZIP
Bạn nên kiểm tra danh sách các file có trong ZIP trước khi bắt đầu giải nén. Lệnh unzip
trên Linux hỗ trợ tính năng này bằng option -l
(list archive), được pipe với less để quản lý output của lệnh:
unzip -l source_code.zip | less
Sau đó kết quả sẽ trả về danh sách các thư mục và file có trong file Zip, kích thước và thời gian được thêm vào zip. Để thoát khỏi lệnh less
, bạn có thể nhấn nút q.
Thêm mật khẩu bằng lệnh zipcloak
Nếu đã tạo file ZIP xong nhưng bạn lại quên đặt mật khẩu thì bạn vẫn có thể thiết lập thêm mật khẩu cho file bằng lệnh zipcloak
. Truyền tên của file ZIP vào lệnh trong command line, nhập mật khẩu và xác thực lại lần thứ hai để hoàn tất:
zipcloak zipfile.zip
Kiểm tra thông tin chi tiết bằng lệnh zipdetails
Lệnh zipdetails hiển thị rất nhiều thông tin chi tiết cho file ZIP, ngoài ra ta có thể kiểm tra output của lệnh này bằng cách pipe với less
như sau:
zipdetails source_code.zip | less
Tìm kiếm bên trong file bằng lệnh zipgrep
Lệnh zipgrep cho phép tìm kiếm bên trong file trong một file ZIP. Ví dụ bạn cần tìm các file bên trong file ZIP có cụm từ “keyval.h” bên trong:
zipgrep keyval.h source_code.zip
Có thể thấy rằng slang.c
và getval.c
là hai file có chứa chuỗi “keyval.h” ở trong nó. Ngoài ra còn có hai bản copy ở trong những thư mục khác của file ZIP.
Xem thông tin bằng lệnh zipinfo
Lệnh zipinfo
cũng cho phép người dùng kiểm tra thông tin bên trong một file ZIP. Tương tự, ta cũng có thể pipe nó với lệnh less như sau:
zipinfo source_code.zip | less
Thông tin của output, theo thứ tự từ trái sang phải như sau:
- Quyền truy cập file.
- Phiên bản công cụ dùng để tạo file ZIP.
- Kích thước file ban đầu.
- Mô tả file.
- Phương pháp nén.
- Dấu thời gian.
- Tên file và các thư mục.
Trong đó, mô tả của file bao gồm hai ký tự, ký tự ban đầu có thể là “t” hoặc “b” để chỉ file ở dạng text hay binary. Các ký tự in hoa cho biết rằng file đã được mã hoá. Ký tự thứ hai mô tả loại meta data có trong file:
- l: nếu có local header được mở rộng, nhưng không có extra field.
- x: không có local header được mở rộng, có extra field.
- X: có cả local header được mở rộng và extra field.
- –: không có cả hai.
Tách file bằng lệnh zipslit
Nếu bạn cần gửi file ZIP đến một người dùng nào đó nhưng bị giới hạn kích thước thì ta có thể chia nhỏ thành nhiều file bằng lệnh zipslit
. Lệnh này cung cấp option -n
(size) để đặt kích thước tối đa cho từng file ZIP mới.
Trong ví dụ dưới đây, Vietnix đã chia file zipfile.zip
, kích thước tối đa của mỗi file con là 100 KB (tức 102400 byte) như sau:
zipsplit -n 100000 zipfile.zip
Lời kết
Trong bài viết này, Vietnix đã chia sẻ với bạn các lệnh thường được sử dụng phổ biến khi cần tạo file Zip hay Unzip trên Linux thông qua Terminal giúp bạn có thể dễ dạng nén, giải nén file và kiểm tra file dễ dàng hơn trên Linux.