無用なファイルのコピーを防ぐために、ファイルの更新日時を取得して比較するということをプログラムから行ってみる、5回目です。まだ続くのか、という感じですね。
Time CapsuleのWindows共有にあるファイルでは、タイムスタンプのミリ秒の部分が常に55となる現象が起きていました。これがハード依存なのか、それともソフトによるものなのか、別のWindows共有で調べてみたいと思います。
今度のWindows共有は、BUFFALOのLinkStationです。こいつにあるファイルで、比較してみようというわけです。例によってプログラムは3回目と同じです。ファイルのパスを変更しただけです。
const _TCHAR *pathname2 = L"\\\\LS-QL850\\Backup\\macbookpro_win7\\user\\AppData\\Roaming\\justsystem\\Shuriken\\user\\";
さっそく実行してみました。
ミリ秒の部分が0になっていますね。どうやら、LinkStationはミリ秒部分に0を返す仕様のようです。サポートできないなら、0を返すのが自然というものですが、Time Capsuleはおかしなことをしているものです。
JustsystemのShurikenは、ファイルバックアップにミリ秒単位まで認識していたので、ネットワーク越しのバックアップでは常に全ファイルがコピーされるということが起きていたわけです。CopyToなどではネットワーク越しのバックアップなどがうまく動いていますので、あえてミリ秒単位は捨てていたのではないでしょうか?(推測です)
仕様上はミリ秒単位の時間を返すから、普通に考えればそこまで比較すればいいと思うのですが、何でも仕様上正直にやればいいというもんじゃないという話ですね。もちろん、ミリ秒単位を捨てていますから、ミリ秒単位の違いしかない場合には、同じ時間と見なされるリスクがあります。
このへんの妥協点を探るのがうまいと、使っていて自然と感じるソフトウェアとなるのではないでしょうか。