Le changement de nom affecte-t-il la modification du fichier ou le temps d'accès? Y a-t-il une liste quelque part de ce qui change à quel moment?
Le changement de nom affecte-t-il la modification du fichier ou le temps d'accès? Y a-t-il une liste quelque part de ce qui change à quel moment?
Réponses:
Renommer met à jour l'heure de changement:
$ mkdir tmp
$ cd tmp
$ echo abc > a
$ stat a
File: `a'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 26h/38d Inode: 5038682 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000 / zelda Gid: ( 1000/ zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:06:58.981107444 +0100
Birth: -
$ mv a b
$ stat b
File: `b'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 26h/38d Inode: 5038682 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ zelda) Gid: ( 1000/ zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:07:14.893238472 +0100
Birth: -
L'heure d'accès est mise à jour lors de la lecture du contenu d'un fichier. Modifiez lorsque vous mettez à jour le fichier (l'ouverture pour la modification ne suffit pas pour changer l'heure de modification).
cp
et mv
, et vi
pour l'édition. D'autres éditeurs ou votre bureau peuvent gérer la tâche différemment et avoir plus d' horodatages mis à jour.
mv
Une modification affectant le mtime du fichier est un changement des données du fichier: une écriture d'un nombre d'octets différent de zéro, ou une troncature qui finit par modifier le fichier. La création d'un fichier définit également son mtime à la date actuelle. Le simple fait d'ouvrir un fichier en écriture n'affecte pas le mtime, en supposant que le fichier n'est pas créé ou tronqué.
La lecture d'un fichier (si un nombre d'octets différent de zéro est lu) ou l'exécution d'un fichier définit son heure à l'heure actuelle. Le simple fait d'ouvrir un fichier en lecture n'affecte jamais le temps. Sous Linux, ceci est maintenant désactivé par défaut dans la plupart des circonstances; l' atime
option de montage restaure les mises à jour atime, tandis que l' noatime
option de montage les désactive complètement.
Les programmes peuvent modifier le mtime et le atime d'un fichier; la commande de base pour ce faire est touch
. Certains programmes de copie de fichiers définissent la copie sur le même mtime que l'original, par exemple cp -p
ou rsync -t
.
Un changement affectant le ctime du fichier est un changement des métadonnées du fichier: autorisations, propriétaire, heures, nombre de liens, etc. Renommer un fichier met également à jour son ctime. Les modifications des données du fichier affectent également le ctime, mais la lecture à partir d'un fichier ne modifie pas le ctime même s'il modifie le atime. Il est impossible de modifier le ctime d'une autre manière que de le définir à l'heure actuelle (même root est contraint, mais root peut indirectement définir le ctime en changeant d'abord l'heure du système ou en accédant directement à la partition contenant le système de fichiers).
Une observation empirique supplémentaire non mentionnée par les autres réponses:
L'ouverture du fichier pour l'écriture avec O_TRUNC
change le mtime même si le fichier était à l'origine vide.
Cela semble être le cas au moins sur ext3 sous Linux 3.10.