Khi tôi chạy
tar -cvzf archive.tgz file1 file2 ; rm file1 file2
nó thường tạo ra một tarball nén, nhưng làm sao có thể
tar -xvf archive.tgz
trả lại cho tôi các tập tin không nén? Tôi đã luôn nghĩ rằng cờ -z sẽ được yêu cầu.
Khi tôi chạy
tar -cvzf archive.tgz file1 file2 ; rm file1 file2
nó thường tạo ra một tarball nén, nhưng làm sao có thể
tar -xvf archive.tgz
trả lại cho tôi các tập tin không nén? Tôi đã luôn nghĩ rằng cờ -z sẽ được yêu cầu.
Câu trả lời:
Việc tar
triển khai của bạn , có thể là GNU
một, đang phát hiện tệp được truyền dưới dạng tham số được nén.
Các tar
triển khai được sử dụng nhiều nhất hiện nay GNU tar
và các triển khai busybox
đang tìm kiếm các byte đầu tiên của tệp, còn gọi là số ma thuật, để tìm hiểu xem nó có được nén hay không và sử dụng thuật toán nén.
Việc tar
triển khai được tìm thấy trên các Unix thương mại dựa trên mã AT & T ban đầu không hỗ trợ -z
cờ ở vị trí đầu tiên. Một ngoại lệ đáng chú ý là Solaris 11 tar
nơi phần mở rộng này đã được thêm vào, bao gồm khả năng phát hiện định dạng tệp.
tar
lệnh ban đầu (AT & T) không hỗ trợ -z
ở vị trí đầu tiên.
Các -z
tùy chọn không bắt buộc ở hai hiện thực nổi tiếng của tar: GNU tar và BSD tar (aka libarchive ). Phát hiện thuật toán nén cần thiết là chuyện nhỏ, được thực hiện bằng cách kiểm tra một vài byte đầu tiên của tệp đầu vào.
Việc bạn có đang sử dụng một hoặc một trong những triển khai đó hay không phần lớn phụ thuộc vào hệ điều hành bạn đang sử dụng: hệ thống dựa trên Linux hoặc hệ thống BSD (bao gồm cả OSX).
Tôi đã tóm tắt chi tiết về thời điểm các tính năng này được giới thiệu trên trang của tôi về tar so với tính di động .
Star giới thiệu phát hiện nén tự động và aprox giải nén tự động. 20 năm trước.
Ngày nay, một số triển khai tar khác, như gtar đã sao chép ý tưởng.
BTW: star hiểu các số ma thuật trong luồng nén để phát hiện phương pháp giải nén chính xác. Cũng lưu ý rằng gtar đã được báo cáo là không thành công khi lưu trữ nén được đọc từ stdin
thay vào đó từ một tệp có tên.
tar
hành xử: 9p.io/wiki/plan9/UNIX_to_Plan_9_command_translation/index.html