ファイル作成日を保存したかったので、Windowsファイルを保存するためのLinuxシステムにNTFS論理ボリュームを作成しました(可能であるかどうかはわかりませんが、アーカイブに圧縮して解凍できます)。 NTFS-3GはLinuxでファイル生成日を保存しますか?では、どのようにアクセスしますか?
読むこのスレッド、OPリンク文書NTFSでは、作成日を見つけるためのシェルスクリプトが提供されています。 16進値から秒を取得するように修正しましたが、何かが間違っているようです。
#!/bin/sh
CRTIME=`getfattr -h -e hex -n system.ntfs_times $1 | \
grep '=' | sed -e 's/^.*=\(0x................\).*$/\1/'`
SECONDS=$(($CRTIME / 10000000))
echo `date --date=$SECONDS`
答え1
~からhttps://github.com/tuxera/ntfs-3g/wiki/Using-Extended-Attributes#file-times、
NTFSファイルは、「1601年1月1日(UTC)以降の100ナノ秒間隔の数を示す」4つのタイムスタンプのセットに限定されます。しかし、UTCは地球自転の未知の変化のために1961年以前に定義されていませんでした。
ここでは、以下を含む追加情報を見つけることができます。
最新バージョンのntfs-3gは、ntfs.ntfs_crtime
プロパティntfs.ntfs_crtime_be
を公開します。
だから:
getfattr --only-values -n system.ntfs_crtime_be /some/file |
perl -MPOSIX -0777 -ne '$t = unpack("Q>");
print ctime $t/10000000-11644473600'
また見なさい:
ntfsinfo -F /file/in/ntfs /dev/fs-device
以前のntfs-3gでは、次のように動作します。
getfattr --only-values -n system.ntfs_times /some/file |
perl -MPOSIX -0777 -ne 'print ctime unpack(Q)/10000000-11644473600'
または、GNUツールと1秒未満の精度を使用してください。
date '+%F %T.%N' -d "@$({ echo 7k
getfattr --only-values -n system.ntfs_times /some/file |
od -A n -N 8 -vt u8; echo '10000000/ 11644473600-p'; } |dc)"