Quels systèmes de fichiers sous Linux stockent le moment de la création?

32

Existe-t-il sur Linux des systèmes de fichiers (bien connus et fiables) qui stockent l'heure de création des fichiers et des répertoires dans la table i-node?

Dans l'affirmative, l'heure "modifiée" est-elle remplacée par l'heure de création d'un i-node dans un appel stat?

Franziskus
la source
1
Voir aussi Comment faire une ls puis trier les résultats par date créée?
Gilles, arrête de faire le mal '12
Il ne semble y avoir un moyen d'obtenir le temps de création de fichiers sous Linux si le fichier est sur un système de fichiers ext4. Voir: unix.stackexchange.com/a/131347/182996
Kaartic

Réponses:

16

Le système de fichiers ext4 stocke l'heure de création. stat -c %W myfilepeut vous le montrer.

Keith
la source
6
Merci. Dans mon système stat -c %Wretourne 0 (heure de création inconnue), mais c'est une autre question ...
franziskus
1
Notez cependant qu'en raison de la manière dont les fichiers sont gérés par de nombreux programmes, cette valeur de temps de création peut ne pas être utile .
Mattdm
15
@Legate: si un éditeur de texte fonctionne en copiant le fichier dans un emplacement temporaire, en modifiant la copie de travail temporaire, puis en déplaçant la copie temporaire sur l'original lors de l'enregistrement, quelle est l'heure de la création?
Mattdm
1
Est-ce que cela doit être activé d'une manière ou d'une autre? J'ai essayé d'obtenir le crtime d'un fichier sur un système de fichiers ext4 et je n'ai rien eu. Ayant déjà lu ce billet , j’ai aussi essayé d’utiliser debugfset statqui a révélé qu’il n’y en avait pas crtime. Je me demande donc si cela doit être activé d'une manière ou d'une autre? (FWIW j'utilise Arch Linux )
starfry
2
Il ne semble y avoir un moyen d'obtenir le temps de création de fichiers sous Linux. Voir: unix.stackexchange.com/a/131347/182996
Kaartic
30

Plusieurs systèmes de fichiers stockent l'heure de création du fichier, bien qu'il n'y ait pas de nom standard pour ce champ:

  • ufs2 → st_birthtime
  • zfs → crtime
  • ext4 → crtime
  • btrfs → otime
  • jfs → di_otime
jlliagre
la source
5
Pour être explicite, à compter de 2015-03, XFS ne prend pas en charge (voir la xfs_dbpage de manuel ou dans la structure du système de fichiers XFS
Franklin Piat,
4

Pour autant que je sache, les systèmes de fichiers ext4, JFS et BTRFS prennent tous en charge un champ supplémentaire dans l'inode des fichiers pour stocker l'heure de création, bien que le nom puisse être différent.

Source: LWN File Creation Times

Huygens
la source
//, avez-vous pu vérifier cela? Autant que je sache, c'est un peu faible, à mon goût, du moins.
Nathan Basanese
5
@NathanBasanese AFAIK faisait rapport à JFS et à BTRFS. Pour ext4, oui, il le supporte. Vérifier la debugfscommande stat. Exemple: vous devez connaître le périphérique sur lequel vous avez monté le système de fichiers ext4 (par exemple, / dev / sda3) et vous devez obtenir un numéro de fichier inode dans ce système de fichiers (utilisez ls -i, disons que 42000 est le nombre), puis vous tapez simplement: debugfs -R 'stat <42000>' /dev/sda3. Exécutez-le en tant qu'utilisateur root ou avec suffisamment de privilèges. Cherchez le crtimechamp, c'est celui-là. Pour JFS et BTRFS, vous devez trouver la commande équivalente debugfs ...
Huygens
//, NIIICE. J'ai essayé $ ls -i | grep dump.rdb 656376 dump.rdb et $ sudo debugfs -R 'stat <656376>' / dev / sda2, mais je pense que je n'ai pas encore d'ext4. Si je l'essaie sur un ext4, je le dirai.
Nathan Basanese
@NathanBasanese Vous pouvez faire df -Tpour obtenir le type de partition ou simplement taper mount. Assurez-vous que le inode du fichier appartient à la partition correcte. Les inodes sont (par nature) spécifiques à une partition.
Huygens