1. ホーム
  2. ブログ
  3. データ活用
  4. データ連携と統合を科学するブログ
  5. Windowのファイル更新日時(後編) OSによって更新日時の表示が異なる?

Windowのファイル更新日時(後編) OSによって更新日時の表示が異なる?

こんにちは。近藤です。

 

今回の内容:

前回は、コピーによってファイルの更新日時自体が変わってしまった例を取り上げしました。

 

前回投稿 「Windowのファイル更新日時(前編) 
ファイルを別のドライブに置いたら更新日時が変わった?」
はこちら

 

今回は、予告どおり更新日時が変わってしまったファイル同士をWindowsエクスプローラーがどう処理するかと、「更新日時」が変わっていないのに、違う更新日時に見えてしまう例、です。

 

Windowsエクスプローラーで見てみたらどうか?:

今回の例では、プログラムから更新日付を確認した場合、でしたが、Windowsエクスプローラーではどういう動作をするのでしょうか?Windows Server 2012 R2とWindows 7の、2つの環境で確認した例を示します。

 

Windows Server 2012 R2では:

Windows Server 2012 R2では、ファイルシステムに「NTFS」「ReFS」「FAT」「FAT32」「exFAT」を使用できます。そこで、別のNTFSファイルシステムのマシンで作成したテストデータをそれぞれのファイルシステムにコピーし、それを「ファイルのプロパティ」で表示してみます。
(作成日時とアクセス日時はファイルコピー時に書き換わるため、下記の画面キャプチャでは、更新日時のみ確認してください。)

 

  • NTFS

     

    (もとのファイルと同じ更新日時)

  • ReFS

     

    (NTFSと同じ更新日時)

  • FAT

     

    (NTFSの更新日時に最も近い、FATが扱える未来日時)

  • FAT32

     

    (NTFSの更新日時に最も近い、FAT32が扱える未来日時)

  • exFAT

     

    (FAT / FAT32と同じ更新日時になっている)

それぞれの更新日時を見てみると、NTFSで「2014/12/04 19:50:59」に更新されたファイルは、

  • NTFS / ReFS … 「2014/12/04 19:50:59」
    (=もとのNTFSファイルの更新日時と同じ)
  • FAT / FAT32 … 「2014/12/04 19:51:00」
    (=もとのNTFSファイルの更新日時に最も近い、FATが扱える未来日時)

となっており、前回記事の『ファイルシステムごとのタイムスタンプ』にて説明したとおりの更新日時になっています。
ところが、exFATでは、

  • exFAT … 「2014/12/04 19:51:00」

となっています。
exFATでは、更新日時は10ミリ秒単位で扱えるので、「2014/12/04 19:50:59」となりそうなのですが、そうではなく、「2014/12/04 19:51:00」という、FAT /FAT32と同じ更新日時(アクセス日時もFAT / FAT32)になっています。
どうやら、Windowsでは、exFATファイルシステムが仕様として持っているタイムスタンプの精度まで使用せず、FAT /FAT32と同じ「更新日時:2秒、アクセス日時:1日」までと扱っているようです(秒以下の桁は常に未使用でした)。

 

次に、Windowsエクスプローラー上で、異なるファイルシステム間で、上書きコピーを行ってみます。

  • NTFSとReFSの間で上書きコピーを行うと、同一のファイルと判断されます。

     

    (「2014/12/04 19:50:59」なので、「2014/12/04 19:50」と表示されています)

  • FATとFAT32の間で上書きコピーを行うと、同一のファイルと判断されます。

     

    (「2014/12/04 19:51:00」なので、「2014/12/04 19:51」と表示されています)

  • FATとexFATの間で上書きコピーを行うと、同一のファイルと判断されます。

     

    (「2014/12/04 19:51:00」なので、「2014/12/04 19:51」と表示されています)

  • NTFSとexFATの間で上書きコピーを行うと、更新日付が異なると判断されます。

     

    (NTFSは「2014/12/04 19:50:59」、exFATは「2014/12/04 19:51:00」なので、exFATの方が新しいファイルだと判断されています)

Windowsエクスプローラーを使用したコピーにおいても、もとの更新日時を持つNTFS / ReFSと、繰り上がった更新日時を持つFAT / FAT32 / exFATが、それぞれ別の更新日時として扱われていることがわかります。

 

Windows 7では:

Windows 7は、ファイルシステムに「NTFS」「FAT」「FAT32」「exFAT」が使用できます。Windows Server 2012 R2のときと同様に、別のNTFSファイルシステムのマシンで作成したテストデータをそれぞれのファイルシステムにコピーし、それを「ファイルのプロパティ」で表示してみます。

  • NTFS

    (もとのファイルと同じ更新日時)

  • FAT

    (NTFSの更新日時に最も近い、FATが扱える未来日時)

  • FAT32

    (NTFSの更新日時に最も近い、FATが扱える未来日時)

  • exFAT

    (Windows Server 2012 R2のときと同様、FAT / FAT32と同じ更新日時になっている)

このように、ファイルのプロパティで表示される更新日時は、Windows Server 2012 R2のときと同じです。

 

次に、Windowsエクスプローラー上で、異なるファイルシステム間で、上書きコピーを行ってみます。

  • FATとFAT32の間で上書きコピーを行うと、同一のファイルと判断されます。

    (「2014/12/04 19:51:00」なので、「2014/12/04 19:51」と表示されています)

  • FATとexFATの間で上書きコピーを行うと、同一のファイルと判断されます。

    (「2014/12/04 19:51:00」なので、「2014/12/04 19:51」と表示されています)

  • NTFSとFATの間で上書きコピーを行うと、Windows Server 2012 R2のときと異なり、同一のファイルと判断されます。

さて、この「ファイルのコピー」画面で表示されている更新日時、Cドライブの方はNTFS上のファイルなのですが、おかしいですよね?
実際のファイルの更新日時は
 2014/12/04 19:50:59
で、ファイルのプロパティ画面の更新日時も
 2014/12/04 19:50:59
と表示されていたのに、上の「ファイルのコピー」画面では、更新日時が
 2014/12/04 19:51
と表示されています。しかも、FATのファイルと同一の更新日時ファイルとして処理されています。(Windows 7の場合、更新日時が異なると判定されれば、更新日時の右側に「(新しい)」と表示されます。)
では、Windowsエクスプローラー上の更新日時はどうかというと、

Windowsエクスプローラー上でも、
 2014/12/04 19:51
表記になっています。

 

どうやら、Windows 7のエクスプローラーでは、FAT / FAT32 / exFATのファイルとNTFSのファイルにおいて差異が出ないように、2秒単位で処理されているようです。

 

どのタイミングでNTFSファイルの更新日時の繰り上げが行われているのか、念のために確認してみましょう。

 

黄色い時間は、ファイルのプロパティで確認した、ファイルの更新時間です。
ということで、2秒単位に更新日時の繰り上げ処理が行われていることがわかります。

 

このように、Windows 7とWindows Server 2012 R2では、Windowsエクスプローラー上の動作が異なります。プログラムで取得できる更新日時は双方で変わることはありませんので、プログラムで更新日時を取得している場合は気にしないで大丈夫ですが、目検や手作業で更新している場合などは、非常に気付きづらく、かつ、わかりづらい差異が出るかもしれませんね。