スペースを節約するために複数のステップに分割tarアーカイブを作成するには?

スペースを節約するために複数のステップに分割tarアーカイブを作成するには?

tarアーカイブを作成しようとしている非常に大きなフォルダがあります。問題は、アーカイブ全体を保存する余分な空き容量が不足しているため、一度に100〜200 GBのアーカイブチャンクを作成して個別にクラウドストレージに転送したいということです。 HDDがいっぱいにならないように、新しいチャンクが作成されるタイミングを制御できなければなりませんが、分割タールボールを生成するすべてのコマンドは、常に同じディレクトリに一度にすべてのチャンクを生成することがわかりました。

私が見つけた最も近い解決策は次のようになりました。この問題ただし、すべての応答はサイズではなくファイル数に基づいて保持されます。これは、ファイルサイズが均等に分散されないため、ユースケースにとって重要です。

ベストアンサー1

tar次のオプションで使用できます。

--新しいボリュームスクリプト=注文する
--テープ長さ=窒素

各ボリュームの終わりに、処理されたばかりのボリュームがわかる環境変数がいくつかあるスクリプトを呼び出します。確認するマニュアルページTAR_VOLUME完全なリストを表示するには、出力ファイルの名前を変更するか、現在のボリュームを追跡する必要がある場合は、少なくともこの変数が便利です。

TAR_VOLUME

    処理中のボリュームのシリアル番号tar(マルチボリュームアーカイブを読み取る場合は設定)

スクリプトがゼロを返す場合は続行tarし、そうでない場合は停止します。

たとえば、最大サイズが20Mの各ボリュームを作成し、制限に達するたびにスクリプトを呼び出します。

tar cvf /tmp/volume.tar /path/to/files/ --new-volume-script=/path/to/myscript.sh --tape-length=20M

スクリプトは単純なものでもスクリプトから転送することもできます(終了すると上書きされるため、echo "Next volume";readボリュームの名前を変更します)。/tmp/volume.tar

一方、flagを使用する必要があります--multi-volume。これを怠ると、tarはエラーとともに停止します(誰かがエラーを検索する場合に備えてこの内容を残します)。

tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
tar xvf /path/to/transferred.volume --multi-volume
Prepare volume #2 for /path/to/transferred.volume and hit return: 

tar新しいボリュームを入力するように求められます。Enterを押すと/path/to/transferred.volume再び点灯します。

おすすめ記事