Câu hỏi Lợi thế của việc sử dụng 'tar' ngày hôm nay là gì?


tôi biết điều đó tar đã được thực hiện cho lưu trữ băng trở lại trong ngày, nhưng hôm nay chúng tôi đã lưu trữ các định dạng tệp mà cả tệp tổng hợp và thực hiện nén trong cùng một định dạng tệp logic.

Câu hỏi:

  • Có một hình phạt hiệu suất trong giai đoạn tập hợp / nén / giải nén để sử dụng không tar đóng gói trong gzip hoặc là bzip2, khi so sánh với việc sử dụng một định dạng tập tin mà tập hợp và nén trong cùng một cấu trúc dữ liệu? Giả sử thời gian chạy của máy nén được so sánh là giống nhau (ví dụ: gzip và Deflate tương tự).

  • Có các tính năng của tar định dạng tệp mà các định dạng tệp khác, chẳng hạn như .7z và .zip không có?

  • tar là một định dạng tệp cũ và các định dạng tệp mới hơn tồn tại ngày nay, tại sao tar (cho dù đóng gói trong gzip, bzip2 hoặc thậm chí mới xz) vẫn được sử dụng rộng rãi hiện nay trên GNU / Linux, Android, BSD và các hệ điều hành UNIX khác, để truyền tệp, nguồn chương trình và tải xuống nhị phân và đôi khi thậm chí là định dạng trình quản lý gói?


206
2018-03-14 14:33


gốc


Tôi không đồng ý rằng nó "lãng phí thời gian". Nếu bạn có nghĩa là hiệu suất, không có hình phạt hiệu suất thực tế cho tar như định dạng là rất hiệu quả. Nếu bạn có nghĩa là nó lãng phí của bạn thời gian, tôi không thấy cách tar xvzf khó hơn 7z -x... - allquixotic
Anh ta dường như than thở rằng tar không lưu trữ catalog lúc đầu, nên các công cụ nén gui muốn liệt kê các nội dung trước khi giải nén phải giải nén toàn bộ tar chỉ để liệt kê các nội dung, sau đó giải nén nó lại khi trích xuất . - psusi
@ MarcusJ: bạn nghĩ rằng 7z bằng cách nào đó kỳ diệu biết nơi mỗi tập tin bắt đầu trong một kho lưu trữ? Bên cạnh đó, các thuật toán nén thông thường (gzip, bzip2) hoạt động với luồng nội dung: không cần phải hoàn thành 100% giai đoạn đầu tiên trước khi tiếp theo. - progo
Ngoài ra @ MarcusJ bạn dường như khó hiểu hai điều khác nhau: khi bạn làm tar xvzf, dữ liệu chưa nén không phải là ghi vào đĩa cứng trong .tar định dạng! Bạn nói đúng rằng nếu bạn chạy gunzip blah.tar.gz và sau đó tar xf blah.tar, nó sẽ ghi dữ liệu vào đĩa hai lần (một lần như là một .tar và một lần nữa như các tập tin trong hệ thống tập tin), nhưng không ai thực sự làm theo cách đó. Các tar xzf sử dụng một Ống UNIX (về cơ bản là một bản sao bộ nhớ) để chuyển dữ liệu chưa nén từ gzip (hoặc bất kỳ máy nén) nào tar, vì vậy dữ liệu là không phải ghi vào đĩa trong .tar định dạng. - allquixotic
Một điều tôi biết là tar (đặc biệt là nén) hoạt động khủng khiếp khi nói đến tham nhũng dữ liệu. Dữ liệu dự phòng / khôi phục nhỏ được bổ sung bởi các định dạng hiện đại có giá trị vàng - PPC


Các câu trả lời:


Phần 1: Hiệu suất

Đây là một so sánh của hai quy trình công việc riêng biệt và những gì họ làm.

Bạn có tệp trên đĩa 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 1 GB 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 lấp đầy với giá trị "một khối" dữ liệu, 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 2 GB nội dung dữ liệu chưa nén của 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 đối với 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 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à 1 GB (cho gunzip) + 2 GB (cho tar) = 3 GB.

Tổng số dữ liệu chúng tôi XÓA vào đĩa trong quá trình này là 2 GB (cho gunzip) + 2 GB (cho 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, 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 1 GB 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à 1 GB 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à 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, số lượng đĩa I / O trong Cách 2 Là giố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ó LZMA2'ed TAR lưu trữ, mà chỉ là hiệu quả như các 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 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, các liên kết tượng trưng, ​​v.v. Có nhiều hơn một vài trường hợp cần thiết vào 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, bởi 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, không có vấn đề bao nhiêu tuổi hoặc pared 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ư ZIP hoặc RAR định dạng tệp ở 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ới 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ư Opushoặ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.


173
2018-03-14 17:09



Kudo cho câu trả lời tuyệt vời với tất cả nội dung được phân tách theo ba tiêu đề riêng biệt. - JFW
"Phần 3: Khả năng tương thích" dường như đã được sao chép từ câu trả lời của @ Kruug. - titaniumdecoy
@titaniumdecoy Bạn đã nhận thấy rằng đó là allquixotic người ban đầu đã viết một phần và chỉnh sửa nó vào câu trả lời của Kruug? - slhck
Cảm ơn vì đã chỉ ra điều đó, tôi không nhận thấy. Tuy nhiên, có vẻ hơi ngớ ngẩn khi tôi có một khối văn bản giống hệt nhau trong hai câu trả lời khác nhau trên trang này. - titaniumdecoy
Điều này giải đáp tại sao tar phù hợp trong hệ sinh thái lưu trữ (ví dụ: tổng hợp các tệp với nhau, cung cấp hiệu suất tăng và một số lợi ích khác như quyền tiết kiệm), nhưng nó không giải thích tại sao các lựa chọn thay thế hiện đại như darkhông được sử dụng tại chỗ. Nói cách khác, câu trả lời này biện minh cho việc sử dụng các tập hợp tập tin, nhưng không phải của tar phần mềm trong chính nó. - gaborous


Điều này đã được trả lời trên Stack Overflow.

bzip và gzip hoạt động trên các tệp đơn lẻ, không phải các nhóm tệp. Plain zip cũ (và pkzip) hoạt động trên các nhóm của các tập tin và có khái niệm về kho lưu trữ được xây dựng trong.

Triết lý * nix là một trong những công cụ nhỏ làm công việc cụ thể rất tốt và có thể xích lại với nhau. Đó là lý do tại sao có hai công cụ ở đây có nhiệm vụ cụ thể và chúng được thiết kế để vừa với nhau. Nó cũng có nghĩa là bạn có thể sử dụng tar để nhóm các tập tin và sau đó bạn có một sự lựa chọn của công cụ nén (bzip, gzip, vv).

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, bởi 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 ít nhất tar và gunzip, không có vấn đề bao nhiêu tuổi hoặc pared 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 đang 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 Xz (LZMA) định dạng nén, nén tốt hơn gzip hoặc bzip2) hoặc .7z, tương tự như ZIP hoặc là RAR định dạng tệp ở 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ới 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ư Opushoặc video trong WebM. Khả năng tương thích với những người chạy hệ thống cổ xưa hoặc rất cơ bản là quan trọng.


100
2017-08-19 08:50



