破損した tar (結果のフォルダーは圧縮されたファイルより小さい)

破損した tar (結果のフォルダーは圧縮されたファイルより小さい)

SuSe 10.3 Server バージョンで作成された tarball に問題があります。

.tar ファイルのサイズは 6.5 GB ですが、Ubuntu 9.10 で解凍すると、結果として得られるフォルダーのサイズは 1.5 GB しかありません。

使用されるコマンド:tar cvfパック用、tar xvfアンパック用。

おそらく誰かがこれを修正する方法を知っていたら、それは素晴らしいことです。

乾杯。

答え1

ディレクトリ内にシンボリックリンクまたはハードリンクがある場合、tar はそれぞれを別のファイルとして追加する可能性があります。その後、Linux ファイルシステムで解凍すると、リンクが復元され、すべてがより少ないスペースを占めるようになります。

Tar は圧縮用ではなく、複数のファイルを含むファイルを作成するためのものです。そのため、通常は gzip または bzip を介してパイプされます。

答え2

cpio を使用すると、より良い結果が得られる可能性があります。cpio は、大規模なバックアップに適しており、sym リンクと特殊ファイルを正しく処理するようにスクリプト化できます。

答え3

小さなファイルが多数ある場合、tar でブロッキングやディレクトリ オーバーヘッドが発生する可能性があります。重要な情報は、ソース ディレクトリの大きさです。tar は、ファイルにブロックを割り当てないことで、ファイル内の空き領域を圧縮している可能性があります。--apparent-sizeオプションを試してくださいdu

によって生成されたファイルのリストと抽出されたファイルを比較してみてくださいtar -tf。 で抽出して、tar -xf抽出時にエラーが発生するかどうかを確認します。 tar のコピーを再作成して、サイズがどれくらいかを確認します。

答え4

試してみることをお勧めしますパックス少なくとも、CentOSではこのように呼ばれています。私の記憶が正しければ、無効なtarメンバーをスキップすることで、破損したTARファイルを処理できます。それ以外の場合は、tarファイルPython 標準ライブラリのモジュールを使用して、これをプログラム的に実行します。数年前に似たようなことをやったことがあります。

関連情報