Câu trả lời:
hắc ín
khóa kéo
Thực tế là zip nén các tệp riêng biệt sẽ ảnh hưởng đến tỷ lệ nén, đặc biệt là trên nhiều tệp nhỏ tương tự.
(Ít nhất điều này đã chính xác một thập kỷ trước.)
Tar bảo tồn siêu dữ liệu nhiều hơn so với Zip, xem phần so sánh của tôi (nó hơi lỗi thời):
(Bấm để phóng to)
Tar vượt qua 65% bài kiểm tra, trong đó Zip chỉ vượt qua 17%. Tôi đã cung cấp bộ thử nghiệm có sẵn trên github theo giấy phép BSD để bạn có thể tự thử nếu có Mac. Đối với linux, tôi không chắc có siêu dữ liệu nào không, vì vậy những thử nghiệm này có thể không liên quan.
Hiệu quả có thể được đo lường theo những cách khác nhau:
Cũng có những câu hỏi khác, như "Mức độ phổ biến của các công cụ để thao túng tài liệu lưu trữ kết quả?"
Vì vậy, ví dụ, bzip2
tạo các tệp nhỏ hơn gzip
, nhưng có thể mất nhiều thời gian hơn. Ngoài ra, theo kinh nghiệm của tôi gzip
là phổ biến trên các hệ thống giống Unix, nhưng bzip2
vẫn không (mặc dù nó rất phổ biến và thường dễ lấy).
Như Wim đã lưu ý, tar tự nó không nén. Nếu bạn thêm nén tar (ví dụ: để lấy .tar.gz hoặc .tar.bz2), bạn sẽ nén toàn bộ tệp tar cùng một lúc. Ngược lại, zip nén từng tệp riêng lẻ.
Hiệu quả phụ thuộc vào khối lượng công việc. Cụ thể, zip cho phép bạn truy cập các tệp riêng lẻ trực tiếp. Với tar, trước tiên bạn phải tìm kiếm thông qua các tệp không mong muốn (đã nén) trước đó. Hiệu suất nén phụ thuộc vào những gì bạn đang nén. tar
với bzip2
thường tốt hơn cho một số lượng lớn các tệp tương tự (ví dụ: thư mục nguồn). zip
có thể tốt hơn nếu mỗi tệp có nội dung rất khác nhau.
Lưu trữ zip chứa một thư mục trung tâm của nội dung của chúng ở cuối (rất có thể tránh phải tạo thư mục trước, nơi bạn chưa biết những gì sẽ có bên trong). Điều này cho phép trích xuất nhanh các tệp đơn lẻ mà không phải giải nén toàn bộ kho lưu trữ: Chỉ cần đọc thư mục lưu trữ và chỉ trích xuất những gì cần thiết. Tuy nhiên, điều này đòi hỏi toàn bộ kho lưu trữ có thể truy cập được và yêu cầu truy cập ngẫu nhiên chỉ có trên các thiết bị khối (đĩa mềm, ổ cứng). Ngoài ra, thư mục lưu trữ dễ bị tổn thương: Nếu kho lưu trữ bị cắt ngắn vì một số lý do, nó yêu cầu thuật sĩ nặng để trích xuất bất cứ điều gì hữu ích từ kho lưu trữ.
Lưu trữ zip đã được tạo để sử dụng BBS, trong đó điều quan trọng là có thể bó nội dung của một thư mục vào một tệp (và được nén) --- thay vì phải tải xuống hàng ngàn tệp đơn lẻ. Giống như hầu hết các trang web đóng gói tải xuống của họ ngay cả ngày hôm nay, vì những lý do tương tự.
Các tài liệu lưu trữ Tar đã được tạo ra để sao lưu bó được sử dụng cho các ổ đĩa băng, do đó để truy cập tuần tự . Không có thư mục trung tâm; thay vào đó, kho lưu trữ chứa các khối tiêu đề theo các khoảng thời gian đều đặn cho biết các tệp nào sẽ theo sau trong một số khối tiếp theo. Tài liệu lưu trữ Tar dự định sẽ được đọc trong một cú trượt ngã; nếu chỉ trích xuất một tệp duy nhất, tệp lưu trữ được đọc tuần tự, bắt đầu từ lúc bắt đầu cho đến khi tìm thấy tệp được yêu cầu (có thể ở cuối). Nén được áp dụng trên đó; mỗi chương trình nén khác nhau được áp dụng đối với tài liệu lưu trữ tar ( compress
, gzip
,bzip2
v.v.) là máy nén luồng và không làm thay đổi tính chất tuần tự của kho lưu trữ trong mọi vấn đề. Trong trường hợp xấu nhất, bạn cần nhiều khối hơn một chút cho đến khi bạn có thể bắt đầu giải nén.
Điều này nghe có vẻ như là một sự khác biệt tầm thường, nhưng trên thực tế đại diện cho một thái cực đối lập trong triết học. Với kho lưu trữ zip, luôn cần có toàn bộ tệp trong tay để làm bất cứ điều gì hữu ích với nó, trong khi kho lưu trữ tar có thể được truyền trực tuyến đến một đường ống dẫn. Tôi có thể tải xuống một kho lưu trữ tar lớn và bắt đầu giải nén nó ngay từ đầu, ngay khi một vài khối đầu tiên xuất hiện (và có thể làm gián đoạn quá trình tải xuống ngay khi tôi nhận được tệp tôi đang tìm). Đối với kho lưu trữ Zip, tôi phải đợi cho đến khi thư mục lưu trữ xuất hiện, xuất hiện ở phần cuối của kho lưu trữ. Nhưng một khi tôi làm có toàn bộ tập tin trong tầm tay, trích xuất nội dung từng phần từ nó sẽ được nhanh hơn nhiều từ một tập tin tar.
Cả hai định dạng đều có một điểm rất mạnh đối với chúng, tùy thuộc vào vị trí và cách sử dụng chúng. Do các đường ống (và do đó, khái niệm truyền dữ liệu từ quy trình này sang quy trình khác) chỉ thực sự tồn tại trong thế giới Unix, nên ưu điểm chính của lưu trữ tar bị mất trên các hệ thống khác, đó là lý do tại sao lưu trữ Zip phổ biến hơn nhiều ở đó. Nhưng tài liệu lưu trữ tar linh hoạt hơn, đó là lý do tại sao tôi thích chúng bất cứ khi nào tôi có sự lựa chọn.
Như những người khác đã nói, tar tạo ra một "khối" lớn tất cả các tệp có thể được nén bằng một trình kết hợp luồng như gzip hoặc bzip2.
Nhược điểm của việc này là bạn phải giải nén toàn bộ tệp để truy cập một tệp bên trong kho lưu trữ.
Ưu điểm của việc này là tỷ lệ nén thường cao hơn, đặc biệt là khi các tệp nén rất giống nhau.
Các trình đóng gói khác như "rar" có "chế độ chặn" (hoặc tương tự) để có hiệu ứng tương tự.