Lợi thế của việc sử dụng định dạng tệp Tar hôm nay là gì?

Mục lục:

Lợi thế của việc sử dụng định dạng tệp Tar hôm nay là gì?
Lợi thế của việc sử dụng định dạng tệp Tar hôm nay là gì?

Video: Lợi thế của việc sử dụng định dạng tệp Tar hôm nay là gì?

Video: Lợi thế của việc sử dụng định dạng tệp Tar hôm nay là gì?
Video: The first 20 hours -- how to learn anything | Josh Kaufman | TEDxCSU - YouTube 2024, Tháng tư
Anonim
 Định dạng lưu trữ tar là, trong tính toán năm, một Methuselah thật sự nhưng nó vẫn còn được sử dụng nặng nề ngày nay. Điều gì làm cho định dạng tar rất hữu ích lâu sau khi thành lập?
Định dạng lưu trữ tar là, trong tính toán năm, một Methuselah thật sự nhưng nó vẫn còn được sử dụng nặng nề ngày nay. Điều gì làm cho định dạng tar rất hữu ích lâu sau khi thành lập?

Phiên Hỏi & Đáp hôm nay đến với chúng tôi theo lịch sự của SuperUser - một phân khu của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều hành.

Câu hỏi

Người đọc SuperUser MarcusJ tò mò về định dạng tar và lý do chúng tôi vẫn sử dụng nó sau tất cả các năm sau:

I know that tar was made for tape archives back in the day, but today we have archive file formats that both aggregate files and perform compression within the same logical file format.

Questions:

  • Is there a performance penalty during the aggregation/compression/decompression stages for using tar encapsulated in gzip or bzip2, when compared to using a file format that does aggregation and compression in the same data structure? Assume the runtime of the compressor being compared is identical (e.g. gzip and Deflate are similar).
  • Are there features of the tar file format that other file formats, such as.7z and.zip do not have?
  • Since tar is such an old file format, and newer file formats exist today, why is tar (whether encapsulated in gzip, bzip2 or even the new xz) still so widely used today on GNU/Linux, Android, BSD, and other such UNIX operating systems, for file transfers, program source and binary downloads, and sometimes even as a package manager format?

Đó là một câu hỏi hoàn toàn hợp lý; đã thay đổi rất nhiều trong thế giới máy tính trong ba mươi năm qua nhưng chúng tôi vẫn đang sử dụng định dạng tar. Câu chuyện là gì?

Câu trả lời

Người đóng góp SuperUser Allquixotic cung cấp một số thông tin chi tiết về tuổi thọ và chức năng của định dạng tar:

Part 1: Performance

Here is a comparison of two separate workflows and what they do.

You have a file on disk

blah.tar.gz

đó là, nói, 1 GB dữ liệu nén gzip, khi không nén, chiếm 2 GB (do đó 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

đó chỉ là một tập hợp của

files …

ở dạng không nén.

Sau đó, bạn sẽ làm

gzip blah.tar

Điều này sẽ đọc nội dung của

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

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 1GB

    blah.tar.gz

  • Xử lý dữ liệu nén thông qua

    gzip

    giải nén trong bộ nhớ.

  • Khi bộ nhớ đệm đầy với dữ liệu “khối”, hãy nén dữ liệu chưa 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.

  • Hủy liên kết (xóa) tệp

    blah.tar.gz

Bây giờ bạn có

blah.tar

trên đĩa, được giải 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ểmột vài byte lớn hơn tổng của tất cả các dữ liệu tập tin sẽ được.

Bạn chạy:

tar xvf blah.tar

Điều này sẽ

  • ĐỌC 2GB nội dung dữ liệu chưa nén của

    blah.tar

    tar

    cấu trúc dữ liệu của định dạng tệp, bao gồm thông tin về quyền đối với tệp, tên tệp, thư mục, v.v.

  • VIẾT để đĩa 2GB dữ liệu cộng với siêu dữ liệu. Điều này bao gồm: dịch thông tin cấu trúc dữ liệu / siêu dữ liệu vào việc tạo tệp và thư mục mới trên đĩa theo cách 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 số dữ liệu chúng tôi ĐỌC từ đĩa trong quá trình này là 1GB (cho gunzip) + 2GB (cho tar) = 3GB.

Tổng số dữ liệu chúng tôi XÓA vào đĩa trong quá trình này là 2GB (cho gunzip) + 2GB (cho tar) + một vài byte cho siêu dữ liệu = khoảng 4GB.

Cách 2

Bạn có

blah.tar.gz

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 nội dung dữ liệu nén 1GB

    blah.tar.gz

    một khối tại một thời điểm, vào bộ nhớ.

  • Xử lý dữ liệu nén thông qua

    gzip

    giải nén trong bộ nhớ.

  • Khi bộ nhớ đệm đầy, nó sẽ ống dữ liệu đó, trong bộ nhớ, thông qua

    tar

    trình phân tích cú pháp đị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 đầy trong

    tar

    tệp phân tích cú pháp, nó sẽ VIẾT dữ liệu chưa nén vào đĩa, bằng cách tạo tệp và thư mục và điền chúng với nội dung chưa nén.

Tổng số dữ liệu chúng tôi ĐỌC từ đĩa trong quá trình này là 1GB dữ liệu nén, thời gian.

Tổng số dữ liệu chúng tôi XÓA vào đĩa trong quá trình này là 2GB dữ liệu không nén + một vài byte cho siêu dữ liệu = khoảng 2GB.

Nếu bạn nhận thấy, số lượng đĩa I / O trong Cách 2giống nhau vào đĩa I / O được thực hiện bởi, nói,

Zip

hoặc là

7-Zip

chương trình, điều chỉnh cho bất kỳ sự khác biệt trong 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, có hiệu quả như thuật toán nâng cao nhất hiện có cho

7-Zip

:-)

Phần 2: Tính năng

tar

lưu trữ các quyền của 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, liên kết tượng trưng, v.v. Có nhiều hơn một vài trường hợp một tệp hoặc luồng, 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 dạng nhị phân dưới dạng.tar.gz hoặc.tar.bz2 vì nó 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.zip hoặc.rar, hầu hết các cài đặt Linux, thậm chí là cơ bản nhất, sẽ có quyền truy cập vào ít nhất tar và gunzip, bất kể độ tuổi hay bị bỏ xuống. Ngay cả các phần mềm Android 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 theo đị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ư định dạng tệp Zip hoặc Rar ở chỗ cả hai đều 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 một lý do nhạc không được bán từ các cửa hàng tải xuống trực tuyến bằng 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 đang chạy các hệ thống cổ xưa hoặc rất cơ bản.

Có cái gì để thêm vào lời giải thích? Âm thanh trong các ý kiến.Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange có hiểu biết công nghệ khác? Xem toàn bộ chuỗi thảo luận tại đây.

Đề xuất: