Liệu tar thực sự nén các tập tin, hoặc chỉ nhóm chúng lại với nhau?


37

Tôi thường cho rằng đó tarlà một tiện ích nén, nhưng tôi không chắc chắn, nó thực sự nén các tệp hay nó giống như một tệp ISO, một tệp để giữ các tệp?


Ngoài ra trên SuperUser .
allquixotic

Câu trả lời:


49

Tar là một công cụ lưu trữ (Tape ARchive), nó chỉ thu thập các tệp và siêu dữ liệu của chúng với nhau và tạo ra một tệp. Nếu bạn muốn nén tệp đó sau, bạn có thể sử dụng gzip / bzip2 / xz. Để thuận tiện, tar cung cấp các đối số để nén lưu trữ tự động cho bạn. Kiểm tra trang tar man để biết thêm chi tiết.


9
Một chút làm rõ về câu trả lời. GNU tar cung cấp các đối số nén thêm đó. Ví dụ, Solaris tar không cung cấp đối số để nén.
Tero Kilkanen

5
oooh, đó là lý do tại sao tôi tiếp tục nhìn thấything.tar.7z
Vịt Mooing

BSD tar cũng cung cấp một đối số để nén, mặc dù nó chỉ chấp nhận zvà xác định phương thức nén dựa trên phần mở rộng, trong khi GNU tar có các zZjJđối số riêng cho các phương thức nén khác nhau.
wingbedubmariner

2
Chỉ cần đọc trang web BSD tar và hóa ra tôi đã nhầm, BSD tar sử dụng riêng zZjJđể nén giống như GNU tar. Tuy nhiên, nó tự động phát hiện nén khi giải nén mặc dù vậy, trong khi GNU tar zZjJcũng mong đợi .
wingbedubmariner

5
@wingbedubmariner: không; các phiên bản hiện đại của GNU targiải nén tự động mà không yêu cầu các -zZjJtùy chọn.
Jonathan Leffler

17

tarsản xuất tài liệu lưu trữ; nén là một chức năng riêng biệt. Tuy nhiên, tar một mình có thể giảm mức sử dụng không gian khi được sử dụng trên một số lượng lớn các tệp nhỏ nhỏ hơn kích thước cụm của hệ thống tệp. Nếu một hệ thống tệp sử dụng các cụm 1kb, ngay cả một tệp có chứa một byte sẽ tiêu tốn 1kb (cộng với một nút). Một tarkho lưu trữ không có chi phí này.

BTW, một tệp ISO không thực sự là "một tệp để giữ các tệp" - nó thực sự là một hình ảnh của toàn bộ hệ thống tệp (một thiết kế ban đầu được sử dụng trên CD) và do đó cấu trúc của nó phức tạp hơn đáng kể.


3
Trên thực tế, một tập tin trống sẽ không tiêu thụ 1kb. Một tệp 1-1023 byte sẽ.
psusi

@psusi vì vậy đối với một tệp byte 1-1023 sẽ tiêu tốn 1024 luôn dẫn đến lãng phí 1023-1 byte.
Shiplu Mokaddim

2

Lệnh tar gốc UNIX không nén tài liệu lưu trữ. Như đã đề cập trong một bình luận, Solaris tar không nén. HP-UX, AIX, FWIW cũng không. Theo quy ước, tài liệu lưu trữ không nén kết thúc bằng .tar.

Với GNU / Linux, bạn nhận được GNU tar. (Bạn có thể cài đặt GNU tar trên các hệ thống UNIX khác.) Theo mặc định, nó không nén; tuy nhiên, nó sẽ nén lưu trữ kết quả bằng gzip (cũng bằng GNU) nếu bạn cung cấp -z. Hậu tố thông thường cho các tệp được nén .gz, vì vậy bạn sẽ thường thấy tarball (tiếng lóng cho một kho lưu trữ tar, thường ngụ ý nó đã được nén) kết thúc bằng .tar.gz. Kết thúc đó ngụ ý tar đã được chạy, tiếp theo là gzip, vd tar cf - .|gzip -9v > archive.tar.gz. Bạn cũng sẽ tìm thấy tài liệu lưu trữ kết thúc bằng .tgz, ví dụ tar czf archive.tgz ..

Chỉnh sửa: www.linfo.org/tar.html nhắc nhở tôi rằng GNU tar hỗ trợ nhiều chức năng hơn là chỉ nén bằng gzip và nó nhắc nhở tôi rằng các hậu tố không chỉ là quy ước đơn thuần. Họ đã tích hợp ngữ nghĩa. Nó cũng hỗ trợ bzip2 ( -jfor .bz2) và nén cũ ( -Zfor .Z). Sau đó, tôi nhìn vào trang người đàn ông và được nhắc nhở rằng -atự động ánh xạ phương pháp nén mong muốn của bạn dựa trên hậu tố.

Một nit khác. Như trang man tar của Linux nói, GNU tạo ra các trang thông tin, không phải trang man, vì vậy để tìm hiểu tất cả về GNU tar, hãy chạy info tar.


GNU tar vẫn không tự xử lý các nén, nó chỉ chuyển đến / từ gzip, bzip2, nén và các thứ khác.
ott--

Tôi đã xem qua nguồn . GNU tar xử lý nén! Việc triển khai tận dụng việc tái sử dụng mã và các nguyên tắc kiến ​​trúc không gian người dùng UNIX. "Chỉ đường ống" là nền tảng cho cách nén được tích hợp chặt chẽ vào công cụ. Thực tế là nó xảy ra với các chương trình trợ giúp ngã ba là một kỹ thuật. Nếu bạn muốn bảo vệ "chỉ đường ống", hãy trích dẫn tên tệp và số dòng và hãy xem cộng đồng đứng về phía nào.
tbc0

Phải mất một vài ngày trước khi tôi có thể kiểm tra nguồn đó.
ott--

1

tiện ích tar không nén cho đến khi bạn đưa ra đối số để làm như vậy [tên tệp tar -z].

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.