GNU/Linux >> Tutoriels Linux >  >> Linux

Linux – Comment obtenir la date de création d'un fichier sur un volume logique Ntfs ?

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)"

Linux
  1. Comment créer un système de fichiers sur une partition ou un volume logique Linux

  2. Linux – Comment trouver la date de création du fichier ?

  3. Comment rediriger la sortie de system() vers un fichier ?

  4. Comment obtenir le chemin d'accès au fichier actuel (pwd) sous Linux à partir de C ?

  5. Obtenir la date de la dernière modification du fichier sous Linux

Comment formater des partitions de disque sous Linux

Introduction au système de fichiers Linux

Comment obtenir la taille d'un répertoire sous Linux

Comment obtenir le nom de fichier à partir du chemin complet sous Linux

Comment monter un disque NTFS sous Linux

Comment utiliser la commande fd sur le système Linux