J'essaie de comprendre précisément quand l'horodatage ctime d'un fichier est modifié. Dans de nombreux endroits (par exemple, dans la réponse acceptée ici ), il est suggéré que toute modification des attributs de fichier modifie également ctime. Cependant, cela ne semble pas être vrai, du moins sur mon Ubuntu 12.04 (oui, je sais, un peu vieux ...):
cat file.txt > /dev/null
modifie l'atime, il modifie donc les attributs du fichier (dans l'inode du fichier), mais ne modifie pas le ctime.
D'autres sources (par exemple, ici et ici ) suggèrent que seules certaines opérations sur les attributs de fichier modifient réellement le ctime, mais aucune liste précise n'est fournie.
Où puis-je trouver une référence précise à quelles opérations modifient le ctime?
filesystem
VeryHardCoder
la source
la source
cat
, l'avez-vous examiné avectouch
?Réponses:
Il existe trois horodatages sur les systèmes Unix:
atime
: Temps d'accèsCet horodatage vous indique quand le fichier a été accédé la dernière fois, y compris uniquement l'accès en lecture.
ctime
: Changer le tempsCet horodatage vous indique quand les attributs de fichier (informations d'inode) ont changé la dernière fois. Cela inclut par exemple la propriété et les autorisations, mais un changement de contenu déclenche également une mise à jour de cet horodatage.
Notez que les modifications apportées à atime semblent être une exception car elles ne déclenchent pas de mise à jour ctime. Cela est probablement dû au fait qu'un simple accès en lecture qui est suffisant pour déclencher une mise à jour atime n'apporte aucune modification pertinente aux attributs de fichier. Et l'un des principaux objectifs de ctime est d'aider les outils de sauvegarde à déterminer si un fichier a changé. L'atime est une information non pertinente pour de tels outils et la mise à jour d'une sauvegarde juste pour mettre à jour un atime modifié parce que quelqu'un a lu le fichier serait inutile.
Je ne suis pas sûr, mais certaines personnes pensent que ce comportement (les modifications apportées à atime ne mettent pas à jour ctime) est uniquement dû aux options de montage (commerelatime
) du système de fichiers sous-jacent qui met en cache et retarde les mises à jour atime dans l'inode pour des raisons de performances en mémoire et les applique uniquement aux vrais inodes du disque (déclenchant une mise à jour ctime) sous certaines conditions.@kos l'a essayé et apparemment même lors du montage d'un FS avec l'option `strictatime``, le ctime semble ne jamais se mettre à jour si l'atime change.
mtime
: Temps de modificationCet horodatage vous indique quand le contenu du fichier a été modifié la dernière fois.
Ainsi, un simple accès en lecture utilisant
cat FILENAME
uniquement modifie l' atime , mais pas le ctime car aucun attribut de fichier n'a été modifié. Le temps modifié ne compte pas.la source