JPEG画像でいっぱいのディレクトリをtarします。
tar cvfz myarchive.tar.gz mydirectory
アーカイブを解凍すると:
tar xvfz myarchive.tar.gz
エラーが発生します:
tar: Unexpected EOF in archive
出力を見ると、特定のJPEG画像の途中で失敗しています。
何が悪いのですか?
面白い。問題を指摘する質問がいくつかあります。
1 /自分がターリングしているのと同じプラットフォームでターリングを解除していますか?異なるバージョンのtar
である可能性があります(GNUおよびold-unixなど)?異なる場合は、風袋引きしたのと同じボックスでuntarできますか?
2/myarchive.tar.gzを単純にgunzipするとどうなりますか?それは動作しますか?多分あなたのファイルは破損/切り捨てられています。圧縮でエラーが発生した場合に気付くと思いますが、そうですか?
GNU tarソースに基づいて、find_next_block()
が早めに0を返す場合にのみメッセージが出力されます。これは通常、切り捨てられたアーカイブが原因です。
バイナリモードではなくアスキーモードでファイルをFTPで転送した可能性がありますか?そうでない場合、これは役立つかもしれません。
$ gunzip myarchive.tar.gz
そして、結果のtarファイルを使用してuntarします
$ tar xvf myarchive.tar
お役に立てれば。
Cronジョブによって生成される切り捨てられたtarファイルと同様の問題があり、標準にファイルをリダイレクトして問題を修正しました。
同僚との会話から、cronはパイプを作成し、標準出力に送信できる出力の量を制限します。私は自分のtarコマンドから-vを削除して自分の問題を修正しました。冗長性を大幅に減らし、エラー出力を他のcronジョブと同じ場所に保持しています。ただし、詳細なtar出力が必要な場合は、ファイルにリダイレクトする必要があります。
私の場合、tarファイルのアップロードが完了する前にuntarを開始しました。
同様のエラーがありましたが、私の場合、原因はファイル名の変更でした。 gzip圧縮されたファイルfile1.tar.gz
を作成し、tar -uvf ./combined.tar ./file1.tar.gz
を使用して別のtarfileで繰り返し更新していました。 combined.tar
を展開してfile1.tar.gz
を展開しようとすると、予期しないEOFエラーが発生しました。
タールの前後でfile
の出力に違いがあることに気づきました:
$file file1.tar.gz
file1.tar.gz: gzip compressed data, was "file1.tar", last modified: Mon Jul 29 12:00:00 2019, from Unix
$tar xvf combined.tar
$file file1.tar.gz
file1.tar.gz: gzip compressed data, was "file_old.tar", last modified: Mon Jul 29 12:00:00 2019, from Unix
そのため、最初にcombined.tar
を作成したときにファイルに別の名前が付けられているようで、tar更新機能を使用しても、gzipされたファイル名のメタデータが上書きされません。解決策は、combined.tar
を更新するのではなく、最初から再作成することでした。
Gzip圧縮されたファイルの名前を変更しても通常は壊れないため、私はまだ何が起こったのか正確にはわかりません。