Je sais juste que ls -t
et ls -f
donne un tri différent des fichiers et des sous-répertoires dans un répertoire.
- Quelles sont les différences entre lhorodatage, lheure de modification et lheure de création dun fichier?
- Comment obtenir et modifier ce type d’informations à l’aide de commandes?
- En termes de quel type d’informations les gens disent-ils qu’un fichier est « plus récent » que l’autre?
- Quoi les types de modification des informations ne rendront pas le fichier différent?
Par exemple, jai vu quelquun écrire:
Par défaut, le programme rsync ne regarde que pour voir si les fichiers sont différents en taille et en horodatage. Il ne se soucie pas de savoir quel fichier est le plus récent, sil est différent, il est écrasé. Vous pouvez passer le drapeau « –update » à rsync qui le fera sauter des fichiers sur la destination sils sont plus récents que le fichier sur la source, mais seulement tant quils sont du même type de fichier. Cela signifie que si, par exemple, le fichier source est un fichier normal et que la destination est un lien symbolique, le fichier de destination sera écrasé, quel que soit l’horodatage.
Par ailleurs, le type de fichier ne signifie-t-il ici que le fichier normal et simlink, pas le type tel que pdf, jpg, htm, txt etc?
Commentaires
Réponse
Il existe 3 types de « timestamps »:
- Accès – le dernier heure à laquelle le fichier a été lu
- Modifier – la dernière fois que le fichier a été modifié (le contenu a été modifié)
- Modifier – la dernière fois que les métadonnées du fichier ont été modifiées (par exemple, les autorisations)
Pour afficher ces informations, vous pouvez utiliser stat
qui fait partie des coreutils.
stat
vous en montrera également un peu plus des informations comme le périphérique, les inodes, les liens, etc.
Noubliez pas que ce type dinformations dépend fortement du système de fichiers et des options de montage. Par exemple, si vous montez une partition avec loption noatime
, aucune information daccès ne sera écrite.
Un utilitaire pour modifier les horodatages serait touch
. Il y a quelques arguments pour décider quel horodatage changer (par exemple -a pour lheure daccès, -m pour lheure de modification) et pour influencer lanalyse dun nouvel horodatage donné. Voir man touch
pour plus de détails.
touch
peut devenir pratique en combinaison avec cp -u
( « copier uniquement lorsque le fichier SOURCE est plus récent que le fichier de destination ou lorsque le fichier de destination est manquant » ) ou pour la création de fichiers de marqueurs vides.
Commentaires
Réponse
La réponse de echox est valide mais je souhaite ajouter des informations concernant le fichier heure de création.
Support du système de fichiers
Certains systèmes de fichiers supportent une entrée supplémentaire dans linode concernant lheure de création (ou lheure de naissance). Je sais que ext4 prend en charge cette fonctionnalité ainsi que JFS et BTRFS .
Cependant, la plupart des outils et API nont pas encore été mis à jour pour lire ces informations supplémentaires.Donc, même si cela pourrait être là, ce nest pas accessible.
Par exemple sur Ubuntu 12.04 LTS, jobtiens ce qui suit pour un fichier que jai créé aujourdhui:
$ echo Just another test > /tmp/mytest $ sleep 3 $ touch /tmp/mytest $ sleep 2 $ cat /tmp/mytest > /dev/null $ stat /tmp/mytest [...] Access: 2012-06-05 13:33:44.279774711 +0200 Modify: 2012-06-05 13:33:34.611893317 +0200 Change: 2012-06-05 13:33:34.611893317 +0200 Birth: - $ sudo debugfs -R "stat /tmp/mytest" /dev/sda1 [...] ctime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012 atime: 0x4fcdee98:42b417dc -- Tue Jun 5 13:33:44 2012 mtime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012 crtime: 0x4fcdee46:01258f1c -- Tue Jun 5 13:32:22 2012 [...]
Vous pouvez voir que la nouvelle fonction stat a un champ de naissance, bien que la sortie semble incorrecte. Et via debugfs, nous pouvons obtenir les informations (crtime as I « m sur le système de fichiers ext4).
support statx
Il y a désormais depuis le noyau 4.11 un nouvel appel système statx , en plus dun meilleur support de Y2038 ou du réseau systèmes de fichiers, il apporte également quelques fonctionnalités supplémentaires comme laccès btime
ou lheure de naissance (heure de création). Le support pour ext4 devrait être dans la même version du noyau 4.11.
Il y a eu des correctifs pour ajouter le support à ce nouvel appel système dans les versions ultérieures du noyau: BTRFS et F2FS dans Kernel 4.13, SMB3 dans 4.14, GFS2 dans 4.15, NFS dans 4.16, etc.
La prochaine glibc fournira un appel de fonction pour interroger cette interface (voir Actualités Phoronix sur le support de la glibc statx ). Nous pouvons donc nous attendre à une prise en charge de cette fonctionnalité dans lespace utilisateur très prochainement.
Commentaires
- Savez-vous si btime reste intact lorsque les fichiers de Windows (Création time) sont déplacés sur ext4 et vice versa, comme mtime?
- @paradroid désolé je ne connais pas la réponse. Si vous voulez dire sous Linux lors de la copie dun fichier de NTFS vers ext4, il faudrait chercher dans le pilote NTFS sil prend en charge le temps de création. Si vous voulez dire sous Windows, il faudrait chercher dans le pilote ext4 pour Windows.
ls -l
. Et le type de fichier fait référence au fichier par rapport au lien symbolique (ou à dautres types de fichiers tels que des répertoires ou des périphériques). Pas quel est le type de données dans le fichier (texte vs jpeg, etc.).