複数のファイルから固定サイズの圧縮ファイルセットを作成する

複数のファイルから固定サイズの圧縮ファイルセットを作成する

Linuxサーバーにアーカイブしたい大容量ファイルセットがあります。このファイルを1GBの圧縮ファイルセットに圧縮する必要があります。

gzipを使用してファイルを圧縮していますが、実際にファイルを圧縮するまでは、圧縮フォルダの最終サイズを知ることはできません。圧縮ファイルの最終サイズを取得するには、次のコマンドを使用しましたが、目的の最終サイズが得られるまで新しいファイルを追加して圧縮する必要があるため、それほど効率的ではありません。

tar -czf - /path/to/compressed-directory | wc -c

これを行う効率的な方法はありますか?または、個々のファイルを圧縮してから、単一の圧縮ファイルを使用して最終アーカイブを作成することを検討する必要がありますか?

答え1

アーカイブに次のファイルを追加すると、1 GBの制限を超えるかどうかを判断するための試行錯誤以外の方法はありません。また、圧縮ファイルが1 GBを超える可能性があります。この場合、目的の操作を実行できない可能性があります。

splitすべてのファイルのtar.gzアーカイブを1 GBチャンクに分割することをお勧めします。各断片を個別に抽出することはできません。代わりに、抽出のためにもう一方の端で1つの大きな.tar.gzに再組み立てする必要があります。

例えば:

tar -czf - /path/to/whatever | split -b 1024m - prefix

ここでprefix生成された分割ファイルのファイル名の前半は文字です。反対側の端を再組み立てして抽出します。

cat prefix* | tar -xzf -

関連情報