3 TB外付けハードドライブに、2.7 TB比較的小さなファイルを含むディレクトリがあります。この2.7を圧縮したいTBディレクトリを削除して、圧縮バージョンのみを保持します。問題は、圧縮されていないディレクトリを最初にZip
、次にrm
するための十分なストレージがないことです。
この問題を回避する方法はありますか、または操作のためにさらに多くのストレージを取得する必要がありますか?
Tarの--remove-files
引数を試すことができます。ディレクトリFOOのすべてを圧縮したい場合は、次のようにします:tar -czf FooCompressed.tar.gz --remove-files FOO
議論は説明した:
-j
に、LZMA(xz)の場合は-J
に切り替えることができますディレクトリ内の最大のファイルが300GB(空き容量)未満の場合、最も簡単なオプションは、アーカイブを作成するのではなく、ファイルを個別に圧縮することです。何かのようなもの
find directory -type f \! -name '*.xz' -print 0 | xargs -0 xz -9
圧縮レベル9でdirectory
を使用してxz
のすべての非圧縮ファイルを圧縮します。これにより、ファイルが1つずつ対応する圧縮バージョンに置き換えられ、.xz
拡張子が追加されます(したがってfoo.txt
はfoo.txt.xz
になります)。
実際、これは、利用可能な空き容量よりも小さいファイルが十分にある限り、最大のファイルが利用可能な空き容量よりも大きい場合でも機能します。小さなファイルを圧縮することから始めます。 (うまくいけば)最大のファイルを処理するのに十分な空き領域があること。
私は通常Zipファイルを作成することはないので、私はエキスパートではありませんが、デフォルトではZip
のように見えますが、ファイルをアーカイブに追加するだけなので、(nested-rm
コマンドが含まれている可能性があります危険-データを危険にさらす前に自分自身をテストしてください):ディレクトリ内のfor f in $(ls --sort=size --reverse); do Zip -9 archive.Zip $f; rm $f; done
、おそらくそれを実行できます。
ステージ1〜3で何かが発生し、ステップ4で元のファイルがすべて失われる