in

Explication des horodatages des fichiers Linux: atime, mtime et ctime

Fatmawati Achmad Zaenuri / Shutterstock

Quand «modifié» ne veut-il pas dire «modifié»? Quand nous parlons d’horodatages de fichiers Linux. Dans ce guide, nous expliquerons comment le système les met à jour et comment les modifier vous-même.

La différence entre atime, mtime et ctime

Chaque fichier Linux a trois horodatages: l’horodatage d’accès (atime), l’horodatage modifié (mtime) et l’horodatage modifié (ctime).

L’horodatage d’accès correspond à la dernière lecture d’un fichier. Cela signifie que quelqu’un a utilisé un programme pour afficher le contenu du fichier ou en lire certaines valeurs. Rien n’a été modifié ou ajouté au fichier. Les données étaient référencées mais inchangées.

Un horodatage modifié signifie la dernière fois que le contenu d’un fichier a été modifié. Un programme ou un processus a modifié ou manipulé le fichier. «Modifié» signifie que quelque chose à l’intérieur du fichier a été modifié ou supprimé, ou que de nouvelles données ont été ajoutées.

Les horodatages modifiés ne font pas référence aux modifications apportées au contenu d’un fichier. C’est plutôt l’heure à laquelle les métadonnées liées au fichier ont été modifiées. Les modifications d’autorisation de fichier, par exemple, mettront à jour l’horodatage modifié.

Le système de fichiers Linux ext4 standard alloue également de l’espace pour un horodatage de création de fichier dans ses structures de système de fichiers internes, mais cela n’a pas encore été implémenté. Parfois, cet horodatage est renseigné, mais vous ne pouvez pas dépendre des valeurs qu’il contient.

L’anatomie d’un horodatage

Les horodatages Linux contiennent un nombre plutôt qu’une date et une heure. Ce nombre est le nombre de secondes depuis le Époque Unix, qui était minuit (00:00:00) le 1er janvier 1970, à Temps universel coordonné (UTC). Les secondes intercalaires sont ignorées dans les horodatages Linux, elles ne sont donc pas analogues au temps réel.

Lorsque Linux a besoin d’afficher un horodatage, il traduit le nombre de secondes en une date et une heure. Cela facilite la compréhension des humains. L’emplacement et le fuseau horaire dans lesquels se trouve l’ordinateur qui visualise le fichier guident la conversion du nombre de secondes en une date et une heure. Cela garantit également que le mois est dans la bonne langue.

Alors, combien de secondes peuvent être stockées dans un horodatage? Beaucoup – 2 147 483 647, pour être précis. C’est un grand nombre, mais est-ce suffisant? Si vous ajoutez cela à l’époque Unix, puis que vous le traduisez en une date et une heure, vous obtiendrez le mardi 19 janvier 2038 à 03:14:07 am. Nous aurons cependant besoin d’un schéma différent pour les horodatages avant cette date.

Affichage des horodatages

Lorsque vous utilisez le -l (longue liste) option avec ls, comme indiqué ci-dessous, vous pouvez voir l’horodatage modifié:

ls -l dp.c

Si vous voulez voir l’horodatage d’accès, utilisez le -lu (temps d’accès) comme ceci:

ls -lu dp.c

Et enfin, pour voir l’horodatage du changement, vous pouvez utiliser le -lc (changer l’heure) option; tapez ce qui suit:

ls -lc dp.c

Les horodatages ci-dessus montrent que le contenu du fichier a été modifié pour la dernière fois le 21 avril 2019. L’accès et les horodatages modifiés sont identiques car le fichier a été copié d’un autre ordinateur vers celui-ci le 20 janvier 2020 et les deux horodatages ont été mis à jour à ce moment-là.

À voir tous les horodatages simultanément, Utilisez le stat commande comme suit:

stat dp.c

Les fuseaux horaires sont répertoriés au bas de l’écran. Comme vous pouvez le voir, ils ont une composante de fraction de seconde très précise. À la fin de chaque horodatage, vous voyez également un -0500 ou alors -0400 .

