robocopy で更新なしファイルがコピーされる場合の対処法

スポンサーリンク

※当サイトは広告を利用しています。

Robocopy でファイルがコピーされる(コピー先のファイルを上書きする)条件は次の通りです。
  • コピー先に存在しないファイル
  • 名前が同じでも、更新日付が異なるファイル(新しいファイルだけではなく、コピー元の方が古くてもコピー対象となる)
  • 名前と日付が同じでも、サイズが異なるファイル
 
つまり更新されていないファイルはコピー対象になりません。

ところがPC⇒NASなど別のファイルシステム間でコピーすル場合に、更新していないはずのファイルが上書きコピーされる現象が発生することがあります。
中身は変わらないため内容に問題はありませんが、更新不要なファイルまでコピーされると処理時間が大幅に伸びるため無駄に時間が掛かることに。

 
スポンサーリンク

更新されていないはずのファイルがコピー対象になる」原因

この「更新されていないはずのファイルがコピー対象になる」原因は、FATファイルシステムの更新時刻精度にあります。

FATファイルシステムでは2秒の精度でしかファイルの作成時刻や更新時刻を記録できません。

※例えば”2020/7/12 10:00:00” と”2020/7/12 10:00:02”は同じ時刻とみなされる可能性がある、ということ。

 
そのためFATファイルシステムと他のファイル間でファイルをコピーすると更新時刻が最大2秒ずれることがあります。
例えば”2020/7/12 10:00:00” のファイルをコピーすると、コピー先ファイルのタイムスタンプが”2020/7/12 10:00:01”になる可能性があります。

コピー元のファイルは”2020/7/12 10:00:00”のままであるためコピー先ファイルと同じ内容・同じファイル名であるにも関わらず更新時刻が異なる状態に。

すると次にコピーする際にコピー対象とみなされ、更新されていなくても再びコピーが走ります。

 

コピーされないようにオプションが用意されている

更新時刻のずれが発生することを考慮し、Robocopyには2秒以内の誤差を無視するオプションが用意されています。
 
オプション「/fft」:2秒以内の誤差なら、時刻情報は一致していると見なされます

 
fftオプションを付ければFATファイルシステムと他のファイル間でコピーして更新時刻がずれたファイルでも、再度コピーされることはありません。

コマンド例はこちらです。
robocopy /copy:DT \\コピー元フォルダ \\コピー先フォルダ /s /e /FFT /W:3
 
 

コメント

タイトルとURLをコピーしました