robocopy の差分判定はタイムスタンプとファイルサイズ
robocopy の差分判定基準をタイムスタンプと紹介しているサイトがちらほらとありますが、タイムスタンプだけでは不十分です。
robocopy はファイルサイズもみています。
全く同じタイムスタンプのファイルでも、ファイルサイズが異なっていればコピー対象となります。
逆にタイムスタンプとファイルサイズが同じであれば、内容が異なっていても(例えばテキストの aaa が bbb になっていても)コピーはスキップされます。
タイムスタンプが異なればファイルサイズが同じでもコピー対象です。タイムスタンプが同じでファイルサイズが異なるっていう状況普通は無いので、そういう意味ではタイムスタンプだけを見ていると言いたい気持ちもわかります。
タイムスタンプ=更新日時
タイムスタンプと記載していますが実際には更新日時を指します。
更新日時が異なっていれば、それが新しい日時でも古い日時でもコピー対象となります。
もし更新日時によってコピーを制御したい場合、オプションがあるのでそれで制御します。
- /XN:新しいファイルを除外します。
- /XO:古いファイルを除外します。
更新日時が同じであれば、例え作成日時とアクセス日時が異なっていてもコピー対象とはなりません。
作成日時とアクセス日時は robocopy には全く影響しないと思ってよいでしょう。
PowerShell でも変更できるようですが、「Change Timestamp」というフリーソフトで変更するのが簡単です。
インストール不要で、日時を指定して対象のファイルかフォルダをドラッグするだけでタイムスタンプが書き換わります。悪いことに使えそうですね。
アーカイブビットについて
robocopy はアーカイブビットを使用しません。
つまり robocopy でコピー後もコピー元ファイルの「ファイルをアーカイブ可能にする」のチェックに変化はありません。
>アーカイブビットについて
>robocopy はアーカイブビットを使用しません。
とありますが、ほかのサイトではアーカイブビットを使用して
差分を取るとの情報がありますが…?
参考1:https://blog.ver001.com/robocopy-differential-backup/
参考2:https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/robocopy
お!情報ありがとうございます<(_ _)>
/A と /M オプションはがっつりアーカイブ属性見るみたいですね。知りませんでした。ありがとうございます!
となると「オプション無しだとアーカイブ属性を使用しない」が正しいですね。
デフォルトは更新日時とファイルサイズを確認、オプションでわざわざアーカイブ属性があるということはコピー速度が速くなる?もしくは意図的にバックアップソフトのバックアップ対象外にしたい時に使ったりする?かもしれません。再検証しますよ!!!感謝します!!!!!