Câu trả lời:
TAR tạo một tệp lưu trữ duy nhất trong số nhiều tệp, nhưng không nén chúng.
Một tập tin tar là sự kết hợp của một hoặc nhiều tập tin. Mỗi tệp được đi trước bởi một bản ghi tiêu đề 512 byte. Dữ liệu tệp được ghi không thay đổi ngoại trừ chiều dài của nó được làm tròn lên bội số 512 byte và không gian thừa được lấp đầy. Sự kết thúc của một kho lưu trữ được đánh dấu bằng ít nhất hai bản ghi không đầy liên tiếp.
GZIP nén một tệp duy nhất vào một tệp khác, nhưng không tạo tài liệu lưu trữ.
... Mặc dù định dạng tệp của nó cũng cho phép nhiều luồng như vậy được nối (các tệp nén được giải nén đơn giản như thể chúng là một tệp ban đầu), gzip thường được sử dụng để nén chỉ các tệp đơn lẻ. [4] Lưu trữ nén thường được tạo bằng cách tập hợp các tập hợp tệp vào một tệp lưu trữ tar duy nhất, sau đó nén tệp lưu trữ đó bằng gzip.
tar -xzvf tarball.tar.gz single/file.txt
. Đằng sau hậu trường, nó cần phải thực hiện một số công việc phụ nhưng để xuất hiện, nó trích xuất một tập tin duy nhất.
.tar.*
kho lưu trữ nén luôn luôn là solid solid, tức là. bao gồm một luồng nén duy nhất. Mặt khác, một .zip
kho lưu trữ không vững chắc, thuật toán nén được bắt đầu lại cho mỗi tệp. Nó hy sinh hiệu quả nén để tăng tốc truy cập ngẫu nhiên. .7z
tài liệu lưu trữ có thể là rắn, không rắn hoặc để có khối rắn.
Gzip / Bzip2 là máy nén dòng. Họ nén một luồng dữ liệu vào một cái gì đó nhỏ hơn. Chúng có thể được sử dụng trên các tệp riêng lẻ, nhưng không phải trên các nhóm tệp riêng.
Mặt khác, Tar có khả năng biến một danh sách các tệp, với các đường dẫn, quyền và thông tin quyền sở hữu, thành một luồng liên tục duy nhất - và ngược lại.
Đó là lý do tại sao, để lưu trữ các tệp (và nếu ai cũng cần nén), người ta thường sử dụng phương pháp nén tar +.
Tar chịu trách nhiệm thực hiện một và chỉ một điều tốt: (un) lưu trữ vào (ngoài) một tệp lưu trữ duy nhất. Của cái gì? Của một và chỉ một điều: một tập hợp các tập tin.
Gzip chịu trách nhiệm thực hiện một và chỉ một điều tốt: (un) nén. Của cái gì? Một điều và một điều duy nhất: một tệp duy nhất thuộc bất kỳ loại nào ... và bao gồm một tệp được tạo bằng tar.
Nó quay trở lại triết lý UNIX về đường ống, kiến trúc "đường ống và bộ lọc" cơ bản; việc xử lý tất cả mọi thứ như một tập tin và mục tiêu kiến trúc âm thanh của "một việc làm một việc duy nhất và duy nhất" (kết quả là một kiểu cắm rất đơn giản và thanh lịch .)
Trong sự đơn giản của nó, nó gần như là đại số trong tự nhiên (một mục tiêu lớn trong thiết kế hệ thống). Và đó không phải là một kỳ công dễ dàng.
Theo nhiều cách (và không phải không có sai sót của nó), đây gần như là một đỉnh cao về khả năng kết hợp, mô đun hóa, khớp nối lỏng lẻo và độ gắn kết cao. Nếu bạn hiểu bốn điều này (và ý tôi là thực sự hiểu ), bạn sẽ hiểu, rõ ràng tại sao tar và gzip lại hoạt động như vậy theo cặp.
Trước hết, TAR không được tạo để lưu trữ tệp . Đó là băng ARchiver . Công việc của bạn là viết ra hoặc tải vào một kho lưu trữ đến / từ băng.
Các -f tùy chọn làm cho nó sử dụng một tập tin như "băng ảo", mà sau đó có thể được nén bởi một chương trình khác. Trong thực tế, nén như vậy cũng xảy ra trên tapedrive trong thế giới thực.
Tất nhiên, triết lý sử dụng một chương trình để làm tốt điều đó cũng được tính trong trường hợp này, nhưng người ta có thể bỏ lỡ lý do tại sao tài liệu lưu trữ TAR được cấu trúc như một luồng thay vì thư mục nội dung + nội dung.
Theo truyền thống, các hệ thống Unix sử dụng một chương trình để thực hiện một nhiệm vụ theo triết lý Unix : tar
chỉ là một phương tiện để đóng gói nhiều file thành một file duy nhất, ban đầu để sao lưu băng (vì thế tar
, t vượn ar chive). tar
không cung cấp nén; các kho lưu trữ không nén kết quả thường được nén với một số chương trình khác như gzip
, bzip2
hoặc xz
. Ngày xưa, họ sẽ sử dụng compress
lệnh để làm điều này; thuật toán nén mới hơn hiệu quả hơn nhiều so với điều này.
Cách tiếp cận được mô đun hóa cao theo triết lý Unix có nghĩa là mỗi chương trình có thể được sử dụng riêng lẻ khi thích hợp hoặc kết hợp để thực hiện các tác vụ phức tạp hơn, bao gồm cả việc tạo tài liệu lưu trữ nén như được mô tả ở đây. Đối với các loại nhiệm vụ này, nó cũng giúp bạn dễ dàng trao đổi các công cụ riêng lẻ khi cần thiết; bạn chỉ cần thay đổi chương trình nén để sử dụng thuật toán nén khác mà không phải tự thay thế tar
tiện ích.
Phương pháp mô-đun này không phải là không có nhược điểm của nó. Như đã đề cập trong các bình luận cho các câu trả lời khác, một định dạng lưu trữ nén chuyên dụng như .zip
có khả năng xử lý trích xuất các tệp riêng lẻ tốt hơn; tarball nén cần được giải nén gần như toàn bộ để giải nén các tệp gần cuối kho lưu trữ, trong khi .zip
lưu trữ cho phép truy cập ngẫu nhiên vào nội dung của chúng. (Một số định dạng mới hơn, chẳng hạn như .7z
, hỗ trợ lưu trữ rắn và không rắn, cũng như các khối rắn có kích thước khác nhau trong kho lưu trữ lớn hơn.) Việc tiếp tục sử dụng tar
kết hợp với tiện ích nén riêng là vấn đề truyền thống và tương thích; đồng thời, .7z
và .zip
không hỗ trợ siêu dữ liệu hệ thống tập tin Unix như quyền.