J'ai créé un volume logique NTFS sur mon système Linux pour le stockage de fichiers Windows car je souhaite conserver la date de création de mes fichiers (je les compresserais probablement dans une archive, puis les décompresserais, bien que je ne sache pas si cela fonctionnerait). NTFS-3G enregistre-t-il la date de création des fichiers sous Linux ? Si oui, comment y accéder ?
En lisant ce fil, l'OP relie la documentation sur NTFS qui fournit un script shell pour trouver la date de création. Je l'ai modifié pour tenter d'obtenir les secondes à partir de la valeur hexadécimale, mais je pense que je fais quelque chose de mal :
#!/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`
Réponse acceptée :
Depuis https://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/#filetimes,
Un fichier NTFS est qualifié par un ensemble de quatre horodatages "représentant le nombre d'intervalles de 100 nanosecondes depuis le 1er janvier 1601 (UTC)", bien que UTC n'ait pas été défini depuis des années avant 1961 en raison de variations inconnues de la rotation de la Terre.
Vous y trouverez encore plus d'informations, notamment :
Les nouvelles versions de ntfs-3g exposent un ntfs.ntfs_crtime
et ntfs.ntfs_crtime_be
attribut.
Donc :
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
Avec les anciens ntfs-3g, cela devrait fonctionner :
getfattr --only-values -n system.ntfs_times /some/file |
perl -MPOSIX -0777 -ne 'print ctime unpack(Q)/10000000-11644473600'
Ou avec les outils GNU et une précision inférieure à la seconde :
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)"