Windows 7におけるファイル移動とObjectID
Windows 7において、異なる二つの NTFS ボリューム、C ボリュームから E ボリュームへと、NTFS ボリューム間でファイルを移動した場合に、オブジェクトID がどの様に変化するかについて調べてみたのですが、以下のような状況です。
ローカルに存在している二つの NTFS ボリューム間でファイルを移動した場合、ファイルの ObjectID は、移動先のボリュームでもそのまま維持されています。
まず、aaa.txt のオブジェクトIDを確認します。
c:\temp\objectid>fsutil objectid query "C:\temp\objectid\aaa.txt"
Object ID : 23808d0ef247df11807700ac6178ea4c
BirthVolume ID : 6adb4ed20972dd4499a38def5709da1a
BirthObjectId ID : 23808d0ef247df11807700ac6178ea4c
Domain ID : 00000000000000000000000000000000
次に move コマンドを使って、別のボリュームに aaa.txt を ccc.txt という名前で移動した後、オブジェクトIDを確認してみます。ファイルのオブジェクトIDは、aaa.txt と ccc.txt で同じ ObjectID になっています。
c:\temp\objectid>move aaa.txt E:\ccc.txt
1 個のファイルを移動しました。c:\temp\objectid>fsutil objectid query "E:\ccc.txt"
Object ID : 23808d0ef247df11807700ac6178ea4c
BirthVolume ID : 6bdb4ed20972dd4499a38def5709da1a
BirthObjectId ID : 23808d0ef247df11807700ac6178ea4c
Domain ID : 00000000000000000000000000000000
BirthVolume ID の先頭バイトは CrossVolumeMoveFlag ですが、これは 6a → 6b に変化していることが確認できます。
試しにネットワーク共有上に ccc.txt を qqq.txt として移動してみたところ、この場合にはファイルの ObjectID が新たな値に変化しています。(BirthObjectId 値では、オリジナルの ObjectID を保持)
G:\>move e:\ccc.txt G:\qqq.txt
1 個のファイルを移動しました。G:\>fsutil objectid query "G:\qqq.txt"
Object ID : aacf8d213749df11b964001e68d9e1c0
BirthVolume ID : 6bdb4ed20972dd4499a38def5709da1a
BirthObjectId ID : 23808d0ef247df11807700ac6178ea4c
Domain ID : 00000000000000000000000000000000
Windows XP でローカルの二つのボリューム間で移動した場合の ObjectID の変化は別途確認。FNG12 ではリモートの共有へ移動させていたので、ローカルボリュームでの移動については未確認でしたね。