破損した.tar.gzアーカイブからファイルを回復するにはどうすればよいですか?
質問
.tar.gzアーカイブに多数のファイルがあります。コマンドを使用してファイルの種類を確認する
file SMS.tar.gz
応答を与える
gzip compressed data - deflate method , max compression
gunzipでアーカイブを抽出しようとすると、しばらくしてメッセージが表示されます
gunzip: SMS.tar.gz: unexpected end of file
アーカイブの一部でも復元する方法はありますか?
解決
gzipファイルであることを確認しますか?最初に「file SMS.tar.gz」を実行して、それを検証します。
次に、 gzip Recovery Toolkit ページを読みます。
他のヒント
リカバリは可能ですが、破損の原因によって異なります。
ファイルが切り捨てられている場合、部分的な結果を取得するのはそれほど難しくありません。ただ実行する
gunzip < SMS.tar.gz > SMS.tar.partial
これは、最後のエラーにもかかわらず出力を提供します。
圧縮ファイルに大きな欠落ブロックがある場合、基本的に不良ブロックの後には絶望的です。
圧縮ファイルが小さな方法で体系的に破損している場合(たとえば、ファイル全体でキャリッジリターンと改行を壊すASCIIモードでバイナリファイルを転送する場合)、回復することは可能ですが、かなりのカスタムプログラミングが必要です。他に頼ることができない(バックアップがない)場合にのみ価値があり、データに多大な労力を費やす価値があります。 (成功しました。)前の質問でこのシナリオに言及しました。
zipアーカイブには個別に圧縮された複数のメンバーが含まれているため、.zipファイルの答えは多少異なります。したがって、より多くの希望があります(ほとんどの商用ツールはかなり偽物ですが、良いデータを回復するのではなく、CRCにパッチを当てることで警告を排除します)。しかし、あなたの質問は.tar.gzファイルに関するものでした。これは1つの大きなメンバーを含むアーカイブです。
これは、発生した可能性のあるシナリオの1つです。解凍しないtar.gzファイルがあり、解凍しようとするとエラーが発生しました:
gzip -d A.tar.gz
gzip: A.tar.gz: invalid compressed data--format violated
ファイルは元々非バイナリftp接続を介して アップロードされる可能性があることがわかりました(確かではありません)。
ソリューションは、unix dos2unix
ユーティリティを使用して比較的簡単でした
dos2unix A.tar.gz
dos2unix: converting file A.tar.gz to UNIX format ...
tar -xvf A.tar
file1.txt
file2.txt
....etc.
うまくいきました! これは1つのスリムな可能性であり、試してみる価値があるかもしれません-それは誰かを助けるかもしれません。