Xin chào @Kruug, tôi đã chỉnh sửa bài đăng của bạn chỉ để đưa ra quan điểm thực tế về lý do mọi người vẫn chọn để sử dụng các định dạng này khi họ có lựa chọn sử dụng thứ gì đó khác. Tôi không thay đổi nội dung bạn đã có. Đây chỉ là để đảm bảo rằng những gì dường như là câu trả lời kinh điển cho câu hỏi này sẽ có hình ảnh đầy đủ. Vui lòng chỉnh sửa chỉnh sửa của tôi nếu bạn muốn :) - allquixotic
@allquixotic khởi đầu bất cứ ai? Chỉnh sửa chỉnh sửa và chỉnh sửa để bạn có thể chỉnh sửa chỉnh sửa ... - SnakeDoc
Câu trả lời này chắc chắn là một trường hợp của "Tôi đôi khi bị thổi bay đi bởi những người bỏ phiếu không được bảo vệ". Nó không giải quyết vấn đề cốt lõi của câu hỏi đó là với danh sách các nội dung của tar nén và nó thậm chí không phải là một câu trả lời gốc! - Ярослав Рахматуллин
-1 cho công lý tuyệt vời. điều này đáng lẽ phải là một bình luận. - wim
Tôi không mua đối số mẫu số chung cũ / thấp nhất; Tôi nhớ trên các hệ thống mới (mặt trời) thường xuyên phải tải xuống gzip / gunzip (từ phần mềm chống nắng) chỉ để cài đặt phần mềm đóng gói tar.gz khác (cộng với gnu tar, vì tar của mặt trời bị hút). Đối với mẫu số cũ / dưới cùng, bạn đã có tar.Z (nén / giải nén). Sự tiến triển của các tiện ích đã là một dòng liên tục (không có ý định chơi chữ) thay đổi và cải tiến: Z => zip => gz => bz2 => 7z => xz (hoặc bất kỳ thứ tự nào bạn thích). Đối với vai trò của tar, một số utils un / compress chỉ, và vẫn yêu cầu tar để đóng gói các hệ thống phân cấp tệp. - michael


Tar có một tập hợp các hoạt động và modifier phong phú mà biết tất cả về các hệ thống tập tin Unix. Nó biết về các điều khoản Unix, về các thời điểm khác nhau liên quan đến các tệp, về các liên kết cứng, về các liên kết mềm (và về khả năng các liên kết tượng trưng có thể giới thiệu các chu trình trong biểu đồ hệ thống tệp) và cho phép bạn chỉ định một số cách khác nhau để quản lý tất cả dữ liệu này .

  • Bạn có muốn dữ liệu được trích xuất để duy trì thời gian truy cập tệp không? Tar có thể làm điều đó. Để giữ quyền? Tar có thể làm điều đó.

  • Bạn có muốn giữ liên kết tượng trưng làm liên kết tượng trưng không? Tar thực hiện điều đó theo mặc định. Bạn muốn sao chép mục tiêu thay thế? Tar có thể làm điều đó.

  • Bạn có muốn chắc chắn rằng dữ liệu liên kết cứng chỉ được lưu trữ một lần (nghĩa là, để làm điều đúng)? Tar làm điều đó.

  • Bạn có muốn xử lý các tệp thưa thớt tốt không? Tar có thể làm điều đó.

  • Bạn có muốn dữ liệu không nén (tại sao?)? Tar có thể làm điều đó. Để nén bằng gzip? Tar có thể làm điều đó. Với bzip2? Tar có thể làm điều đó. Với các chương trình nén bên ngoài tùy ý? Tar có thể làm điều đó.

  • Bạn có muốn viết hoặc khôi phục / từ một thiết bị thô không? Định dạng của Tar xử lý tốt.

  • Bạn có muốn thêm tệp vào lưu trữ hiện tại không? Tar có thể làm điều đó. Để phân biệt hai kho lưu trữ để xem những gì đã thay đổi? Tar có thể làm điều đó. Để cập nhật chỉ những phần của kho lưu trữ đã thay đổi? Tar có thể làm điều đó.

  • Bạn có muốn chắc chắn rằng bạn không lưu trữ trên nhiều hệ thống tệp không? Tar có thể làm điều đó.

  • Bạn có muốn chỉ lấy các tệp mới hơn tệp sao lưu cuối cùng của mình không? Tar có thể làm điều đó.

  • Bạn có muốn giữ tên và số của người dùng và nhóm không? Tar có thể làm một trong hai.

  • Bạn có cần phải bảo toàn các nút thiết bị (như các tệp trong /dev) để sau khi khai thác, hệ thống sẽ chạy chính xác? Tar có thể làm điều đó.

Tar đã được phát triển để xử lý rất nhiều và rất nhiều trường hợp sử dụng trong nhiều thập kỷ và thực sự không biết rất nhiều về những điều mọi người muốn làm với hệ thống tập tin Unix.


