多くのファイルを含むディレクトリがあります。全体的に、これらのファイルは数ギガバイトのスペースを占めています。このディレクトリを圧縮したいです。
ただし、ディレクトリを単一のファイルに圧縮するとファイルの移動が困難になるため、複数のファイルが必要です。
私は次のことができます:
tar cvzf - dir/ | split --bytes=200MB - sda1.backup.tar.gz.
しかし、データを回復するには、すべてのバックアップファイルが必要かどうかは心配です。私は、各ファイルがソースデータの一部を含む独自の独立した単位になることを好みます。
私が考える1つの方法は、各入力ファイルのサイズを計算し、最大サイズに達するまでファイルをリストに貪欲に追加するスクリプトを作成することです。次に、ファイルのリストをtarして新しいリストを起動します。すべてのファイルがtarに含まれるまでこれを繰り返します。その後、タールを独立して抽出できます。
これは他の質問と重複しません。これは、アーカイブ全体の各部分がそれ自体有効なアーカイブであり、各ファイルを必要とせずに書き換えることができる方法でこれを行う方法が特に不思議であるためです。共同アーカイブ。
このようなことができるユーティリティはありますか?
答え1
tar
分割後の部分ファイル処理が可能です。これらのアーカイブの一部を復元しようとすると、最初は利用できなかったアイテムはスキップされ、最後にそれらの間のすべての部分が正しく復元されることがわかります。tar
テープ長オプションを使用してアーカイブを作成するときに、アーカイブを分割するように指示できます。最大サイズのチャンクに分割してtarアーカイブを作成します。もっと学ぶ。
これよりも優れた独立したアーカイブ部分を作成できるユーティリティがあります(サイズ制限がアーカイブに最大のファイルを保存するのに十分な大きさの場合)。残念ながら、私が知っているユーティリティはすべての要件を満たしていません。ほとんどのプラットフォームで利用可能zipsplit
zipファイルを分割できますが、最大2 GBのアーカイブのみを処理できます。プログラム9ではtarsplit
tarballを分割しますが、使用しているシステムに簡単に移植できるかどうかはわかりません(Plan 9を使用していないようです...)。