PCの各種データをバックアップするためにrobocopyコマンドを使ったバッチを使っているのですが、いつも特定のファイルについて「コピー先に、より新しいファイルがあるためコピーしなかった」というログが残っており気持ちが悪かったのです。最初はFATとNTFSのタイムスタンプ精度が原因で起こっているんだろうと思って放置していたのですが、本日ふとログを読み返したところ現象が起こっているファイルは すべて拡張子が.eml であることに気付きました。何か嫌な予感がしたので少し調べてみたところ、以下のフォーラムを見つけました。
.emlファイルの更新日付がコピーと同時に更新されるWindowsの…… 仕様 ということのようですかね?うーん、かなり嫌な仕様ですが、バックアップのたびに無用なログが出るだけで、無駄なコピーは発生しません。.emlファイルをあまり大量にバックアップ対象にしていないので我慢することにします。
ちなみにバックアップ用のバッチは以下のような感じです。これをデスクトップに置いておき、気が向いたときにダブルクリックしています。
@echo off
setlocal
set LOG=%USERPROFILE%\robocopy-log.txt
set OPT=/FFT /FP /NS /NDL /TEE /NP /LOG+:%LOG%
set EXCLUDES=/XD .dropbox.cache /XF Thumbs.db /XD .TemporaryItems /XF .DS_Store /XF .apfile
set PIC_EXCLUDES=/XD ".Picasa3Temp" /XD "iPod Photo Cache" /XD "Apple TV Photo Cache"
:: robocopyのログが英語で出力されるように処理中はコンソールをUTF-8モードにしておく
chcp 65001
echo.>%LOG%
echo ------------------------------------------------------------------
robocopy M:\_backup T:\_backup %OPT% /S /PURGE
echo ------------------------------------------------------------------
robocopy T:\_backup P:\_backup %OPT% /S /PURGE
echo ------------------------------------------------------------------
robocopy T:\Pictures P:\Pictures %OPT% /S /PURGE %EXCLUDES% %PIC_EXCLUDES%
:: ログを表示
start %LOG%