昨日の実験を行っている最中に、間違えて以下のコマンドを実行してしまいました。
echo sample > a.txt echo 123456 > a.txt
echo で a.txt の内容を 123456 へ更新しようと思ったのですが、上記では2回目の echo 文により a.txt が新規に作成されることになり、厳密には最初の a,txt と次の a.txt では異なるファイルになります。
しかし、ここでファイル システム トンネリング機能が働き、二度目の echo で作成された a.txt の作成日時は引き継がれることになり変化しません。
さらにややこしいというか、たまたまなのか?、MFT エントリ番号(File Identifier)も同じ番号だったので思わず違和感がなかったのですが、何かが違うと(笑)
以前、米国で GSI のトレーニングを受けた際に、MFT エントリは空いてるレコードを上から使用という様に聞いているのと、過去の実験でもそんな動きでしたので、ちょっと実験してみたいと思います。
まず、連続する MFT エントリ番号を持つファイルを以下のコマンドで作成しました。
echo sample1 > a.txt echo sample2 > b.txt
それぞれのファイルの MFT エントリ番号は a.txt は 57942、b.txt は 57943 になります。
次に、a.txt と b.txt を削除し、b.txt を 15秒以内に新規作成します。
del a.txt del b.txt echo sample3 > b.txt
この段階で MFT レコードを確認すると、b.txt の MFT エントリ番号は 57942 となりました。つまり a.txt の利用していた番号になります。もちろん、MFT エントリ番号 57943 の b.txt は削除されたファイルとして識別された状態になり、a.txt のエントリが再利用されるので、a.txt の情報は確認できなくなります。
なお、この文字列の長さだと MFT レコード内に内蔵されることになりますね。