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?
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?
Câu trả lời:
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 gunzip
và bunzip2
lệnh 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ác cờ trên tar
lệnh để 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 zip
và unzip
.
Để nén:
zip squash.zip file1 file2 file3
hoặc để nén 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.
zip -r9 archive.zip files...
cú pháp (-r = đệ quy -9 = nén tối đa).
zip
có thể tạo ra nhiều hương vị khác nhau của tài liệu lưu trữ .ZIP, cũng như sử dụng nhiều máy nén khác nhau. Mặt khác, có một số công cụ nén khác có tên tương tự: 7-Zip, gzip, bzip2, rzip, v.v. không thể thay thế cho nhau.
cd dir1; zip -r ../squash.zip *
unzip -d myfolder squash.zip
để trích xuất vào một thư mục mới riêng ( myfolder
) thay vì đặt tất cả các tệp trực tiếp vào thư mục hiện tại, điều này có thể gây khó chịu nếu tệp zip chứa nhiều tệp và thư mục ở cấp cao nhất. Điều này bắt chước cách hầu hết các công cụ giải nén UI hoạt động.
Có một thực sự lớn số cách khác nhau để nén và giải nén dưới 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 chung chứ không phải là một cụ định dạng tập tin.
Bạn có thể nén các tệp lên (ở định dạng nén) bằng tar
chương trình GNU :
tar -zcvf myfile.tgz .
mà sẽ làm thư mục hiện tại. Thay thế .
bằng tên tập tin 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ả định rằng bạn có tar
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 gzip
(một lần nữa, nếu có) để nén và gunzip
theo sau 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 tệp đó - nó nhận ra rất nhiều định dạng tệp, bao gồm cả tệp ZIP.
tar jcvf file.tar.bz2...
để nén ở định dạng bzip2 hoặc tar Jcvf file.tar.xz ...
để nén xz.
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 dùng 7-zip .
Thông thường trong gói p7zip
, bạn sẽ nhận được lệnh 7z
và 7za
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 tài liệu lưu trữ zip tiêu chuẩn ( pkzip ) (và tạo chúng cũng bằng công -tzip
tắc).
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 bằng công -sfx
tắc:
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ở tài liệu 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 công -J
tắc với tar
:
tar cJf archive.tar.xz file1 file2 dir
xz
là một công cụ UNIX, có sử dụng LZMA2 cho nén, nhưng hoạt động đường 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ề tar
tệp, 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
atool
, đó là một công cụ nhỏ xinh giúp sử dụng nhiều máy nén khác nhau thoải mái hơn. Liên kết với a
và tạo một kho lưu trữ trở thành a arc.7z folder/
hoặc trích xuất một cách đơn giảna arc.7z
unzip <filename>
và
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.
BSD Tar cũng có thể làm điều này
bsdtar acf bravo.zip alfa.jpg
Hoặc là:
bsdtar xf bravo.zip
tar
có lợi ích là hỗ trợ khá nhiều định dạng nén bổ sung so với GNU tar
và các tar
s khác . Lợi ích lớn nhất là, có lẽ, nó làm như vậy trong khi sử dụng tar
cú pháp giống như . Bạn chắc chắn có thể sử dụng 7z
, unrar
, unzip
, vv từ dòng lệnh, nhưng họ sử dụng một khác nhau cú pháp.
Câu trả lời chuẩn nhất là pax
, được khuyến nghị hơn cpio
và tar
.
Không giống như cpio
và POSIX tar
, nhưng giống như GNU tar
, pax
có thể vừa lưu trữ tệp và nén tệp lưu trữ. Hành vi này khác với zip
, nén từng tệp trước khi đưa nó vào kho lưu trữ.
pax
hỗ trợ lưu trữ zip?
pax
tài liệu lưu trữ!
Đ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ó.
Tôi thường thấy mình đang cố gắng nén 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 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 -@
.
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 để nén các tệp đó:
cat modified-files.txt | zip modified-files.zip -@