Robocopyは、ミラーリング時に宛先でスキップされたファイルを削除します

Aug 19 2020

Robocopyを使用して2つのフォルダーをミラーリングしようとすると、オプション/ MIRにより、ソースファイルが使用されているときに宛先のファイルが削除されます。具体的には、これはOutlookフォルダーをバックアップし、*。pstファイルが使用されている場合に発生します。

出力は次のとおりです。

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows                              
-------------------------------------------------------------------------------

  Started : Tuesday, 18 August 2020 18:58:28
   Source : P:\Outlook\
     Dest : D:\_SyncFolderTest\To\Outlook\

    Files : *.*
        
  Options : *.* /BYTES /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /J /R:0 /W:30 

------------------------------------------------------------------------------

                      23    P:\Outlook\
        Newer           183116800   AVArchive_2018.pst
        Newer           128009216   AVArchive_2019.pst
        Newer           42427392    AVArchive_2020.pst
        Newer           403801088   AVOutlook.pst
        New File          131072    ~AVArchive_2018.pst.tmp
        New File          131072    ~AVArchive_2019.pst.tmp
        New File          131072    ~AVArchive_2020.pst.tmp
        New File          131072    ~AVOutlook.pst.tmp

------------------------------------------------------------------------------

                Total    Copied    Skipped  Mismatch    FAILED    Extras
    Dirs :          1         0          1         0         0         0
   Files :         23         4         15         0         4         0
   Bytes : 3545771008    524288 2787892224         0 757354496         0
   Times :    0:00:00   0:00:00                        0:00:00   0:00:00


   Speed :             37449142 Bytes/sec.
   Speed :             2142.857 MegaBytes/min.
   Ended : Tuesday, 18 August 2020 18:58:28

AVOutlook.pstが新しいのは正しいですが、コピーできず、エラーが発生せず、dest内の古いバージョンが削除されます。そのため、バックアップされなかっただけでなく、以前のバックアップもなくなりました。終了コードは、問題が発生した唯一の手がかりです。8=一部のファイルまたはディレクトリをコピーできませんでした。

ミラーイメージを実現するには、destの古いファイルを削除して置き換える必要があることは理解していますが、エラーが発生しないのはなぜですか。また、ソースとdestのファイルが関連していることを認識しないのはなぜですか。これはRobocopyの欠点ですか、それとも設計上の決定ですか?より安全な方法はありますか?

回答

2 DavidPostill Aug 19 2020 at 00:38

これはRobocopyの欠点ですか、それとも設計上の決定ですか?

AVOutlook.pstが新しいのは正しいですが、コピーできず、エラーが発生せず、dest内の古いバージョンが削除されます。

これは設計上の決定であり、文書化されています。

Robocopyは、他のユーザーまたはアプリケーションによってロックされているファイルのコピーに失敗するため、/ R:0で再試行回数を制限すると、使用中のファイルをスキップしてコピーを高速化できます。

出典:Robocopy「RobustFileCopy」-WindowsCMD-SS64.com

より安全な方法はありますか?

はい、VSHADOWまたはDISKSHADOWを使用します。

Windowsボリュームシャドウコピーサービスは、開いているファイルをコピーできる唯一のWindowsサブシステムです。Robocopyはボリュームシャドウコピーサービスを使用しませんが、VSHADOWまたはDISKSHADOWで既に作成されているボリュームシャドウをバックアップできます。

出典:Robocopy「RobustFileCopy」-WindowsCMD-SS64.com

エラーは発生しません

それはあり、それも文書化されています(RobocopyはEXIT CODESを使用します):

= Windows8およびWindows10の新しいオプション

Robocopyの終了コード

出典:Robocopy「RobustFileCopy」-WindowsCMD-SS64.com

これらの終了コードを確認して、バッチファイルで適切なアクションを実行できます。