61



Bạn không cần GNU tar để sử dụng một máy nén tùy ý: chỉ cần nói tar để viết lưu trữ để stdout với f - và ống nó vào máy nén. - Ilmari Karonen
"Bạn có muốn dữ liệu không nén (tại sao?)?" tôi sử dụng tar rất thường xuyên để sao chép một cây hệ thống tập tin từ nơi này sang nơi khác và giữ quyền truy cập, vv và nén trong trường hợp này chỉ cần thêm các chu kỳ CPU. Ví dụ. tar cf - * | tar xf - -C /somewhere. - Steve
Ngoài ra, bạn sẽ muốn có một tệp .tar khi hệ thống tệp đích thực hiện khử trùng. Việc tạo lưu trữ nén trên một hệ thống tệp thực hiện khử trùng sẽ làm giảm đáng kể tỷ lệ dedupe. Ví dụ: Chúng tôi đã từng xóa một tệp tar.gz $ 10,000,00; có nghĩa là, nó chiếm tới 10 nghìn đô la không gian lưu trữ vì ai đó đã sử dụng tính năng nén. - Aaron
@Steve CPU chu kỳ có thể rẻ hơn so với IO đĩa cho các thuật toán như LZ4 hoặc LZO. Đó là lý do tại sao chúng được sử dụng trong zram, và các hệ thống tệp nén trong suốt như NTFS, ZFS, Btrfs ... vì vậy đôi khi nó thực sự nhanh hơn để nén vì số lượng đĩa IO giảm đáng kể - phuclv


Bạn nhầm lẫn giữa hai quá trình riêng biệt của lưu trữ và nén.

Lý do sử dụng bộ lưu trữ

Một lý do để sử dụng lưu trữ mà không cần nén, ví dụ, nếu một bó các tệp được sao chép từ máy chủ này sang máy chủ khác. Một lệnh như sau

tar cf - some_directory | ssh host "(cd ~/somewhere | tar xf -)"

có thể tăng tốc độ đáng kể. Nếu tôi biết rằng các tập tin không thể nén hoặc nếu SSH được thiết lập với tính năng nén, nó có thể tiết kiệm đáng kể CPU thời gian. Chắc chắn, người ta có thể sử dụng một công cụ nén hiện đại hơn với chức năng lưu trữ và tắt nén. Ưu điểm của tar là, tôi có thể mong đợi nó khả dụng trên mọi hệ thống.

Lý do sử dụng bộ lưu trữ có nén gzip

Một lý do mà tôi sử dụng tar với gzip Là: tốc độ! Nếu tôi muốn chuyển một vài GiB của các tập tin văn bản từ nơi này sang nơi khác, tôi không quan tâm đến việc ép ra các byte cuối cùng, vì nén chỉ được sử dụng cho quá cảnh, không phải để lưu trữ lâu dài. Trong những trường hợp tôi sử dụng gzip, không tối đa CPU (trái ngược với 7-Zip, ví dụ), có nghĩa là tôi I / O bị ràng buộc một lần nữa và không bị ràng buộc CPU. Và một lần nữa: gzip có thể được coi là có sẵn ở khắp mọi nơi.

Lý do sử dụng tar theo ý kiến scp, rsync, v.v.

Nó đập scp nếu bạn có nhiều tệp nhỏ để sao chép (ví dụ: thư mục thư với hàng trăm nghìn tệp). rsync, thật tuyệt vời, có thể không khả dụng ở mọi nơi. Thêm nữa, rsync chỉ thực sự trả tiền nếu một phần của các tập tin - hoặc một phiên bản cũ- - đã có mặt trên đích. Đối với bản sao ban đầu tar là nhanh nhất, có nén hoặc không, tùy thuộc vào dữ liệu thực tế.


28



