Ho creato un volume logico NTFS sul mio sistema Linux per l'archiviazione di file Windows perché voglio conservare la data di creazione dei miei file (probabilmente li comprimerei in un archivio e poi li decomprimerei, anche se non ho idea se funzionerebbe). NTFS-3G salva la data di creazione dei file su Linux? Se sì, come faccio ad accedervi?
Leggendo questo thread, l'OP collega la documentazione su NTFS che fornisce uno script di shell per trovare la data di creazione. L'ho modificato nel tentativo di ottenere i secondi dal valore esadecimale, ma credo di sbagliare qualcosa:
#!/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`
Risposta accettata:
Da https://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/#filetimes,
Un file NTFS è qualificato da una serie di quattro timestamp "che rappresentano il numero di intervalli di 100 nanosecondi dal 1 gennaio 1601 (UTC)", sebbene UTC non sia stato definito per anni prima del 1961 a causa di variazioni sconosciute della rotazione terrestre.
Troverai ancora più informazioni tra cui:
Le versioni più recenti di ntfs-3g espongono un ntfs.ntfs_crtime
e ntfs.ntfs_crtime_be
attributo.
Quindi:
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
Con il vecchio ntfs-3g, questo dovrebbe funzionare:
getfattr --only-values -n system.ntfs_times /some/file |
perl -MPOSIX -0777 -ne 'print ctime unpack(Q)/10000000-11644473600'
O con strumenti GNU e precisione inferiore al secondo:
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)"