Trong trường hợp nào thì gunzip & tar xf hoạt động nhưng tar xzf không thành công?


9

Để minh họa điểm: Tôi đã tải xuống thư viện LEDA từ trang web của công ty . Sử dụng tar -xzf trên nó không thành công:

$ tar -xzf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz 
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

Tuy nhiên, gunzip theo sau bởi tar -xf chỉ hoạt động tốt:

$ gunzip LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz
$ tar -xf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar
# no error

Bất cứ ai cũng có thể cho tôi biết lý do tại sao điều này có thể? - Tôi muốn tarlệnh tiêu chuẩn hoạt động mọi lúc.


Hệ điều hành nào? IIRC có các Unix tarkhông triển khai -z
Bananguin

@ user1129682 Từ trang web của công ty, có vẻ như nó chỉ có các tùy chọn cho Linux và Win ...
MattDMo

Nếu tar của bạn không hỗ trợ z, thay vào đó hãy sử dụng một đường ống: gunzip < archive.tar.gz | tar -xnên hoạt động ở mọi nơi.
frostschutz

Nếu bản sao của tarbạn không hỗ trợ giải nén gunzip, thay vào đó bạn có thể thực hiện các thao tác sau : gunzip -c $file | tar -x. Nó là phổ biến để bọc nó trong một chức năng vỏ.

1
Tôi vừa tải xuống kho lưu trữ đó và thực sự tar xzfcó lỗi, trên Debian GNU / Linux (tất nhiên là sử dụng gnutar). Lạ
derobert

Câu trả lời:


12

Điều dường như đã xảy ra là họ đã nén gấp đôi kho lưu trữ.

Nếu bạn chạy filetrên tệp gunzip'd, bạn sẽ thấy nó vẫn là một kho lưu trữ gzip. Và nếu bạn đổi tên nó thành .gz một lần nữa, bạn có thể gunzip lại.

Có vẻ như gần đây gnu tar sẽ tự động thêm -ztùy chọn, với điều kiện đầu vào là một tệp. Vì vậy, đó là lý do tại sao nó hoạt động mà không có -ztùy chọn sau khi bạn đã chạy gunzipmột lần, tar tự động thêm nó.

Hành vi này được ghi lại, từ trang thông tin:

"Đọc lưu trữ nén thậm chí còn đơn giản hơn: bạn không cần chỉ định bất kỳ tùy chọn bổ sung nào vì GNU` tar 'tự động nhận dạng định dạng của nó. [...] Thuật toán nhận dạng định dạng dựa trên "chữ ký", một chuỗi byte đặc biệt trong bắt đầu tập tin, cụ thể cho các định dạng nén nhất định. "

Đó là từ §8.1.1 "Tạo và đọc tài liệu lưu trữ nén."


Phát hiện rất tốt! Khẳng định với tất cả sự kết hợp của gunzip và tar.
Michael Schubert
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.