Trích xuất một tập tin tar.gz trả về, tên Đây không giống như một kho lưu trữ tar.


29

Tôi có một tệp tar.gz và tôi muốn giải nén nó bằng thiết bị đầu cuối. Tôi đã sử dụng các lệnh sau: tar tvzf ldtp_3.5.0.orig.tar.gztar -xvzf ldtp_3.5.0.orig.tar.gz. Tuy nhiên, tôi nhận được cùng một kết quả cho cả hai tệp:

tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

Tôi xuất ra lệnh tệp cho thấy tệp gzip của nó:

$ file ldtp_3.5.0.orig.tar.gz 
ldtp_3.5.0.orig.tar.gz: gzip compressed data, from Unix

Tôi có thể giải nén nó bằng cách bấm chuột phải -> Trích xuất nhưng tôi muốn làm điều đó bằng cách sử dụng thiết bị đầu cuối. Bất cứ ai có thể cho tôi biết làm thế nào để làm điều đó?

Câu trả lời:


37

Nhìn vào lỗi mà bạn đang thấy cùng với thực tế là bạn thực sự có thể giải nén nó nói rằng tệp là tệp lưu trữ TAR / Gzip chính hãng, nhưng có lẽ không phải là TAR ngay lập tức được tạo sau Gzip.

Có nghĩa là, nếu bạn đã tải xuống cái này từ máy chủ web, đôi khi nén Gzip được áp dụng cho nội dung web ở cấp máy chủ để tăng tốc tải xuống nội dung. Nhưng nếu không được đặt đúng trên máy chủ để bỏ qua nội dung đã được nén như thế này, nó có thể vô tình nhân đôi tệp Gzip.

Với ý nghĩ đó tôi sẽ thấy nếu chỉ đơn giản là giải nén nó khỏi dòng lệnh để xem điều gì sẽ xảy ra. Sử dụng một lệnh như thế này:

gzip -d ldtp_3.5.0.orig.tar.gz

Và xem các tập tin kết quả là gì. Tôi có một cảm giác buồn cười sau khi bạn chạy lệnh đó, bạn sẽ không thấy một ldtp_3.5.0.orig.tarthư mục nào mà thay vào đó là một tệp có tên giống như nguồn ldtp_3.5.0.orig.tar.gz- nhưng có lẽ với sự thay đổi đã thay đổi? Nếu đó là trường hợp, nó thực sự được nhân đôi. Vì vậy, tại thời điểm này, ngay sau đó, không có Gzip, bạn có thể chạy tarlệnh bạn có như thế này:

tar -xvzf ldtp_3.5.0.orig.tar.gz

Và bây giờ nó nên giải nén đúng cách lưu trữ TAR đầy đủ.

Một cách khác để làm điều gì đó tương tự như quá trình hai bước là ống đầu ra của gzipđể tarnhư thế này:

gzip -dc ldtp_3.5.0.orig.tar.gz | tar -xvzf -

Các ctrong gzipcũng như -ở phần cuối của lệnh là chìa khóa:

  • Các clựa chọn cho gzipsẽ nói gzipđể giải nén vào dòng đầu ra tiêu chuẩn.
  • -cuối tarlệnh có nghĩa là sử dụng đầu vào tiêu chuẩn. Vì vậy, kết hợp với đầu -cvào gzip, đường ống sau đó sẽ lấy luồng đầu ra tiêu chuẩn được dẫn đến từ đó gzipvà kết nối nó với đầu vào tiêu chuẩn tar.

1
Tôi đã thử lệnh đầu tiên gzip -d ldtp_3.5.0.orig.tar.gzvà tôi (lẻ) nhận được một .tartập tin. Tuy nhiên, khi tôi dùng thử, tar -xvf ldtp_3.5.0.orig.tartôi gặp lỗi: tar: v: Cannot open: No such file or directory tar: Error is not recoverable: exiting now
TheRookierLearner

@TheRookierLearner Sau đó, điều gì xảy ra nếu bạn phải làm gì gzip -d ldtp_3.5.0.orig.tartrên ldtp_3.5.0.orig.tar?
JakeGould

Tôi đã thử gzip -d ldtp_3.5.0.orig.tar.gzvà tôi nhận được tin nhắn gzip: ldtp_3.5.0.orig.tar: unknown suffix -- ignored gzip: on.gz: No such file or directory gzip: the.gz: No such file or directory gzip: ldtp_3.5.0.orig.tar: unknown suffix -- ignored . Sau này tôi đã thử tar -xvzf ldtp_3.5.0.orig.tarvà nó đã hoạt động! Cảm ơn rất nhiều!
TheRookierLearner
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.