n-Archives.net

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

Table of Contents

 

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

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

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

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

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

 

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

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

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

 

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

/MIRを使った実行例

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

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

 

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

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

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

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

 

/Sを使った実行例

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

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

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

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

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

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

 

 



Related Articles

 

Submit your comment
Name:
Comment:
Submission type:



管理者より個人的に返信をご希望の方は、コメント中に必ずメールアドレスを記載してください。記載がないと返信できませんのでご注意ください。

If you want personal response from the author, please do not forget to write your email address in the comment. Otherwise, the author can not reply.

投稿されたコメントは手動で処理されるため、記事として登録されるまで1日程度かかります。

Submitted comments will be processed manually. So, please understand it will take about a day to publish your comment.