突然古いファイルを復元する必要がありますが、一度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
答え1
以下を試してください。
file
gzip
アーカイブのコマンドを使用して、-pedデータとして認識されていることを確認してください。strace gunzip
ファイルを実行します。これにより、ファイルから読み取られた最後のバイトが印刷されるため、ファイルが破損した場所を特定するのに役立ちます。gunzip
以下のデバッグバージョンを実行してくださいgdb
。破損したセクションを修正してみてください(これを行うには非常に幸運である必要があります)、ファイルの最後まで続くことを確認してください。
破損の性質によっては、データを回復できない場合があります。
答え2
完全な回復は不可能です。 .zipのようなフォーマットはより良い保護と回復オプションを提供しますが、不完全です。
.tar.gzすべてのファイルを集めて圧縮を適用します。。圧縮各ファイルの圧縮を再開します。したがって、.zipファイルで圧縮ブロックが破損すると、そのブロックが属するファイルにのみ影響します。 .tar.gzでは、破損は圧縮が再開されるまですべての後続のファイルに影響を与えます。
答え3
リカバリの仕組みに関するいくつかの情報は、以下で確認できます。破損した.gzファイルを修復。
これを行うのに役立つツールもあります。gzip回復ツールキット(別名gzrecover)。
答え4
これを使用してください:https://github.com/arenn/gzrt
gzrecover foo.tar.gz
cpio -F foo.tar.recovered -i -v