Nhưng nếu bạn định lưu trữ, tại sao không nén? Được rồi, vâng nó có thể tiết kiệm thời gian cho các tệp không dễ nén, nhưng sau đó các trình lưu trữ có lẽ nên biết rằng nhạc chẳng hạn, không phải là rất nén, ngoại trừ các tiêu đề. - MarcusJ
Bạn có thể không cần, hoặc nội dung của bạn có thể không được nén. - Hasturkun
Vì lý do hiệu suất, thường dễ sử dụng tập hợp tập tin không nén khi gửi dữ liệu qua các liên kết mạng băng thông rất cao vượt quá tốc độ mà máy nén có thể nén dữ liệu. Điều này là có thể đạt được ví dụ với Gigabit Ethernet; chỉ một vài thuật toán nén được thiết kế tốt, cũng có tỷ lệ nén rất kém, có thể nén dữ liệu nhanh ngay cả trên một CPU máy tính để bàn lớn. Trên một thiết bị nhúng, bạn thậm chí có ít thời gian CPU hơn để làm việc. - allquixotic
không chỉ là điều này tăng tốc độ nhưng nó cũng cho phép bảo quản quyền sở hữu tập tin, dấu thời gian và các thuộc tính (nếu đặc quyền người dùng cho phép nó) - Andre Holzner
@AndreHolzner Phải. Tôi thường làm tar cf - . | (cd ~/somewhere; tar xvf -). Nó thực sự hữu ích không phải chờ đợi cho đến khi chỉ mục trung tâm được viết (ví dụ như trong một tập tin zip). - user239558


Thêm vào các câu trả lời hay khác ở đây, tôi thích sự kết hợp tar + gzip|bzip2|xz chủ yếu là vì các tệp nén này giống như các luồng và bạn có thể dễ dàng đặt chúng.

Tôi cần phải giải nén một tập tin có sẵn trên internet. Với một trong hai zip hoặc là rar định dạng tôi phải tải xuống trước và sau đó giải nén nó. Với tar.{gz,bz2,xz} Tôi có thể tải xuống và giải nén trong cùng một bước mà không cần phải lưu trữ tệp nén trên đĩa:

curl -s http://example.com/some_compressed_file.tar.gz | tar zx

Điều này sẽ chỉ để lại các tập tin không nén trong đĩa của tôi, và sẽ tăng tốc toàn bộ quá trình, bởi vì tôi không phải là thời gian quay đầu tiên tải xuống toàn bộ tệp và sau khi tải xuống xong, tôi giải nén nó. Thay vào đó, tôi giải nén nó trong khi nó đang tải xuống. Bạn không thể làm điều này với zip hoặc là rar các tập tin.


24



Tôi không biết về rar (đó là một chương trình khủng khiếp mà dường như đã trở nên phổ biến với những tên cướp biển beacuse khả năng của nó để chia thành nhiều tập tin nhỏ hơn), nhưng bạn có thể dòng zip tốt. Trang người đàn ông thậm chí còn đề cập đến nó. Nó cũng có lợi thế là có thể trích xuất hoặc cập nhật tập tin từ giữa một kho lưu trữ lớn hiệu quả, mặc dù tar có xu hướng để có được nén tốt hơn một chút. Nén so với truy cập ngẫu nhiên là một sự cân bằng. - psusi
@psusi không đúng. Bạn có thể làm hack như điều này, nhưng những gì nó làm là tải xuống tất cả các tập tin trong bộ nhớ và sau đó giải nén nó, thay vì giải nén trong khi tải xuống. Và funzip chỉ trích xuất tệp đầu tiên trong tệp nén, không phải tất cả. - Carlos Campderrós
@ Chỉ cần làm rõ, không phải là một vấn đề, chỉ là tối ưu hóa thời gian của bạn (tôi không quan tâm đến không gian nếu đó là những gì bạn nghĩ) - Carlos Campderrós
Cả hai bên đều hoạt động: Bạn có thể tar ở một bên và bỏ vào bên kia, quá: tar zc /some/folder | ssh user@host "cd /other/folder && tar zx" - Carlos Campderrós
@psusi như tôi nhớ từ những thời điểm cũ khi sử dụng pkzip để lưu trữ các tệp trên nhiều đĩa mềm, danh mục cửa hàng zip ở cuối lưu trữ. Nó luôn luôn yêu cầu đĩa mềm cuối cùng để bắt đầu khai thác hoặc hiển thị danh mục. Vì thế en.wikipedia.org/wiki/File:ZIP-64_Internal_Layout.svg - Mikhail Moskalev


