web-dev-qa-db-ja.com

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

古い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
11
arrrrgv

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

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

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

12
alex

破損した.gzファイルの回復 で、回復のしくみに関するいくつかの情報を見つけることができます。

これを行うのに役立つツールもあります: gzip Recovery Toolkit aka gzrecover

3

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

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

2

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

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

1
vonbrand

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

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

1
Znik