gzip圧縮ファイルをtar.gzアーカイブに変換するには?

gzip圧縮ファイルをtar.gzアーカイブに変換するには?

小さなファイルがたくさん(約500万個)あるのに、それぞれgziptar.gz

  • ファイルを解凍して再圧縮するスペースが不足しているはずですtar.gz所定の位置に。縮小率は約15:1でかなり良いです。
  • CPU 時間があまり利用できないため、再圧縮に時間がかかることがあります。
  • ファイルを他の場所に移動または削除することはできません。重要な安全理由

だから。どうですか?

答え1

アーカイブを圧縮する必要はなく、すでに圧縮されているファイルをアーカイブに追加するだけです。

tar -cf archive.tar directory_with_compressed_files

答え2

少数のファイルを保存するのに十分なスペースがある場合は、チャンクとして保存するか、必要に応じて自動化することもできます。ファイルが次のように保存されているとします。

.
+-dir0000
| +-file0000.gz
| +-file0001.gz
| [...]
+-dir0001
| +-file1000.gz
| +-file1001.gz
[...]

各ディレクトリに対して以下を実行します(ファイルの共有ルートから)。

tar rf /path/to/archive_name.tar dir_name
rm -r dir_name

このアクションを自動的に実行することに同意する場合(試してみましたが、効果はありましたがfind無視できるエラーメッセージが表示されます)、次のことを試してください。

find * -maxdepth 1 -type d -exec sh -c "tar rf /path/to/archive_name '{}' && rm -r '{}'" \;

(いつものように、最初にテストディレクトリ構造でこれを試して、好きなように動作することを確認できます!)

あなたのディレクトリにスペースがある場合に備えて引用しました{}。フラットファイル構造がある場合-type d。まず、アーカイブをさまざまな部分に分けてください。+-execfind

結局のところ、すべてのファイルはアーカイブに移動されます。遅いですができます。

関連情報