web-dev-qa-db-ja.com

破損したtar(結果のフォルダーがパックされたファイルよりも小さい)

SuSe10.3サーバーバージョンで作成されたtarballに問題があります。

.tarファイルのサイズは6.5GBですが、Ubuntu 9.10で解凍すると、結果のフォルダーのサイズは1.5GBになります。

使用されるコマンド:tar cvf梱包用、tar xvf開梱用。

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

乾杯。

4
Om3g4

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

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

2
BuildTheRobots

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

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

0
BillThor

paxを試してみることをお勧めします。少なくとも、これはCentOSでの呼び方です。 IIRC、無効なtarメンバーをスキップすることにより、破損したTARファイルを処理できます。それ以外の場合は、Python標準ライブラリのtarfileモジュールを試して、これをプログラムで実行することをお勧めします。私は何かをしました。数年前のように。

0
Born To Ride

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

0