it-swarm-vi.com

Làm cách nào để Zip / giải nén trên dòng lệnh unix?

Làm cách nào tôi có thể tạo và trích xuất kho lưu trữ Zip từ dòng lệnh?

570
joachim

Thông thường, người ta sử dụng tar để tạo một kho lưu trữ không nén và gzip hoặc bzip2 Để nén kho lưu trữ đó. Các lệnh gunzipbunzip2 Tương ứng có thể được sử dụng để giải nén tệp lưu trữ đã nói hoặc bạn chỉ có thể sử dụng cờ trên lệnh tar để thực hiện giải nén.

Nếu bạn đang đề cập cụ thể đến định dạng tệp Zip , bạn chỉ cần sử dụng các lệnh Zipunzip.

Để nén:

Zip squash.Zip file1 file2 file3

hoặc để Zip một thư mục

Zip -r squash.Zip dir1

Để giải nén:

unzip squash.Zip

điều này giải nén nó trong thư mục làm việc hiện tại của bạn.

698
Justin Ethier

Có rất nhiều rất nhiề số cách khác nhau để nén và giải nén theo các dẫn xuất UNIX, vì vậy tôi sẽ giả sử bạn có nghĩa là "Zip" theo nghĩa chung chứ không phải là cụ thể định dạng tập tin.

Bạn có thể nén các tệp Zip (ở định dạng nén) với chương trình GNU tar:

tar -zcvf myfile.tgz .

mà sẽ làm thư mục hiện tại. Thay thế . với các tên tệp khác nếu bạn muốn một cái gì đó khác.

Để giải nén tập tin đó, sử dụng:

tar -zxvf myfile.tgz

Tất nhiên, điều đó giả sử rằng bạn có tar có khả năng thực hiện việc nén cũng như kết hợp các tệp thành một.

Nếu không, bạn chỉ có thể sử dụng tar cvf theo sau là gzip (một lần nữa, nếu có) để nén và gunzip theo sau là tar xvf.


Để xử lý cụ thể các tệp định dạng Zip, tôi khuyên bạn nên tải xuống 7Zip và sử dụng điều đó - nó nhận ra một rất lớn nhiều định dạng tệp, bao gồm cả Zip.

68
user14408

Nếu bạn chưa cài đặt các gói Zip và giải nén và bạn có Java, bạn có thể sử dụng jar để giải nén:

jar -xf file.Zip
33
mlocke

Chà, khi nói đến việc phân phối tệp cho nhiều hệ điều hành, tôi khuyên bạn nên 7-Zip .

Thông thường trong gói p7Zip, bạn sẽ nhận được 7z7za lệnh mà bạn có thể tạo tài liệu lưu trữ 7z của riêng mình.

7za cũng có thể giải nén tiêu chuẩn ( pkzip ) Lưu trữ Zip (và tạo chúng cùng với -tzip công tắc điện).

Nén:

7za a archive.7z file1 file2 directory/

Giải nén:

7za x archive.7z

Nó cũng có thể tạo tài liệu lưu trữ tự giải nén với -sfx công tắc điện:

7za a -sfx archive.exe files1 file2 dir

Tôi khuyên dùng phương pháp này trong trường hợp người dùng Windows không thể mở kho lưu trữ 7z (trong trường hợp bạn muốn tư vấn một công cụ cho việc đó: PeaZip ).

Nếu bạn muốn sử dụng cùng một thuật toán nén với tarball của mình, hãy sử dụng -J chuyển đổi với tar:

tar cJf archive.tar.xz file1 file2 dir

xz là một công cụ UNIX, sử dụng LZMA2 để nén, nhưng hoạt động theo cách gz, bz2, vv hoạt động. Nó thậm chí hoạt động như một bộ lọc.

7z không tạo tài liệu lưu trữ với thông tin hệ thống tệp đầy đủ trên UNIX, vì vậy bạn cần sử dụng tar trước khi sử dụng 7z (nhưng vì 7z lưu trữ thông tin khác về tệp tar, tôi khuyên bạn nên sử dụng xz, vì nó được thiết kế cho nó):

tar cf - file1 file2 dir | 7za z -si archive.tar.7z
30
polemon
unzip <filename>

Zip -r archive.Zip <filename> [filename]

Bạn sẽ cần đảm bảo các lệnh này được cài đặt thông qua trình quản lý gói của bạn. Không khó hơn sử dụng bất cứ thứ gì khác trên dòng lệnh. Nó chắc chắn đơn giản hơn việc tạo tài liệu lưu trữ bằng tar.

23
Starfish

BSD Tar cũng có thể làm điều này

bsdtar -a -c -f sunday.Zip sunday.jpg

Hoặc là:

bsdtar -x -f sunday.Zip
4
Steven Penny

Câu trả lời chuẩn nhất là pax , được đề xuất hơn cpiotar .

Không giống như cpio và POSIX tar, nhưng giống như GNU tar, pax có thể lưu trữ cả tệp và nén lưu trữ. Hành vi này khác với Zip , nén từng tệp trước khi đưa vào tệp lưu trữ.

3
mouviciel

Điều này chỉ bao gồm khai thác.

Vì thế, tôi đã bắt đầu sử dụng dtrx .

Toàn bộ điểm của nó là để loại bỏ sự phức tạp. Vì vậy, bạn chỉ cần chuyển vào bất kỳ kho lưu trữ nào cho nó và nó chỉ ra những gì cần phải được thực hiện với nó. Zip, tar, gz ... Sử dụng luôn giống nhau - dtrx archive.Zip. Nó hỏi một vài câu hỏi và bạn đã hoàn thành.

dtrx có sẵn trong hầu hết các kho lưu trữ, vì vậy bạn có thể apt | yum cài đặt nó.

2
JackLeo

Tôi thường thấy mình đang cố gắng Zip các tệp đã sửa đổi trong thư mục công việc của mình - để sao chép tất cả các tệp đã sửa đổi vào thư mục công việc của hộp cát khác hoặc để bảo quản chúng trong một thời gian ngắn vì tôi muốn hoàn tác một số thay đổi.

Trong trường hợp đó, tôi sao chép danh sách các tệp đã sửa đổi vào một tệp tạm thời và sử dụng Zip với tùy chọn [email protected].

Giả sử tôi đã sửa đổi các tệp Foo.h, Bar.cc và TestBar.cc.

Giả sử tôi tạo một tệp có tên là Sửa đổi-files.txt có nội dung là:

Foo.h
Bar.cc
TestBar.cc

Tôi thực hiện lệnh sau để Zip các tệp đó:

cat modified-files.txt | Zip modified-files.Zip [email protected]
1
R Sahu