破損した「tar.gz」ファイルを復元する方法


11

古いtar.gzファイルを突然復元する必要がありましたが、実行するとすぐに:

tar -zxvf filename.tar.gz

私はこれを手に入れます:

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

8
これは本当にgzipされたtarballですか?fileまずコマンドを試してください。
アレックス2011

1
はい、.tar.gz実際に.tar、さらにはPDF を取得したことは何度もありました。
フォンブランド2014

回答:


12

あなたが試すべきことは次のとおりです:

  1. fileアーカイブでコマンドを使用して、gzip-pedデータとして認識されるかどうかを確認します。
  2. strace gunzipファイルで実行します。これにより、ファイルから読み取られた最後のバイトが出力され、破損が発生したファイル内のポイントを特定するのに役立つ場合があります。
  3. デバッグビルド実行gunzipの下にgdb。破損したセクションを修正してみてください(それを行うには、幸運である必要があります)。ファイルの最後まで続くかどうかを確認します。

破損の性質に応じて、データを回復できる場合とできない場合があります。


gunzip filename.tar.gz私のために働いた。
Ravi Dhoriyaツヤン19'15


2

完全に回復することはできません。.zipのような形式は、より優れた保護と回復のオプションを提供しますが、完全ではありません。

.tar.gzはすべてのファイルをまとめて圧縮します。.zipは、各ファイルの圧縮を再開します。したがって、.zipファイルでは、圧縮ブロックに加えられた損傷は、このブロックが属するファイルにのみ影響します。.tar.gzでは、圧縮が何らかの形で再開されるまで、損傷は後続のすべてのファイルに影響します。


私が考えていたこと、良い説明thx!他にzipと同じくらい優れた形式(ただし圧縮率が高い)があるかどうかは疑問ですが、zipは常にどこでも認識され、おそらく回復に関する最良のオプションです。
Aquarius Power

1

を実行しzcat bad.tar.gz > some.tar、それを抽出します。ファイルの破損した部分を通過するの注意必要です。マニュアルページには形式へのポインタが記載されていますが、Googleで他のオプションを探します。

これはgzipで圧縮されていますか?形式を理解できないため、文句を言うかもしれません...


1

すべてのコピーは、ファイルの先頭から、エラーが発生した場所またはファイルが切り取られた場所に情報を抽出する場合にのみ適用されます。

残念ながら、破損した領域の後でファイル/ストリームの一部を回復する方法について誰も説明していません。そのレシピを受け取る人はいますか?


-1

これを使用してくださいhttps : //github.com/arenn/gzrt

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

コマンドの結果、cpio: illegal option -- Fエラーメッセージが表示されます。
schily

1
cpio --helpはオプションを提供します:-F、--file = [[USER @] HOST:] FILE-NAME標準の入力または出力の代わりにこのFILE-NAMEを使用します。オプションのUSERおよびHOSTは、リモートアーカイブの場合のユーザー名とホスト名を指定します
W4U

あなたはabpoutを話していませんcpioが、ベンダー固有のオプションを持つクローンについては、例えばschillix.sourceforge.net/man/man1/cpio.1.htmlを参照してください使っている。
schily 2018

1
@ schilly、cpiodebianへの組み込みについて話している 。GNU cpio:link
W4U
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.