GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで100万枚の画像をあるディレクトリから別のディレクトリに移動する最速の方法は何ですか?

rsync これは、ローカル システムとリモート システムの両方を対象とする多くのクライアント/サーバー バックグラウンド作業を行うため、適切な選択ではありません。

mv おそらく最良の選択です。可能であれば、mv directory_old directory_new を試してください。 mv directory_old/* directory_new/ ではなく .この方法では、100 万の物ではなく 1 つの物を移動します。


find src_image_dir/ -type f -name '*.jpg' -print0 | xargs -0r mv -t dst_image_dir/ 
  • これにより、引数の展開がオーバーフローしません。
  • 必要に応じて、ファイル拡張子を指定できます。 (-name ...)
  • find -print0 xargs -0 で 名前にスペースを使用できます。
  • xargs -r mv は実行されません 何か動かなければ。 (mv ソースファイルが指定されていない場合は文句を言います)。
  • 構文 mv -t xargs で必要な、最初に宛先、次にソース ファイルを指定できます .
  • ディレクトリ全体の移動は、含まれるファイルの数に関係なく一定の時間で行われるため、もちろんはるかに高速ですが、
    • ソース ディレクトリが一瞬消えるため、問題が発生する可能性があります。
    • プロセスが現在のディレクトリを出力ディレクトリとして使用している場合 (移動しない場所からのフル パスを常に参照するのとは対照的に)、プロセスを再起動する必要があります。 (ログのローテーションと同じように ).

ところで、そんなに大量のファイルを一度に移動しなければならないのかと自問自答します。バッチ処理は過大評価されています。生成された瞬間に処理できるのであれば、大量の作業を蓄積しないようにしています。


2 つのディレクトリが同じファイル システムにある場合は、mv を使用します。 ディレクトリの内容ではなく、ディレクトリに。

それらが 2 つの異なるファイルシステムに存在する場合は、rsync を使用してください:

rsync -av /source/directory/ /destination

末尾の / に注意してください ソースで。これは、ディレクトリ自体ではなく、ディレクトリのコンテンツをコピーすることを意味します。 / を離れると オフにすると、ファイルはコピーされますが、/destination/directory という名前のディレクトリに保存されます。 . / を使用すると、ファイルは /destination になります。

rsync ルートとして実行した場合、またはファイルがあなたによって所有されている場合、ファイルの所有権を維持します。 mtime も維持します


Linux
  1. Python/Linux の方法で 2 つの画像を比較する

  2. すべてのファイルをあるディレクトリから別のディレクトリに移動 (および上書き) する方法は?

  3. Linuxにjdkをインストールする正しい方法は何ですか

  1. Linux で 2 つ以上のファイルを結合する最速の方法は何ですか?

  2. Linux の Active Directory に相当するものは何ですか

  3. Linux でサフィックス .d は何を意味しますか?

  1. すべてのファイル(非表示を含む)をあるディレクトリから別のディレクトリに移動するにはどうすればよいですか?

  2. Linux –論理ボリュームをあるボリュームグループから別のボリュームグループに移動しますか?

  3. Isoを抽出する最速の方法は?