n-Archives.net

Robocopy コピー元に存在しないファイルをコピー先から削除する

目次

 

コピー元に存在しないファイルをコピー先から削除する方法

コピー元に存在しないファイルを削除する方法としては、/PURGE オプションがあります。しかし、/PURGE オプションを付けただけでは、

  • コピー元に存在するファイルは更新コピーする
  • コピー元に存在しないファイルは削除する

という両方の処理が行われてしまいます。

存在しないファイルを削除したいだけなのに、ファイルの更新処理も実行されてしまうので、工夫が必要です。

 

今回、「コピー元に存在しないファイルをコピー先から削除」のみを行うためには、/NOCOPYオプションを付けて、「コピー元に存在するファイルは新たに更新コピーする」は実行しないようにする必要があります。

robocopy <コピー元フォルダ> <コピー先フォルダ> /PURGE /NOCOPY

ただし、この場合、コピー元/コピー先ディレクトリ直下のファイルのみが処理の対象になり、サブディレクトリ配下については、処理は行われません。(robocopyのデフォルトの動作)

 

サブフォルダ配下も含め、コピー元に存在しないファイルをコピー先から削除する方法

/MIRを使った実行例

サブフォルダ配下も含めて、コピー元に存在しないファイルをコピー先から削除するためには、/MIR と組み合わせて実行します。

robocopy <コピー元フォルダ> <コピー先フォルダ> /MIR /NOCOPY

 

ただし、このコマンドは、コピー元、コピー先のフォルダ構造が同じである場合は問題ないのですが、そうでない場合は以下の点に注意が必要です。

  • コピー元に新しいフォルダが作成されていた場合、コピー先にフォルダが作成される。フォルダ配下にファイルが存在していなくてもフォルダが作成される。
  • コピー先にのみ存在するフォルダは削除される。フォルダ配下にファイルが存在していてもフォルダごと全て削除される。

いずれも、/MIR オプションの仕様です。

行わせたい動作が上記の通りであれば問題ないですが、コマンド実行にあたってはよくご確認ください。

 

/Sを使った実行例

フォルダの作成を行わせたくない場合、以下のコマンドで実行することが考えられます。

robocopy <コピー元フォルダ> <コピー先フォルダ> /S /PURGE /NOCOPY

/S オプションは「空のフォルダは作成しない」オプションです。/NOCOPYオプションを使うと、全てのフォルダが空のフォルダと認識されるため、新たにフォルダは作成されないことになります。

ただし、/PURGE オプションを付けているので、

  • コピー先にのみ存在するフォルダは削除される。フォルダ配下にファイルが存在していても全て削除される。

これは行われますので注意してください。

 

 



【関連記事・関連コンテンツ】

 

コメントをお送りください
お名前:
コメント:
コメントの公開: