robocopy は何をもって差分を判定(判断)しているのか。

robocopy の差分判定はタイムスタンプとファイルサイズ

robocopy の差分判定基準をタイムスタンプと紹介しているサイトがちらほらとありますが、タイムスタンプだけでは不十分です。

robocopy はファイルサイズもみています

全く同じタイムスタンプのファイルでも、ファイルサイズが異なっていればコピー対象となります。

逆にタイムスタンプとファイルサイズが同じであれば、内容が異なっていても(例えばテキストの aaa が bbb になっていても)コピーはスキップされます

MEMO

タイムスタンプが異なればファイルサイズが同じでもコピー対象です。タイムスタンプが同じでファイルサイズが異なるっていう状況普通は無いので、そういう意味ではタイムスタンプだけを見ていると言いたい気持ちもわかります。

タイムスタンプ=更新日時

タイムスタンプと記載していますが実際には更新日時を指します。

更新日時が異なっていれば、それが新しい日時でも古い日時でもコピー対象となります。

もし更新日時によってコピーを制御したい場合、オプションがあるのでそれで制御します。

  • /XN:新しいファイルを除外します。
  • /XO:古いファイルを除外します。

更新日時が同じであれば、例え作成日時アクセス日時が異なっていてもコピー対象とはなりません。

作成日時とアクセス日時は robocopy には全く影響しないと思ってよいでしょう

タイムスタンプの変え方

PowerShell でも変更できるようですが、「Change Timestamp」というフリーソフトで変更するのが簡単です。

インストール不要で、日時を指定して対象のファイルかフォルダをドラッグするだけでタイムスタンプが書き換わります。悪いことに使えそうですね。

アーカイブビットについて

robocopy はアーカイブビットを使用しません。

つまり robocopy でコピー後もコピー元ファイルの「ファイルをアーカイブ可能にする」のチェックに変化はありません。

2 COMMENTS

paradox

>アーカイブビットについて
>robocopy はアーカイブビットを使用しません。

とありますが、ほかのサイトではアーカイブビットを使用して
差分を取るとの情報がありますが…?

参考1:https://blog.ver001.com/robocopy-differential-backup/
参考2:https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/robocopy

返信する
おさべ

お!情報ありがとうございます<(_ _)>
/A と /M オプションはがっつりアーカイブ属性見るみたいですね。知りませんでした。ありがとうございます!

となると「オプション無しだとアーカイブ属性を使用しない」が正しいですね。

デフォルトは更新日時とファイルサイズを確認、オプションでわざわざアーカイブ属性があるということはコピー速度が速くなる?もしくは意図的にバックアップソフトのバックアップ対象外にしたい時に使ったりする?かもしれません。再検証しますよ!!!感謝します!!!!!

返信する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)