tar:343398の唯一のゼロブロック


10

ubuntuターミナルでtar.gzファイルを抽出しようとしているときに、最後の文でエラーが発生しました:tar:343398の孤独なゼロブロック

この問題の解決策は何ですか?

回答:


18

すべてのtar.gzファイルで発生するか、これだけで発生するかによって異なります。この特定のファイルは破損している可能性があるため、適切に開くことができません。tarを使用して抽出zする場合は、アーカイブをgzipで圧縮するときに必要になるオプションを使用する必要がありますtar xzvf <file.tar.gz>。または、それを使って抽出することも試してみる価値がありますgunzip <file.tar.gz>

ファイルが破損しているかどうかを確認するには、を実行しgzip -t <file.tar.gz>ます。このコマンドはファイルのエラーをチェックし、エラーが見つかった場合はターミナルに表示されます。これにより、ファイルが破損しているかどうかがわかります。

ファイルが正常でエラーが再発する場合はzero blocks、GNU tarが予想するように、ファイルの末尾にペアがない場合に発生するtarの既知の問題である可能性があります。これに対する解決策は、-iを無視するオプションを追加することzero blocksです。したがってtar ixzvf <file.tar.gz>、問題はここに詳細に文書化れています。


1

stderrとstdoutを分離しないチャネル(android adb端末セッション)を介してstdout stderrの両方をパイプ処理したため、同じことが私にも起こりました。

こうすることで、いくつかのエラーメッセージがストリームに入れられました。これは誤ったコマンドでした:

  • 誤ったコマンド、adbシェルはstderrとstdoutをローカルにマージするだけです=>ゴミ!:
    adb shell tar -cf - /some/dir \| uuencode bla | uudecode -o - > backup.tar

  • 修正されたコマンド:
    adb shell tar -cf - /some/dir 2>/dev/null\| uuencode bla | uudecode -o - > backup.tar

stderrを/ dev / nullにリダイレクトするのを忘れた場合に、sshを介して次のクイックtarストリーミングのようなSSHを介して同様のコマンドを実行すると、同じことが起こります。

ssh user@host tar -czf /some/remote/path 2\>/dev/null > /local/path/to/file.tar.gz


1
良いキャッチ。ssh_configで設定した場合に発生RequestTTY yesします。で明示的に無効にすることができます-T Disable pseudo-tty allocation.私にとって、エラーはtar: Skipping to next headerもともと、--posix..
eMPee584の

0

先日、gzipされていないアーカイブを解凍しようとすると、このエラーが発生しました。ファイルのソースは私にはわかりませんでしたが、作成者がcat複数のtarを単一のtarに結合するために使用する可能性があると考えました。これにより、tar結合されたアーカイブの途中でユーティリティによってファイルの終わりのゼロマーカーが読み取られ、「単一のゼロブロック」エラーが表示されていました。

この場合、--ignore-zerosまたは-iオプションがこれらのエラーの抑制に役立つ場合があります。参照として、man tarまたはこのリンクを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.