파일 생성 날짜를 보존하고 싶었기 때문에 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)"