Ceux-ci sont . Le système de fichiers enregistre les horodatages en UTC et les convertit dans le fuseau horaire local lorsqu’ils sont affichés par stat. L’ordinateur que nous avons utilisé pour rechercher cet article est configuré comme s’il se trouvait dans la zone heure normale de l’Est (EST) des États-Unis.

Ce fuseau horaire a cinq heures de retard sur UTC lorsque EST est en vigueur. Cependant, il est quatre heures de retard sur UTC lorsque l’heure avancée de l’Est (HAE) est en vigueur. En avril 2019, lorsque l’horodatage modifié a été modifié, EDT était en vigueur. C’est pourquoi deux des horodatages ont un décalage de cinq heures, mais le modifié a un décalage de quatre heures.

Les décalages et les fuseaux horaires ne sont stockés nulle part. Il n’y a ni inode ni espace de système de fichiers dédié à la conservation de ces valeurs. Vous devez les calculer à la volée en utilisant l’horodatage (qui est toujours en heure UTC), le fuseau horaire local de l’ordinateur affichant le fichier et si l’heure d’été était en vigueur.

Vous voyez également un horodatage «Naissance», qui est réservé pour la date de création du fichier. Ce n’est pas implémenté et vous voyez un tiret « -»Au lieu d’un horodatage.

Modification des horodatages

Si vous le souhaitez, vous pouvez modifier les horodatages d’un fichier. Vous pouvez utiliser le touch commande pour changer l’accès ou les horodatages modifiés, ou les deux:

touch -a dp.c

Pour définir un nouvel horodatage d’accès, vous utiliseriez le -a (temps d’accès) option. Cette commande définit l’horodatage d’accès sur l’heure actuelle de l’ordinateur:

stat dp.c

L’horodatage d’accès a changé, comme prévu. Cependant, l’horodatage modifié a également été mis à jour; c’est normal.

Pour modifier l’horodatage modifié, vous pouvez utiliser le -m (heure modifiée) option:

touch -m dp.c
stat dp.c

Cette fois, les horodatages modifiés et modifiés ont été mis à jour.

Vous pouvez utiliser le -d (date) si vous souhaitez modifier simultanément les horodatages d’accès et modifiés. Vous pouvez également spécifier une heure et une date. Vous n’êtes pas limité à modifier les horodatages au présent.

Nous utiliserons la commande suivante pour définir l’accès et les horodatages modifiés à 10:30:45 le 15 janvier 2020:

touch -d "2020-01-15 10:30:45" dp.c
stat dp.c

Nous avons maintenant défini l’accès et les horodatages modifiés à une date dans le passé. L’horodatage modifié a également été mis à jour à l’heure actuelle de l’ordinateur.

Vous pouvez également utiliser le -r (référence), comme indiqué ci-dessous, si vous souhaitez définir les horodatages d’un fichier sur les valeurs d’horodatage d’un autre:

touch dp.c -r dice_words.sl3
stat dp.c

Et puis, nous sommes à peu près de retour là où nous avons commencé, avec un mélange de -0400 et -0500 horodatages.

Faisons quelque chose qui n’affecte que l’horodatage modifié. Nous utiliserons le chmod commande pour donner un fichier exécutable exécuter les autorisations pour tous les utilisateurs:

chmod +x dp
stat dp

L’horodatage modifié est le seul à avoir été mis à jour. C’est parce que le fichier lui-même n’a pas été modifié – il n’a été ni accédé ni modifié. Cependant, les métadonnées relatives au fichier ont changé.

Comment le système de fichiers met à jour les horodatages

Lorsqu’un système de fichiers est monté, vous pouvez utiliser des options pour spécifier comment ce système de fichiers doit fonctionner ou être traité. Ceux-ci sont stockés dans le /etc/fstab fichier, qui est lu et traité au moment du démarrage. Vous pouvez également définir des options pour dicter le schéma à utiliser pour mettre à jour l’horodatage d’accès.

