web-dev-qa-db-fra.com

Qu'est-ce qui compte comme modification de fichier ou changement?

Le renommage a-t-il affecté le fichier modifiant ou l'heure d'accès? Y a-t-il une liste quelque part quel changements?

15
user54385

Le renommage met à jour le temps 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. Modifier lorsque vous mettez à jour réellement le fichier (l'ouverture de la modification ne suffit pas pour modifier le temps de modification).

8
Zelda

Une modification affectant le fichier MTTI est une modification des données du fichier: une écriture d'une quantité non nulle d'octets ou d'une troncature qui finit par modifier le fichier. La création d'un fichier définit son MT0e à la date actuelle. L'ouverture simplement d'un fichier d'écriture n'affecte pas le MT0e, en supposant que le fichier ne soit pas créé ou tronqué.

Lecture d'un fichier (si un nombre non zéro d'octets est lu) ou exécuter un fichier définit son existence à l'heure actuelle. Simplement ouvrir un fichier pour la lecture n'affecte jamais l'ATime. Sur Linux, ceci est maintenant désactivé par défaut dans la plupart des cas; L'option de montage atime Restaure les mises à jour ATime, tandis que l'option noatime Mount le désactive complètement.

Les programmes peuvent changer le MTIME et l'ATime d'un fichier; La commande de base pour faire ceci est touch. Certains programmes de copie de fichiers définissent la copie sur le même MTIME comme l'original, par exemple cp -p ou rsync -t.

Une modification affectant le fichier CTTI est une modification des métadonnées du fichier: Autorisations, propriétaires, horaires, comptage de liaison, etc. Renommer un fichier met également à jour sa therme. Les modifications des données de fichier affectent également la tÉtime, mais la lecture d'un fichier ne modifie pas le TEMPT Même s'il change l'ATime. Il est impossible de changer le TEMPT de quelque manière que ce soit de la sorte que de la définir à l'heure actuelle (la racine même est contrainte, mais la racine peut indiquer indirectement le TEMPT en modifiant d'abord le temps système ou en accédant à la partition contenant le système de fichiers directement).

Une observation empirique supplémentaire non mentionnée par les autres réponses:

Ouvrir le fichier pour écrire avec O_TRUNC Modifie le MTIME Même si le fichier était à l'origine vide.

Cela semble être le cas au moins sur EXT3 sur Linux 3.10.

1
Arseniy Alekseyev