fteを実行するとタブによってはtypeカラムにタイムスタンプの種類を出力します。記録されている4つのタイムスタンプ(ファイル作成日時: crtime, 最終更新日時: mtime, エントリ更新日時: ctime, 最終アクセス日時: atime)値から、ファイルがどこで、どのようにして生成されたか、最も妥当と判断した情報を出力しています。
fteが扱う分類について以下に記載します。
FAT
FAT上で保持するタイムスタンプの精度に一致する場合です。
- atime - 日単位
- mtime - 2秒単位
- ctime - なし (fte上は1601/01/01 00:00:00+タイムゾーンの表示)
- crtime - 10ミリ秒単位
exFAT
exFAT上で保持するタイムスタンプの精度に一致する場合です。
- atime - 2秒単位
- mtime, crtime - 10ミリ秒単位
- ctime - なし (fte上は1601/01/01 00:00:00+タイムゾーンの表示)
Unix(POSIX)
ctimeを除く3つのタイムスタンプ全てがUnix(POSIX)形式、すなわち秒未満の情報を持たない場合です。
-
atime, mtime, crtime - 秒単位
Unix系ファイルシステム(Ext2/3やHFS+など)上のファイルをネットワーク経由で参照するとこのタイプになります。
DOS
ctimeはNTFS上の精度(100ナノ秒単位)でそれ以外の3つのタイムスタンプがDOS形式(2秒単位)の場合です。
- atime, mtime, crtime - 2秒単位
- ctime - 100ナノ秒単位
アプリケーションによってはこの型を採用しているかもしれないため用意しました。実際にこのようなタイプで保存され
ている例はまだ見たことがありません。
FAT/ZIP/LZH->NTFS
mtimeがDOS形式(2秒単位)でそれ以外の3つのタイムスタンプはNTFS上の精度(100ナノ秒単位)の場合です。
- atime, ctime, crtime - 100ナノ秒単位
- mtime - 2秒単位
普通にコピーするとmtimeは更新されませんので、FAT上にあるファイルをNTFS上にコピーした場合はこのタイプになります。
また、ZIPやLZHの仕様ではヘッダ情報として対象ファイルのmtimeをDOS形式で格納するように定められています。圧縮時に対象ファイルのmtimeをDOS形式で取っておき、展開時にその形式(DOS)でmtimeをセットします。よって、ZIPやLZHから展開されたファイルも大抵このタイプになります。
ただしZIPやLZHのヘッダは拡張版としてUnix(POSIX)やFILETIMEで保存できるようにもなっているため、最終的には圧縮/展開に使用したツールの実装にも依存します。
exFAT->NTFS
mtimeが10ミリ秒単位で、それ以外の3つのタイムスタンプはNTFS上の精度(100ナノ秒単位)の場合です。
- atime, ctime, crtime - 100ナノ秒単位
- mtime - 10ミリ秒単位
exFAT上にあるファイルをNTFS上にコピーした場合はこのタイプになります。
SYSTEMTIME
ctimeを除く3つのタイムスタンプがSYSTEMTIME形式(ミリ秒単位)の場合です。
- atime, mtime, crtime - ミリ秒単位
- ctime - 100ナノ秒単位
ツールによってはSYSTEMTIME形式で時間情報を扱います。調べた限りではChange File Time StampやFileTouchがSYSTEMTIME形式で扱っていましたので、例えばこれらのタイムスタンプ変更ツールを使って変更されたファイルはこのタイプになります。
FILETIME
上記のいずれのタイプにも当てはまらない場合です。
- atime, mtime, ctime, crtime - 100ナノ秒単位