Cách khôi phục tập tin tar.gz bị hỏng


11

Tôi đột nhiên cần khôi phục một tar.gztập tin cũ , nhưng ngay khi tôi thực hiện như vậy:

tar -zxvf filename.tar.gz

Tôi nhận được điều này:

gzip: stdin: invalid compressed data--format violated  
tar: Child returned status 1  
tar: Error is not recoverable: exiting now

8
Đó thực sự là một tarball được nén? Hãy thử filelệnh trên nó đầu tiên.
alex

1
Vâng, điều đó đã xảy ra với tôi hơn một lần khi tôi có một .tar.gzcái mà thực sự là một .tar, và thậm chí là một bản PDF.
vonbrand

Câu trả lời:


12

Những gì bạn nên thử là như sau:

  1. Sử dụng filelệnh trên kho lưu trữ để xem liệu nó có được nhận dạng là gzipdữ liệu không.
  2. Chạy strace gunziptrên tập tin. Điều này sẽ in các byte cuối cùng được đọc từ tệp có thể giúp bạn xác định điểm trong tệp nơi xảy ra tham nhũng.
  3. Chạy một bản sửa lỗi gunzipdưới gdb. Cố gắng sửa phần bị hỏng (bạn phải cực kỳ may mắn để có thể làm điều đó) và xem liệu nó có thể tiếp tục đến cuối tập tin không.

Tùy thuộc vào bản chất của tham nhũng, bạn có thể hoặc không thể khôi phục dữ liệu của mình.


gunzip filename.tar.gzđã làm cho tôi.
Ravi Dhoriya


2

Phục hồi hoàn toàn là không thể. Các định dạng như .zip cung cấp các tùy chọn bảo vệ và phục hồi tốt hơn, nhưng cũng không đầy đủ.

.tar.gz gộp tất cả các tệp lại với nhau và sau đó áp dụng nén. .zip khởi động lại nén cho mỗi tệp. Do đó, trong tệp .zip, một thiệt hại đối với khối nén chỉ ảnh hưởng đến tệp mà khối này thuộc về. Trong .tar.gz, thiệt hại sẽ ảnh hưởng đến tất cả các tệp tiếp theo cho đến khi quá trình nén được khởi động lại.


mà tôi đã suy nghĩ, giải thích tốt thx! Tôi tự hỏi nếu có các định dạng khác tốt như zip (nhưng với khả năng nén tốt hơn), nhưng zip luôn được nhận ra ở mọi nơi và có lẽ là lựa chọn tốt nhất liên quan đến phục hồi.
Sức mạnh Bảo Bình

1

Chạy zcat bad.tar.gz > some.tarvà giải nén nó. Đi qua phần bị hỏng của tập tin sẽ là khó khăn. Trang hướng dẫn cung cấp cho con trỏ định dạng, nhưng tôi sẽ tìm các tùy chọn khác trong Google.

Bạn có chắc chắn điều này được nén bằng gzip? Nó có thể phàn nàn vì nó không hiểu định dạng ...


1

Tất cả các chú chó con chỉ áp dụng để trích xuất thông tin từ đầu tập tin đến điểm xảy ra lỗi hoặc nơi tập tin bị cắt.

Thật không may, không ai nhận mô tả cách phục hồi một phần tệp / luồng sau khu vực tham nhũng. Có ai nhận chưa?


-1

sử dụng cái này: https://github.com/arenn/gzrt

gzrecover foo.tar.gz
cpio -F foo.tar.recovered -i -v

Lệnh của bạn dẫn đến một cpio: illegal option -- Fthông báo lỗi.
schily

1
cpio --help cung cấp cho bạn tùy chọn: -F, --file = [[USER @] HOST:] FILE-NAME Sử dụng FILE-NAME này thay vì đầu vào hoặc đầu ra tiêu chuẩn. NGƯỜI DÙNG và HOST tùy chọn chỉ định tên người dùng và máy chủ lưu trữ trong trường hợp lưu trữ từ xa
W4U

Bạn không nói về abpout cpio, nhưng về một bản sao với các tùy chọn cụ thể của nhà cung cấp, hãy xem, ví dụ schillix.sourceforge.net/man/man1/cpio.1.html Nếu ypou tuy nhiên nói về một bản sao thay vì bản gốc, bạn nên đề cập đến bản sao nào đang sử dụng.
schily

1
@schilly, tôi đang nói về việc cpiobao gồm trong debian. GNU cpio: link
W4U
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.