Tệp ZIP là một kho lưu trữ phổ biến thường được sử dụng trên hệ thống Windows, macOS và thậm chí cả Linux. Bạn có thể tạo một kho lưu trữ zip hoặc giải nén các tệp từ một tệp bằng một số lệnh terminal phổ biến của Linux.
Định dạng tệp lưu trữ nén ZIP
Mặc dù các tệp .tar.gz và tar.bz2 phổ biến trên Linux, người dùng Windows có thể sẽ gửi cho bạn một tệp lưu trữ ở định dạng ZIP. Và, nếu bạn muốn lưu trữ một số tệp và gửi chúng cho người dùng Windows, định dạng ZIP sẽ là giải pháp dễ dàng nhất, tương thích nhất cho mọi người.
zip, giải nén và các tiện ích khác
Bạn có thể đã biết rằng hệ điều hành giống Linux và Unix như macOS có các công cụ cho phép bạn tạo tệp ZIP và trích xuất tệp từ chúng, được gọi là zip
và unzip
. Nhưng có một loạt các tiện ích liên quan như zipcloak
, zipdetails
, zipsplit
và zipinfo
.
Chúng tôi đã kiểm tra một số bản Linux để xem liệu chúng có bao gồm các tiện ích này trong cài đặt tiêu chuẩn hay không. Tất cả các tiện ích đều có trong Ubuntu 19.04, 18.10 và 18.04. Họ cũng có mặt trong Manjaro 18.04. Fedora 29 bao gồm zip
và unzip
, nhưng không có tiện ích nào khác và đó cũng là trường hợp của CentOS.
Để cài đặt các phần tử bị thiếu trên Fedora 29, hãy sử dụng lệnh sau:
sudo dnf install perl-IO-Compress
Để cài đặt các phần tử bị thiếu trên CentOS 7, hãy sử dụng lệnh sau:
sudo yum install perl-IO-Compress
Nếu bất kỳ tiện ích zip nào bị thiếu trong bản Linux không được đề cập ở trên, hãy sử dụng công cụ quản lý gói của bản Linux đó để cài đặt gói được yêu cầu.
Cách tạo tệp ZIP bằng lệnh zip
Để tạo tệp ZIP, bạn cần nói zip
tên của tệp lưu trữ và những tệp nào sẽ bao gồm trong đó. Bạn không cần phải thêm phần mở rộng “.zip” vào tên kho lưu trữ, nhưng nó không có hại gì nếu bạn làm vậy.
Để tạo một tệp có tên source_code.zip
chứa tất cả các tệp mã nguồn C và tệp tiêu đề trong thư mục hiện tại, bạn sẽ sử dụng lệnh này:
zip source_code *.c *.h
Mỗi tệp được liệt kê khi nó được thêm vào. Tên của tệp và số lượng nén đã đạt được trên tệp đó được hiển thị.
Nếu bạn nhìn vào kho lưu trữ ZIP mới, bạn có thể thấy rằng phần mở rộng tệp “.zip” đã được thêm tự động bởi zip
.
ls -l source_code.zip
Nếu bạn không muốn xem kết quả từ zip
khi tệp ZIP được tạo, hãy sử dụng -q
(yên tĩnh) tùy chọn.
zip -q source_code *.c *.h
Bao gồm các thư mục trong tệp ZIP
Để bao gồm các thư mục con trong tệp ZIP, hãy sử dụng -r
(recursive) và bao gồm tên của thư mục con trên dòng lệnh. Để tạo tệp ZIP như trước và cũng bao gồm thư mục con lưu trữ, hãy sử dụng lệnh này.
zip -r -q source_code archive/ *.c *.h
Trong lệnh sau, chúng tôi sẽ lưu trữ thư mục work
và tất cả các thư mục con. Lưu ý rằng lệnh này được đưa ra từ thư mục mẹ sau đó tới thư mục work
.
zip -r -q source_code work/
Đặt mức độ nén
Bạn có thể đặt mức độ nén được áp dụng cho các tệp khi chúng được thêm vào kho lưu trữ ZIP. Phạm vi là từ 0 đến 9, với 0 là không nén. Nén càng cao, thời gian tạo tệp ZIP càng lâu.
Để có được zip
để sử dụng mức độ nén cụ thể, hãy chuyển số dưới dạng tùy chọn trên dòng lệnh, với dấu “-“, như sau:
zip -0 -r -q source_code work/
Mức nén mặc định là 6.
zip -r -q source_code work/
Mức nén tối đa là mức 9.
zip -9 -r -q source_code work/
Với việc lựa chọn tệp và thư mục được lưu trữ ở đây, sự khác biệt giữa không nén (mức 0) và nén mặc định (mức 6) là 400K. Sự khác biệt giữa mức nén mặc định và mức nén cao nhất (mức 9) chỉ là 4K.
Điều đó có vẻ không nhiều, nhưng đối với các kho lưu trữ chứa hàng trăm hoặc thậm chí hàng nghìn tệp, số lượng nén bổ sung nhỏ trên mỗi tệp sẽ tiết kiệm không gian đáng kể.
Thêm mật khẩu vào tệp ZIP
Thêm mật khẩu vào tệp ZIP rất dễ dàng. Sử dụng -e
(encrypt) và bạn sẽ được nhắc nhập mật khẩu của mình và nhập lại để xác minh.
zip -e -r -q source_code work/
Cách giải nén tệp ZIP bằng lệnh giải nén
Để giải nén các tệp từ tệp ZIP, hãy sử dụng lệnh giải nén và cung cấp tên của tệp ZIP. Lưu ý rằng bạn làm cần cung cấp phần mở rộng “.zip”.
unzip source_code.zip
Khi các tệp được giải nén, chúng được liệt kê trong cửa sổ đầu cuối.
Tệp ZIP không mang thông tin chi tiết về quyền sở hữu tệp. Tất cả các tệp được giải nén đều có chủ sở hữu được đặt thành người dùng đang giải nén chúng.
Giống như zip
, unzip
có -q
, để bạn không cần phải xem danh sách tệp khi tệp được giải nén.
unzip -q source_code.zip
Giải nén tệp vào thư mục đích
Để giải nén các tệp trong một thư mục cụ thể, hãy sử dụng -d
(thư mục) và cung cấp đường dẫn đến thư mục mà bạn muốn tệp lưu trữ được trích xuất vào.
unzip -q source_code.zip -d ./development
Giải nén tệp ZIP được bảo vệ bằng mật khẩu
Nếu tệp ZIP đã được tạo bằng mật khẩu, unzip
sẽ hỏi bạn mật khẩu. Nếu bạn không cung cấp mật khẩu chính xác, unzip
sẽ không giải nén các tập tin.
unzip -q source_code.zip
Nếu bạn không quan tâm đến việc mật khẩu của mình bị người khác nhìn thấy — cũng như về việc nó được lưu trữ trong lịch sử lệnh — bạn có thể cung cấp mật khẩu trên dòng lệnh với tùy chọn -P
. (Bạn phải viết hoa “P.”)
unzip -P fifty.treacle.cutlass -q source_code.zip
Loại trừ Tệp
Nếu bạn không muốn trích xuất một tệp hoặc nhóm tệp cụ thể, hãy sử dụng tùy chọn -x
. Trong ví dụ này, chúng tôi muốn trích xuất tất cả các tệp ngoại trừ những tệp có đuôi “.h”.
unzip -q source_code.zip -x *.h
Ghi đè tệp
Giả sử bạn đã giải nén một kho lưu trữ nhưng bạn đã xóa nhầm một vài tệp đã giải nén.
Một cách khắc phục nhanh chóng cho điều đó là giải nén các tệp một lần nữa. Nhưng nếu bạn cố gắng giải nén tệp ZIP trong cùng một thư mục như trước đây, unzip
sẽ nhắc bạn đưa ra quyết định về việc ghi đè lên các tệp.
Ngoài phản hồi r
, những phản hồi này phân biệt chữ hoa chữ thường.
- y: Ghi đè lên tệp này
- n: Đừng ghi đè lên tệp này
- A: Ghi đè lên tất cả các tệp
- N: Không ghi đè lên tệp nào
- r: Giải nén tệp này nhưng đặt tên mới. Bạn sẽ được nhắc nhập một tên mới.
Bắt buộc unzip
để ghi đè lên bất kỳ tệp hiện có nào, hãy sử dụng tùy chọn -o
(ghi đè) .
unzip -o -q source_code.zip
Cách hiệu quả nhất để thay thế các tệp bị thiếu là có unzip
chỉ trích xuất bất kỳ tệp nào trong kho lưu trữ không phải trong thư mục đích. Để làm điều này, hãy sử dụng tùy chọn -n
(không bao giờ ghi đè) .
unzip -n source_code.zip
Tìm kiếm bên trong tệp ZIP
Việc xem danh sách các tệp bên trong tệp ZIP trước khi giải nén thường rất hữu ích và mang tính hướng dẫn. Bạn có thể làm điều này với tùy chọn -l
(lưu trữ danh sách) . Nó được dẫn qua less
để quản lý đầu ra.
unzip -l source_code.zip | less
Đầu ra hiển thị các thư mục và tệp trong tệp ZIP, độ dài của chúng cũng như ngày giờ chúng được thêm vào kho lưu trữ. Nhấn “q” để thoát khỏi less
.
Có nhiều cách khác để xem bên trong tệp ZIP cung cấp các loại thông tin khác nhau, như chúng ta sẽ thấy.
Thêm mật khẩu bằng lệnh zipcloak
Nếu bạn đã tạo tệp ZIP nhưng quên thêm mật khẩu, bạn có thể làm gì? Bạn có thể nhanh chóng thêm mật khẩu vào tệp ZIP bằng cách sử dụng command zipcloak
. Chuyển tên của tệp ZIP trên command line. Bạn sẽ được nhắc nhập mật khẩu. Bạn cần xác minh mật khẩu bằng cách nhập mật khẩu lần thứ hai.
zipcloak source_code.zip
Xem chi tiết tệp bằng lệnh zipdetails
Các lệnh zipdetails
sẽ hiển thị cho bạn một nhiều thông tin liên quan đến tệp ZIP. Cách hợp lý duy nhất để xử lý lượng đầu ra mà lệnh này có thể cung cấp là chuyển nó qua less
.
zipdetails source_code.zip | less
Lưu ý rằng thông tin sẽ bao gồm tên tệp ngay cả khi tệp ZIP được bảo vệ bằng mật khẩu. Loại thông tin này được lưu trữ trong tệp ZIP dưới dạng siêu dữ liệu và không phải là một phần của dữ liệu được mã hóa.
Tìm kiếm bên trong tệp bằng lệnh zipgrep
Các lệnh zipgrep
cho phép bạn tìm kiếm trong các tập tin trong một tệp ZIP. Trong ví dụ sau, chúng tôi muốn biết tệp nào trong tệp ZIP có văn bản “keyval.h” trong đó.
zipgrep keyval.h source_code.zip
Chúng ta có thể thấy rằng các tệp slang.c
và getval.c
chứa chuỗi “keyval.h”. Chúng ta cũng có thể thấy rằng có hai bản sao của mỗi tệp này trong các thư mục khác nhau trong tệp ZIP.
Xem thông tin bằng lệnh zipinfo
Các lệnh zipinfo
cung cấp cho bạn một cách khác để xem bên trong tệp ZIP. Như trước đây, chúng tôi chuyển đầu ra thông qua less
.
zipinfo source_code.zip | less
Từ trái sang phải, kết quả hiển thị:
- Quyền đối với tệp
- Phiên bản của công cụ được sử dụng để tạo tệp ZIP
- Kích thước tệp gốc
- Một bộ mô tả tệp
- Phương pháp nén
- Dữ liệu và dấu thời gian
- Tên của tệp và bất kỳ thư mục nào
Bộ mô tả tệp được tạo thành từ hai ký tự. Ký tự đầu tiên sẽ là “t” hoặc “b” để biểu thị tệp văn bản hoặc tệp nhị phân. Nếu đó là một chữ cái viết hoa, tệp sẽ được mã hóa. Ký tự thứ hai có thể là một trong bốn ký tự. Ký tự này đại diện cho loại siêu dữ liệu nào được bao gồm cho tệp này: không có, tiêu đề cục bộ mở rộng, “trường bổ sung” hoặc cả hai.
- -: Nếu không tồn tại, ký tự sẽ là dấu gạch nối
- l: nếu có tiêu đề cục bộ mở rộng nhưng không có trường bổ sung
- x: nếu không có tiêu đề cục bộ mở rộng nhưng có một trường bổ sung
- X: nếu có một tiêu đề cục bộ mở rộng và có thêm một trường
Tách tệp bằng lệnh zipsplit
Nếu bạn cần gửi tệp ZIP cho người khác nhưng có giới hạn kích thước hoặc sự cố với việc truyền tệp, bạn có thể sử dụng lệnh zipsplit
chia tệp ZIP gốc thành một tập hợp các tệp ZIP nhỏ hơn.
Các tùy chọn -n
(kích thước) cho phép bạn đặt kích thước tối đa cho mỗi tệp ZIP mới. Trong ví dụ này, chúng tôi đang tách source_code.zip
tập tin. Chúng tôi không muốn bất kỳ tệp ZIP mới nào lớn hơn 100 KB (102400 byte).
zipsplit -n 102400 source_code.zip
Kích thước bạn chọn không được nhỏ hơn kích thước của bất kỳ tệp nào trong tệp ZIP.
Bài viết này đã giải quyết được vấn đề của bạn chưa? Hãy để lại cảm nhận dưới comment để chúng tôi có thể giúp bạn giải quyết thêm thắc mắc nhé!