新しいはずのファイルが「昨日作成」になるのはなぜ? Windowsの不思議な仕様

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

Windowsでは、ファイルを削除した直後に同じ名前のファイルを作ると、なぜか作成日が古いままになるという不思議な現象が発生します。

この動作の背景にあるのは、NTFSの「ファイルシステム・トンネリング」という仕組みで、バグではなく、Windowsが長年維持してきた互換性のための仕様なのです。

目次

トンネリングとは何か

MicrosoftのベテランエンジニアRaymond Chen氏は2005年のブログ記事「The apocryphal history of file system tunnelling」でファイルシステム・トンネリングについて詳しく説明しています。

記事によると、NTFSのファイルシステム・トンネリングは、削除・リネームされたファイルのメタデータを短時間だけ記憶しておく仕組みです。

同じ名前のファイルがすぐに同じフォルダに作られると、Windowsはその記憶を使って「作成日時」や「短いファイル名(8.3形式)」との関連付けを新しいファイルに引き継ぎます。この記憶は約15秒ほどで消え、内容そのものが復元されるわけではありません。あくまで作成日時などのメタ情報だけが維持されます。

この機能が必要な理由として以下の2つがあげられています。

アプリが「安全な保存」を行うため

WindowsではWordなど多くのアプリは、ファイルを上書きする際に一時ファイルを作成→元のファイルを削除→一時ファイルを元の名前にリネームという手順を踏みます。

ユーザーから見れば「既存ファイルを保存しただけ」なのに、内部的には新規作成扱いになるため、作成日時が変わってしまいます。

このズレを防ぐために ファイルシステム・トンネリングが使われています。

古いアプリとの互換性維持

昔の16bitアプリは8.3形式の短いファイル名しか扱えません。一方Windowsは長いファイル名を扱うことができるため、この対応付を覚えておく必要がありました。

例えばFile with long name.txt → FILEWI~1.TXTという対応があったとします。長い名前を知らない古いアプリがこのファイルを保存すると、短い名前のファイルを削除 → 同じ短い名前で新規作成という動作になります。

もしトンネリングがなければ、長いファイル名との関連付けが消え、ファイル名がFILEWI~1.TXTだけになる という悲劇が起きます。

トンネリングは、こうした互換性問題を防ぐためにも欠かせない仕組みでした。

どんな操作でトンネリングが発動するのか

Microsoftのドキュメントによると、以下のような操作の組み合わせで発動します。

  • 削除 → 同名ファイルを新規作成
  • 削除 → 別ファイルを同名にリネーム
  • リネーム → 同名ファイルを新規作成
  • リネーム → 別ファイルを同名にリネーム

つまり「短時間で同じ名前のファイルが同じフォルダに現れる」ことが条件です。

まとめ

この挙動は誤動作ではなく、ファイルの歴史を守るための互換性仕様です。

アプリが安全にファイルを保存し、古いソフトでもファイル名が壊れないように、メタデータだけを短時間保持する仕組みとしてNTFSの「ファイルシステム・トンネリング」が存在します。

[via Windows Latest]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次