ビジネス課題への解決策(アイディア)と、新たな発想(+α)が見つかるIT情報メディア

Menu
  1. TOP
  2. データ活用
  3. Windowのファイル更新日時(後編) OSによって更新日時の表示が異なる?

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加

前編の「ファイルを別のドライブに置いたら更新日時が変わった?」では、コピーによってファイルの更新日時自体が変わってしまった例を取り上げしました。

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

Windowsエクスプローラーで見てみたら?

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

Windows Server 2012 R2上では?

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

FAT16

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

FAT32

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

NTFS

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

ReFS

(NTFSと同じ更新日時)

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エクスプローラー上で、異なるファイルシステム間で、上書きコピーを行ってみます。

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

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

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

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

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

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

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

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

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

Windows 7では?

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

FAT16

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

FAT32

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

NTFS

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

exFAT

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

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

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

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

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

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

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

NTFSとFAT16の間で上書きコピーを行うと、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のエクスプローラーでは、FAT16 / FAT32 / exFATのファイルとNTFSのファイルにおいて差異が出ないように、2秒単位で処理されているようです。

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

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

このように、Windows 7とWindows Server 2012 R2とでは、Windowsエクスプローラー上の動作が異なります。

プログラムで取得できる更新日時は双方で変わることはありませんので、プログラムで更新日時を取得している場合は気にしないで大丈夫ですが、目検や手作業で更新している場合などは、非常に気付きにくく、かつ、わかりづらい差異が出るので注意が必要ですね。


追記:Waha! Transformer 製品サイトの関連コンテンツ

Waha! Transformer の動作プラットフォーム

データの抽出や加工、連携にお悩みではありませんか?

20年以上の実績に裏打ちされた信頼のデータ連携ツール「Waha! Transformer」で、自社に眠るデータを有効活用。まずは無料のハンズオンセミナーや体験版で効果を実感していただけます。

> 純国産ETLツール「Waha! Transformer」

Waha! Transformer
メールマガジンの登録はこちらから
メルマガ登録 お問い合わせ