Cách giải nén hoặc giải nén tệp từ thiết bị đầu cuối Linux

Tệp ZIP là một kho lưu trữ phổ biến thường được sử dụng trên các 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 bằng một số lệnh đầu cuối phổ biến của Linux.

Định dạng tệp lưu trữ nén ZIP

Nhờ sự thống trị của định dạng ZIP trong lĩnh vực Windows, các tệp ZIP có lẽ là hình thức lưu trữ nén phổ biến nhất trên thế giới.

Mặc dù các tệp .tar.gz và tar.bz2 phổ biến trên Linux, nhưng 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 tất cả mọi người.

LIÊN QUAN:Cách giải nén tệp từ tệp .tar.gz hoặc .tar.bz2 trên Linux

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à zipgiải nén. 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 phân phối Linux để xem liệu chúng có đưa các tiện ích này vào 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 zipgiải nén, 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 cài đặt 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 cài đặt perl-IO-Compress

Nếu thiếu bất kỳ tiện ích zip nào trong bản phân phối 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 phân phối 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 thêm phần mở rộng “.zip” vào tên tệp lưu trữ, nhưng điều đó 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 (đệ quy) tùy chọn 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 đây 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

Để lưu ý đến người sẽ giải nén các tệp từ tệp ZIP mà bạn đang tạo, việc tạo tệp ZIP với các tệp bên trong nó được chứa trong một thư mục thường là lịch sự. Khi người nhận tệp ZIP giải nén nó, tất cả các tệp được đặt ngay ngắn trong một thư mục trên máy tính của họ.

Trong lệnh sau, chúng tôi sẽ lưu trữ công việc thư mục 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 đó công việc thư mục.

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 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. Đối với các tệp ZIP có kích thước khiêm tốn, chênh lệch thời gian không phải là một hình phạt đáng kể. Nhưng sau đó, đối với các tệp ZIP có kích thước khiêm tốn, nén mặc định (mức 6) có lẽ là đủ tốt.

Để có được zip để sử dụng một mức độ nén cụ thể, hãy chuyển số dưới dạng một 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. Không cần cung cấp -6 tùy chọn, nhưng nó sẽ không có hại nếu bạn làm vậy.

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 đang đượ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ỏ cho 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 (mã hóa) 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”.

giải nén source_code.zip

Khi các tệp được giải nén, chúng sẽ đượ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, giải nén có một -q (yên tĩnh), do đó bạn không cần phải xem danh sách tệp khi tệp được giải nén.

giải nén -q source_code.zip

Giải nén các tập tin vào một 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.

giải nén -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, giải nén sẽ yêu cầu bạn nhập mật khẩu. Nếu bạn không cung cấp mật khẩu chính xác,giải nén sẽ không giải nén các tập tin.

giải nén -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 mật khẩu đó đượ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 -P (mật khẩu) tùy chọn. (Bạn phải sử dụng chữ viết hoa “P.”)

giải nén -P năm mươi.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 một nhóm tệp cụ thể, hãy sử dụng -x (loại trừ) tùy chọn. 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 kết thúc bằng đuôi “.h”.

giải nén -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, giải nén sẽ nhắc bạn đưa ra quyết định liên quan đến việc ghi đè lên các tệp. Nó sẽ mong đợi một trong những phản hồi sau đây.

Ngoài r (đổi tên) phản hồi, những phản hồi này phân biệt chữ hoa chữ thường.

  • y: Có, ghi đè lên tệp này
  • n: Không, đừng ghi đè lên tệp này
  • A: Tất cả, ghi đè lên tất cả các tệp
  • N: Không có, không ghi đè lên tệp nào
  • r: Đổi tên, 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.

Ép buộc giải nén để ghi đè lên bất kỳ tệp hiện có nào, hãy sử dụng -o (ghi đè) tùy chọn.

giải nén -o -q source_code.zip

Cách hiệu quả nhất để thay thế các tệp bị thiếu là có giải nén 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 -n (không bao giờ ghi đè) tùy chọn.

giải nén -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 bạn 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 -l (danh sách lưu trữ) tùy chọn. Nó được dẫn qua ít hơn để quản lý đầu ra.

giải nén -l source_code.zip | ít hơn

Đầu ra hiển thị các thư mục và tệp trong tệp ZIP, độ dài của chúng và ngày giờ chúng được thêm vào kho lưu trữ. Nhấn “q” để thoát khỏi ít hơn.

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 zipcloak chỉ huy. Chuyển tên của tệp ZIP trên dòng lệnh. 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 zipdetails lệnh 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 ít hơn .

zipdetails source_code.zip | ít hơn

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 zipgrep lệnh 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.cgetval.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 zipinfo lệnh 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 ít hơn.

zipinfo source_code.zip | ít hơn

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 (được mô tả bên dưới)
  • Phương pháp nén (giảm phát, trong trường hợp này)
  • 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ị một 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 cả hai đều không tồn tại, ký tự sẽ là một 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 zipsplit lệnh chia tệp ZIP gốc thành một tập hợp các tệp ZIP nhỏ hơn.

Các -n (kích thước) tùy chọn 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.

Sử dụng các lệnh này, bạn có thể tạo tệp ZIP của riêng mình, giải nén tệp ZIP bạn nhận được và thực hiện nhiều thao tác khác trên chúng mà không cần rời khỏi thiết bị đầu cuối Linux.