Có nhiều lý do để gắn bó với (GNU) Tar.

Nó là:

  • Giấy phép GPL
  • tốt theo nghĩa của triết lý Unix
    • công cụ mục đích duy nhất, có khả năng thực hiện một số tác vụ
  • tài liệu tốt và có nhiều tính năng đáng tin cậy
  • tương thích với một số thuật toán nén
  • dễ sử dụng và mọi người đã phát triển thói quen với nó
  • rộng rãi có sẵn
  • Tôi cảm thấy ấm áp và mờ bên trong khi sử dụng phần mềm bắt đầu bằng RMS (không bao gồm Emacs)

Nếu thịt bò đặc biệt của bạn là phải "giải nén" một tarball trước khi có thể đọc được nội dung, thì có lẽ bạn đã đúng. WinRAR và 7-Zip tự động làm điều đó. Tuy nhiên, có những cách giải quyết đơn giản cho vấn đề này, chẳng hạn như ghi lại nội dung của một tệp lưu trữ dưới dạng không nén.


13



Đó là phần mềm miễn phí - Vì vậy, rất nhiều trong số đó Đó là tốt ở những gì nó làm - Hardly so với các công cụ khác Nó cũng tài liệu và có nhiều tính năng - Tính năng hầu như không được sử dụng và detestably dễ sử dụng. Nó hỗ trợ một số thuật toán nén - Không nhiều như một số thuật toán khác - Griffin
các vị thần Unix đã tạo ra nó - do đó chúng ta phải sử dụng nó! - SnakeDoc
Tar cũng lưu trữ các điều khoản UNIX nguyên bản, và rất nổi tiếng và được thử nghiệm. Có nhiều hơn một vài trường hợp mà người ta có thể cần phải glob một loạt các tập tin vào một tập tin hoặc dòng, nhưng không nhất thiết phải nén nó. - LawrenceC
May mắn tar không chỉ giới hạn ở phiên bản GNU. Trong khi GNU tar chắc chắn là một phần mềm tốt, libarchive + front front liên quan nhanh hơn và dễ dàng nhúng vào các dự án phần mềm khác. Bạn có thể làm cho một đối số cho tar mà không biến nó thành một cuộc chiến cấp phép. - Lucas Holt
Tôi không mỉa mai. Tôi thích RMS và cách anh ta thực hiện tin tưởng của mình. - Ярослав Рахматуллин


Định dạng tệp như .zip yêu cầu phần mềm để đọc phần cuối của tập tin đầu tiên, để đọc một danh mục các tên tập tin. Ngược lại, tar lưu trữ thông tin đó với luồng nén.

Ưu điểm của cách tar là bạn có thể giải nén dữ liệu trong khi đọc nó từ một đường ống không tìm kiếm được, giống như một ổ cắm mạng.

Lợi thế của cách nén là, đối với một tệp tĩnh trên đĩa, bạn có thể duyệt nội dung và siêu dữ liệu mà không giải nén toàn bộ lưu trữ trước.

Cả hai đều có cách sử dụng của họ, tùy thuộc vào những gì bạn đang làm.


11



Không, bạn có thể đọc và ghi các tệp zip dưới dạng luồng từ và đến đường ống. - Mark Adler
Điều đó có thể được thực hiện cụ thể sau đó, nó chắc chắn không được hỗ trợ bởi pkzip ban đầu. - xorsyst
Có, phần mềm phải được viết để hỗ trợ nó. Định dạng zip hỗ trợ hoàn toàn, với các bộ mô tả dữ liệu có thể theo dõi dữ liệu nén với độ dài và CRC. - Mark Adler
@MarkAdler, phần mềm nào? Infozip không hỗ trợ giải nén từ một đường ống. - psusi
zlib.net/sunzip033.c.gz - Mark Adler