ファイルの作成日を保持したいので、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`
承認された回答:
https://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/#filetimesから
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)"