Phần 1: Hiệu suất
Dưới đây là so sánh hai quy trình công việc riêng biệt và những gì họ làm.
Bạn có một tệp trên đĩa blah.tar.gz
, giả sử, 1 GB dữ liệu được nén bằng gzip, khi không được nén, chiếm 2 GB (tỷ lệ nén là 50%).
Cách mà bạn sẽ tạo ra điều này, nếu bạn thực hiện lưu trữ và nén riêng, sẽ là:
tar cf blah.tar files ...
Điều này sẽ dẫn đến blah.tar
đó là một tập hợp đơn thuần của files ...
hình thức không nén.
Sau đó, bạn sẽ làm
gzip blah.tar
Điều này sẽ đọc nội dung blah.tar
từ đĩa, nén chúng thông qua thuật toán nén gzip, ghi nội dung vào blah.tar.gz
, sau đó hủy liên kết (xóa) tệp blah.tar
.
Bây giờ, hãy giải nén!
Cách 1
Bạn có blah.tar.gz
, bằng cách này hay cách khác.
Bạn quyết định chạy:
gunzip blah.tar.gz
Điều này sẽ
- ĐỌC nội dung dữ liệu nén 1 GB của
blah.tar.gz
.
- QUY TRÌNH dữ liệu nén thông qua bộ
gzip
giải nén trong bộ nhớ.
- Khi bộ nhớ đệm lấp đầy dữ liệu "một khối", VIẾT dữ liệu không nén vào tệp
blah.tar
trên đĩa và lặp lại cho đến khi tất cả dữ liệu nén được đọc.
- Bỏ liên kết (xóa) tệp
blah.tar.gz
.
Bây giờ, bạn có blah.tar
trên đĩa, không nén nhưng chứa một hoặc nhiều tệp trong đó, với chi phí cấu trúc dữ liệu rất thấp. Kích thước tệp có thể là một vài byte lớn hơn tổng của tất cả dữ liệu tệp.
Bạn chạy:
tar xvf blah.tar
Điều này sẽ
- ĐỌC 2 GB nội dung dữ liệu không nén
blah.tar
và tar
cấu trúc dữ liệu của định dạng tệp, bao gồm thông tin về quyền tệp, tên tệp, thư mục, v.v.
- VIẾT 2 GB dữ liệu cộng với siêu dữ liệu vào đĩa. Điều này bao gồm: dịch cấu trúc dữ liệu / thông tin siêu dữ liệu sang tạo các tệp và thư mục mới trên đĩa khi thích hợp hoặc viết lại các tệp và thư mục hiện có với nội dung dữ liệu mới.
Tổng dữ liệu chúng tôi ĐỌC từ đĩa trong quá trình này là 1 GB (đối với gunzip) + 2 GB (đối với tar) = 3 GB.
Tổng dữ liệu chúng tôi VIẾT vào đĩa trong quá trình này là 2 GB (đối với gunzip) + 2 GB (đối với tar) + một vài byte cho siêu dữ liệu = khoảng 4 GB.
Cách 2
Bạn có blah.tar.gz
, bằng cách này hay cách khác.
Bạn quyết định chạy:
tar xvzf blah.tar.gz
Điều này sẽ
- ĐỌC các nội dung dữ liệu nén 1 GB của
blah.tar.gz
, một khối tại một thời điểm, vào bộ nhớ.
- QUY TRÌNH dữ liệu nén thông qua bộ
gzip
giải nén trong bộ nhớ.
- Khi bộ nhớ đệm đầy, nó sẽ dẫn dữ liệu đó, trong bộ nhớ, đến
tar
bộ phân tích định dạng tệp, sẽ đọc thông tin về siêu dữ liệu, v.v. và dữ liệu tệp không nén.
- Khi bộ nhớ đệm lấp đầy trong
tar
trình phân tích cú pháp tệp, nó sẽ VIẾT dữ liệu không nén vào đĩa, bằng cách tạo tệp và thư mục và điền vào chúng với nội dung không nén.
Tổng dữ liệu chúng tôi ĐỌC từ đĩa trong quá trình này là 1 GB dữ liệu nén, theo chu kỳ.
Tổng dữ liệu chúng tôi VIẾT vào đĩa trong quá trình này là 2 GB dữ liệu không nén + một vài byte cho siêu dữ liệu = khoảng 2 GB.
Nếu bạn nhận thấy, lượng đĩa I / O trong Way 2 là giống hệt với đĩa I / O được thực hiện bởi, nói, Zip
hoặc 7-Zip chương trình, điều chỉnh cho bất kỳ sự khác biệt về tỷ lệ nén.
Và nếu tỷ lệ nén là mối quan tâm của bạn, hãy sử dụng Xz
máy nén để đóng gói tar
và bạn có kho lưu trữ TAR của LZMA2 , hiệu quả tương đương với thuật toán tiên tiến nhất có sẵn cho 7-Zip :-)
Phần 2: Tính năng
tar
lưu trữ các quyền Unix trong siêu dữ liệu tệp của nó, và rất nổi tiếng và đã được thử nghiệm để đóng gói thành công một thư mục với tất cả các loại quyền khác nhau, các liên kết tượng trưng, v.v. Có nhiều trường hợp người ta có thể cần phải tạo ra một loạt các tệp vào một tệp hoặc luồng duy nhất, nhưng không nhất thiết phải nén nó (mặc dù nén rất hữu ích và thường được sử dụng).
Phần 3: Khả năng tương thích
Nhiều công cụ được phân phối ở dạng nguồn hoặc nhị phân như .tar.gz hoặc .tar.bz2, vì đây là định dạng tệp "mẫu số chung thấp nhất": giống như hầu hết người dùng Windows có quyền truy cập vào bộ giải nén .zip hoặc .rar, hầu hết các cài đặt Linux , ngay cả cơ bản nhất, sẽ có quyền truy cập ít nhất tar và gunzip, bất kể cũ hay giảm xuống. Ngay cả các phần mềm Android cũng có quyền truy cập vào các công cụ này.
Các dự án mới nhắm mục tiêu đối tượng chạy phân phối hiện đại có thể phân phối rất tốt ở định dạng hiện đại hơn, chẳng hạn như .tar.xz (sử dụng định dạng nén Xz (LZMA), nén tốt hơn gzip hoặc bzip2) hoặc .7z, tương tự như các định dạng tệp ZIP hoặc RAR ở chỗ nó vừa nén và chỉ định bố cục để đóng gói nhiều tệp vào một tệp.
Bạn không thấy .7z được sử dụng thường xuyên hơn vì cùng lý do nhạc không được bán từ các cửa hàng tải xuống trực tuyến ở các định dạng hoàn toàn mới như Opus hoặc video trong WebM . Khả năng tương thích với những người chạy các hệ thống cổ xưa hoặc rất cơ bản.
tar xvzf
khó hơn7z -x
...