同じコンピュータに対して、異なる日付の何百ものバックアップを含むバックアップディスクがあります。バックアップはrsyncとハードリンクを使用して行われます。つまり、ファイルが変更されていない場合、バックアップスクリプトは以前のバックアップのファイルへのハードリンクを生成します。したがって、ファイルがまったく変更されない場合、デフォルトではバックアップディスクにコピーがありますが、各日付のバックアップを表す各ディレクトリにそのファイルへの100個のハードリンクがあります(たとえば、、、back-1
... back-2
)back-n
。合理化したい場合は、一部を削除できますが、すべては削除できません。back_5
、、back_6
...を削除したいとしますback_10
(たとえば、実際のシナリオにはより多くの項目があります)。次に、次のように並列化しようとします。
echo back_5 back_6 back_10 | xargs -n 1 -P 0 rm -rf
数時間かかります。それではこれを行うより速い方法はありますか?
ベストアンサー1
どのように使用できるかわかりません。パラメータこれはまったく遅くはありません。私のマンページには、-Pがプロセス数で、-nが引数数であることがわかります。特別な値がないので無視-P0
することができます(運が良ければプロセスはゼロであるため、24時間何も説明されません!)。そして-n1
あなたが実装する(2)各ファイル名について、これはおよそ最も遅いです。
これを並列化すると、多くの利点が得られると考えられます。私の考えでは、
$ echo filenames ... | xargs rm -rf
十分でしょう。-P4
必要に応じていくつかの値を試すことができます。渡すいいえコマンドライン引数の数を制限すると、呼び出しが最小限に抑えられ、/bin/rm
ディスクキャッシュを介して順次進行する可能性があります。