Linuxには、次の構造の2つのディレクトリimageとimage2があります。
/images/ad
/images/fe
/images/foo
...およびその他の4000フォルダ
もう一つはこんな感じです。
/images2/ad
/images2/fe
/images2/foo
...およびその他の4000フォルダ
これらの各フォルダには画像が含まれており、画像と画像2の下のディレクトリは同じ名前ですが内容は異なります。次に、すべての4000フォルダについて、/images2/adのイメージをImages/adに、/images2/fooをImages/fooにコピーしてマージする方法を知りたいです。
ベストアンサー1
これは仕事です。同期。ファイルをコピーする代わりにファイルを移動したくない限り、シェルループを使用して手動でこれを行うことには利点はありません。
rsync -a /path/to/source/ /path/to/destination
あなたの場合:
rsync -a /images2/ /images/
(の末尾のスラッシュに注意してくださいimages2
。そうでない場合はコピーされます/images/images2
。)
上記のコマンドは、同じ名前のイメージが両方のディレクトリに存在する場合は/images/SOMEPATH/SOMEFILE
上書きされます/images2/SOMEPATH/SOMEFILE
。古いファイルのみを置き換えるには、オプションを追加してください-u
。常にこのバージョンを維持するには、/images
このオプションを追加してください--ignore-existing
。
rsyncを使用してファイルを移動するには、/images2
オプションを渡すことができます--remove-source-files
。その後、rsync はすべてのファイルを順番にコピーし、完了すると各ファイルを削除します。これは、ソースディレクトリとターゲットディレクトリが同じファイルシステムにある場合に移動するよりもはるかに遅くなります。