Sự khác biệt với tất cả các loại tài liệu lưu trữ .tar khác nhau là gì?


16

Bất cứ ai có thể cho tôi biết những gì đang có rất nhiều tài liệu lưu trữ, và chúng khác nhau như thế nào?

Có ít nhất là năm mà tôi có thể nghĩ ra, .tar.tz, .tar.gz, .tar.bz2, .tar.lz,.tar.z

Cái nào là tốt nhất cho những ứng dụng nào? Có vẻ thật ngớ ngẩn khi tạo ra quá nhiều biến thể của cùng một tệp nhưng tôi chắc chắn có lý do.

Câu trả lời:


18

Các .gz, .xz, .bz2, .7z, .lz, .zhậu tố được sử dụng để làm rõ rằng các tập tin được nén bằng thuật toán nén nói. Việc sử dụng nó không giới hạn ở .tarcác tệp, bạn cũng sẽ thấy các tệp như initrd.gz(một ramdisk ban đầu được nén) hoặc manual.txt.gz(đối với tài liệu văn bản nén). Bạn cũng có thể thấy file.tgzcái nào cũng chỉ ra một tarball được nén bằng gzip (như file.tar.gz).

Phần mở rộng tập tin là một quy ước, nó không nhất thiết phải mô tả nội dung tập tin. Để kiểm tra loại tệp bạn đang xử lý, sử dụng filelệnh. Thí dụ:

$ file data.tar.gz
data.tar.gz: gzip compressed data, from Unix
$ gunzip -c data.tar.gz | file -
/dev/stdin: POSIX tar archive (GNU)

Theo kinh nghiệm của tôi, các tệp nén gzip ( .gz) là những tệp phổ biến nhất. Nó rất nhanh trong việc nén và giải nén, mặc dù có những thuật toán khác mang lại tỷ lệ nén tốt hơn.


8

Ngoài câu trả lời @Lekensteyn, tôi muốn nói thêm rằng hành vi này dựa trên Làm một việc và thực hiện tốt triết lý - tarchương trình biết cách đặt nhiều tệp vào một luồng (có .tarphần mở rộng), gzipbiết cách nén tập tin duy nhất (thêm .gzphần mở rộng) *. Bằng cách kết hợp các công cụ đó, bạn có thể tạo một lệnh nén nhiều tệp thành một .tag.gztệp.

Cách tiếp cận này rất linh hoạt - bạn có thể kết hợp một vài lệnh Unix tiêu chuẩn để làm tất cả mọi thứ. Ví dụ: nếu bạn viết chương trình tốt hơn để nén các tệp bạn không cần sửa đổi tarđể cho phép nó tạo .tar.mymegaziptệp - thay vào đó, bạn chỉ cần tarđầu ra của đường ống đến máy nén của mình.

Tương tự, tarkhông biết gì về SSH, nhưng bằng cách kết hợp các lệnh, bạn có thể tạo một tập lệnh lưu trữ tệp, tải chúng lên một máy từ xa thông qua SSH và hủy lưu trữ chúng ở đó.

So sánh điều này với ziplệnh, vốn không bắt nguồn từ Unix - nó có các công cụ tích hợp để nén toàn bộ thư mục, mã hóa tệp, chia tệp lưu trữ thành các tệp zip nhỏ hơn, v.v.


(chú thích) - có, tarcó thể tự gzip hoặc bzip các tệp bằng cách sử dụng -z-jchuyển đổi, chúng được thêm vào để thuận tiện và GNU tar thực sự sinh sản gziphoặc bzip2là một quy trình mới.


Ví dụ: các lệnh tar c dir/ | gzip > dir.tar.gztar czf dir.tar.gz dir/lệnh làm điều tương tự. Một ví dụ tarđược kết hợp với SSH và tar(một lần nữa): tar cz Documents/ | ssh user@host 'tar xz(tương đương rsync sẽ là rsync -a Documents user@host::)
Lekensteyn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.