web-dev-qa-db-ja.com

破損した.tar.gzアーカイブからファイルを復元するにはどうすればよいですか?

.tar.gzアーカイブに多数のファイルがあります。コマンドでファイルタイプを確認する

file SMS.tar.gz

応答を与える

gzip compressed data - deflate method , max compression

Gunzipでアーカイブを抽出しようとすると、しばらくするとメッセージが表示されます

gunzip: SMS.tar.gz: unexpected end of file

アーカイブの一部でも回復する方法はありますか?

26
Tom Melluish

本当にgzipファイルですか?最初に「file SMS.tar.gz」を実行して、それを検証します。

それから私は gzip Recovery Toolkit ページを読みます。

15
David Segonds

回復は可能ですが、破損の原因によって異なります。

ファイルが切り捨てられただけの場合、一部の結果を取得することはそれほど難しくありません。ただ走れ

gunzip < SMS.tar.gz > SMS.tar.partial

最後のエラーにもかかわらず、いくつかの出力が表示されます。

圧縮ファイルに大きな欠落ブロックが含まれている場合、それは基本的に不良ブロックの後では絶望的です。

圧縮ファイルが小さな方法で系統的に破損している場合(たとえば、バイナリファイルをASCIIモードで転送すると、ファイル全体で改行と改行が破壊されます)、回復は可能ですが、かなりの時間が必要です。カスタムプログラミングの場合は、他に手段がなく(バックアップがない)、データに多大な労力を費やす価値がある場合にのみ価値があります(私は成功しました)。このシナリオについて 前の質問

Zipアーカイブには複数の個別に圧縮されたメンバーがあるため、.Zipファイルの回答は多少異なります。したがって、より多くの希望があります(ほとんどの商用ツールはかなり偽物ですが、適切なデータを回復するのではなく、CRCにパッチを適用することで警告を排除します)。しかし、あなたの質問は、1つの大きなメンバーを持つアーカイブである.tar.gzファイルに関するものでした。

34
Liudvikas Bukys

ここでは、発生した可能性のあるシナリオの1つを示します。解凍できないtar.gzファイルがあり、解凍しようとするとエラーが発生しました。

gzip -d A.tar.gz
gzip: A.tar.gz: invalid compressed data--format violated

私はファイルmayが非バイナリ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つのスリムな可能性であり、試してみる価値があるかもしれません-そこにいる誰かを助けるかもしれません。

4
Anthony Palmer