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

0

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à zipunzip. Nhưng có một loạt các tiện ích liên quan như zipcloak, zipdetails, zipsplitzipinfo.

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 zipunzip, 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

lệnh cài đặt zip cho Fedora

Để 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

Zip cài đặt lệnh trong Centos

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

lệnh zip trong cửa sổ dòng lệnh

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ị.

xuất từ ​​lệnh zip trong cửa sổ dòng lệnh

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

ls trên kho lưu trữ zip trong cửa sổ dòng lệnh

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

-q tùy chọn yên tĩnh trong cửa sổ thiết bị đầu cuối

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

-r tùy chọn đệ quy trong cửa sổ đầu cuối

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/

nén thư mục công việc trong cửa sổ đầu cuối

Đặ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/

-0 tùy chọn nén trong một cửa sổ đầu cuối

Mức nén mặc định là 6.

zip -r -q source_code work/

nén mức 6 trong một cửa sổ đầu cuối

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

zip -9 -r -q source_code work/

-9 nén trong một cửa sổ đầu cuối

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/

Thêm mật khẩu vào tệp nén trong cửa sổ dòng lệnh

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

lệnh giải nén trong cửa sổ dòng lệnh

Khi các tệp được giải nén, chúng được liệt kê trong cửa sổ đầu cuối.

đầu ra của giải nén trong một 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-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ùy chọn -q trong cửa sổ dòng lệnh

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 đến một thư mục đích trong cửa sổ dòng lệnh

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

giải nén bằng lệnh mật khẩu trong cửa sổ dòng lệnh

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

giải nén với tùy chọn mật khẩu trong cửa sổ dòng lệnh

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

giải nén tùy chọn loại trừ trong cửa sổ dòng lệnh

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.

ghi đè lời nhắc trong cửa sổ dòng lệnh

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

ghi đè tùy chọn trong cửa sổ dòng lệnh

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

giải nén với tùy chọn -n không bao giờ ghi đè trong cửa sổ đầu cuối

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

giải nén tùy chọn danh sách trong cửa sổ đầu cuối

Đầ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.

liệt kê đầu ra lưu trữ trong cửa sổ đầu cuối

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

zipcloak trong cửa sổ đầu cuối

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ệnh zipdetails trong cửa sổ dòng lệnh

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.

đầu ra của zipdetails trong cửa sổ đầu cuối

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

lệnh zipgrep trong cửa sổ dòng lệnh

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 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

lệnh zipinfo trong cửa sổ dòng lệnh

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

đầu ra zipinfo trong cửa sổ đầu cuối

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

lệnh zipsplit trong cửa sổ dòng lệnh

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é!

Leave a Reply

Your email address will not be published. Required fields are marked *