web-dev-qa-db-ja.com

tar:予期しないEOFアーカイブ内

.tar.gzファイルをuntarしようとしましたが、このエラーに遭遇しました:

gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

tar.gzファイルには.tarファイルが含まれており、解凍すると次のようになります。

tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

–ignore-zeros–ignore-failed-readの両方を試しましたが、どちらも機能しませんでした。

破損している場合でも、このファイルを抽出する方法はありますか?

問題のファイルタイプ:.tar.gz:UNIXシステムからのGzip圧縮データ。

6
iLinux85

2つの項目を確認します。

(1)FILE INCOMPLETEはダウンロードの失敗が原因ですか?再度ダウンロードし、wgetを使用している場合は-cオプションを使用します。 (常に起こります)。

(2).tarまたは.tar.gzファイル名に不正な文字がありますか?アーカイブ名は、シンプルで短く、文字と数字で構成することをお勧めします。 (常に起こります)。したがって、ファイルの名前を変更するだけです。これは最近、アーカイブ名の一部として時刻/日付スタンプを含めると便利だと思ったので、私を釘付けにしました。悪いアイデア!

8
SANDPOND

あなたはしません。ファイルが切り捨てられているようです。それはどのくらい長いですか?最初の数バイトしかない場合は、これで完了です。

2
psusi

作成したのと同じプラットフォームで.tar.gzファイルを解凍していますか? Solarisに同梱されている非GNUバージョンのtarなどの古いUnixバージョンのtarと、GNU Linuxに同梱されているtarなど)の間にはいくつかの違いがあります。 GNU tarでアーカイブを解凍します。GNU tarでアーカイブを作成するのが最善です。

システムはどのようにディスク容量を探しますか?アーカイブを作成したときにディスクがいっぱいでしたか、それともアンパックしようとしたときにディスクがいっぱいでしたか?

cronジョブでアーカイブを作成しましたか?出力リダイレクトがない場合、cronは、STDOUTで許可される出力サイズの制限により、アーカイブに対してファンキーなことを実行できます。 cronでアーカイブを作成していて、tar-vを使用している場合は、STDOUTをファイルにリダイレクトし、STDERRもリダイレクトしてみてください。それが役立つかどうかを確認します。 tar -cvf archive.tar.gz /path/ 1>archive.stdout.log 2>archive.stderr.logまたはそのようなもの。

0
Tim Kennedy

この問題に対する私の解決策は、tarアーカイブの名前を2回変更することでした。ばかげているように聞こえるかもしれませんが、私にとってはうまくいき、再アーカイブの時間を大幅に節約できました。

OPによって報告されたエラーを生成する「STRING152_20200221.tar.gz」という名前の9 GBの大きなtar gzipアーカイブがありました。上記でアドバイスしたように、名前を「STRING.tar.gz」に変更しました。エラーが続く。次に、名前を元の名前「STRING152_20200221.tar.gz」に戻し、正常にアーカイブ解除しました。

名前以外のアーカイブの操作は行われませんでした。

私のtarバージョンは「tar(GNU tar)1.26」です。私はCentOにも参加しています(CentOS Linuxリリース7.4.1708(コア))

0
user3804598