web-dev-qa-db-ja.com

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

JPEG画像でいっぱいのディレクトリをtarします。

tar cvfz myarchive.tar.gz mydirectory

アーカイブを解凍すると:

tar xvfz myarchive.tar.gz

エラーが発生します:

tar: Unexpected EOF in archive

出力を見ると、特定のJPEG画像の途中で失敗しています。

何が悪いのですか?

16
Cyrille

面白い。問題を指摘する質問がいくつかあります。

1 /自分がターリングしているのと同じプラットフォームでターリングを解除していますか?異なるバージョンのtarである可能性があります(GNUおよびold-unixなど)?異なる場合は、風袋引きしたのと同じボックスでuntarできますか?

2/myarchive.tar.gzを単純にgunzipするとどうなりますか?それは動作しますか?多分あなたのファイルは破損/切り捨てられています。圧縮でエラーが発生した場合に気付くと思いますが、そうですか?

GNU tarソースに基づいて、find_next_block()が早めに0を返す場合にのみメッセージが出力されます。これは通常、切り捨てられたアーカイブが原因です。

10
paxdiablo

バイナリモードではなくアスキーモードでファイルをFTPで転送した可能性がありますか?そうでない場合、これは役立つかもしれません。

$ gunzip myarchive.tar.gz

そして、結果のtarファイルを使用してuntarします

$ tar xvf myarchive.tar

お役に立てれば。

7
Saradhi

Cronジョブによって生成される切り捨てられたtarファイルと同様の問題があり、標準にファイルをリダイレクトして問題を修正しました。

同僚との会話から、cronはパイプを作成し、標準出力に送信できる出力の量を制限します。私は自分のtarコマンドから-vを削除して自分の問題を修正しました。冗長性を大幅に減らし、エラー出力を他のcronジョブと同じ場所に保持しています。ただし、詳細なtar出力が必要な場合は、ファイルにリダイレクトする必要があります。

6
Jerome

私の場合、tarファイルのアップロードが完了する前にuntarを開始しました。

3
KawaiKx

同様のエラーがありましたが、私の場合、原因はファイル名の変更でした。 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圧縮されたファイルの名前を変更しても通常は壊れないため、私はまだ何が起こったのか正確にはわかりません。

0
user379462