Voici quelques-unes des options les plus courantes:

  • strictatime (heure stricte): Cette option met à jour l’horodatage d’accès des fichiers à chaque fois qu’ils y accèdent. Il y a une surcharge liée à cette approche, mais certains serveurs peuvent bénéficier de ce schéma. Il a peu de mérite sur un ordinateur de bureau ou un ordinateur portable.
  • noatime (pas de temps): Cette option désactive complètement les horodatages d’accès pour les fichiers et répertoires de la mise à jour. Les horodatages modifiés, cependant, seront toujours mis à jour.
  • nodiratime (pas de dir atime): Cette option active les horodatages d’accès pour les fichiers à mettre à jour, mais la désactive pour les répertoires.
  • relatime (heure relative): Cette option met à jour l’horodatage d’accès uniquement s’il était vieux de plus de 24 heures ou si le précédent était plus ancien que les horodatages actuels modifiés ou modifiés. Cela établit un bon équilibre entre les horodatages d’accès mis à jour trop fréquemment ou pas du tout mis à jour.

Regardons le /etc/fstab fichier pour cet ordinateur et voir quelles options sont définies:

less /etc/fstab

le /etc/fstab Le fichier est affiché pour nous, comme indiqué ci-dessous.

Voici le contenu du fichier sans le bouclage:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=4a143d08-8695-475b-8243-b13b56050fc2 / ext4 errors=remount-ro 0 1
/swapfile none swap sw 0 0

Il n’y a que deux entrées, et l’une d’elles est un fichier d’échange, que nous pouvons ignorer. L’autre est monté à la racine du système de fichiers ( / ) et était sur l’appareil /dev/sda1 au moment de l’installation. C’est la première partition du premier disque dur, et il se trouve qu’elle contient un ext4 système de fichiers.

La seule option qui lui est transmise est errors=remount-ro, qui indique au système d’exploitation de remonter ce système de fichiers en lecture seule s’il y a des erreurs lors de la tentative de montage en tant que système de fichiers en lecture et en écriture.

Donc, il n’y a aucune mention de la façon dont l’horodatage d’accès sera géré. Creusons plus profondément et voyons quoi /proc/mounts peut nous dire. Nous allons canaliser la sortie de /proc/mounts à travers grep. Notre chaîne de recherche sera « sda », l’identifiant du disque dur.

Nous tapons ce qui suit:

cat /proc/mounts | grep "sda"

Nous voyons maintenant les options suivantes:

  • rw: Le système de fichiers sera monté en tant que système de fichiers en lecture et en écriture.
  • relatime: Le système de fichiers utilisera le schéma «relative atime» pour mettre à jour les horodatages d’accès.

D’où vient cela? Eh bien, le relatime schéma est utilisé dans les situations suivantes:

  • Quand le valeurs par défaut /etc/fstab l’option est utilisée.
  • Quand le relatime /etc/fstab l’option est utilisée.
  • Lorsqu’aucune option d’horodatage d’accès n’est utilisée dans /etc/fstab, et vous utilisez le noyau Linux 2.6.30 ou plus récent.

Notre /etc/fstab entrée pour le ext4 le système de fichiers n’a spécifié aucune option de mise à jour d’horodatage d’accès, donc Linux a fait le choix judicieux et a utilisé relatime.

Les horodatages sont importants

Les horodatages nous permettent de voir facilement quand un fichier a été consulté, modifié ou changé. Mais, plus important encore, ils fournissent un moyen de sauvegarder et de synchroniser les logiciels pour déterminer quels fichiers doivent être sauvegardés.

La possibilité de manipuler les horodatages s’avérera utile chaque fois que vous aurez besoin de convaincre de force un programme d’inclure ou d’ignorer un fichier ou un ensemble de fichiers.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Jailbreaker votre iPhone ou iPod Touch avec iOS 4 en toute simplicité

Jailbreaker votre iPhone ou iPod Touch avec iOS 4 en toute simplicité

Comment partager les fichiers de votre ordinateur avec une machine virtuelle

Comment partager les fichiers de votre ordinateur avec une machine virtuelle