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

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 de l’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 commandes "ls -l dp.c" dans une fenêtre de terminal.

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

La commande "stat dp.c" dans une fenêtre de terminal.

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

Ceux-ci sont décalages de fuseau horaire. 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.

En relation :  Ajjubhai vs Desi Gamers : qui est le meilleur dans la comparaison des statistiques de tir gratuit ?

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é au stockage 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.

Bientôt: Tout ce que vous avez toujours voulu savoir sur les inodes sous Linux

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

La commande "touch -a dp.c" dans une fenêtre de terminal.

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

La commande "touch -m dp.c" dans une fenêtre de terminal.

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é à la modification des 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

le "touch -d '2020-01-15 10:30:45' dp.c" commande dans une fenêtre de terminal.

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

La commande "touch dp.c -r dice_words.sl3" dans une fenêtre de terminal.

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

Les commandes "chmod + x dp" et "stat dp" dans une fenêtre de terminal.

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 consulté ni modifié. Cependant, les métadonnées sur le fichier était modifié.

Bientôt: Comment utiliser la commande chmod sous Linux

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.

En relation :  Comment numériser avec Microsoft Defender Antivirus sur Windows 10

Voici quelques-unes des options les plus courantes:

  • stricte heure (heure stricte): Cette option met à jour l’horodatage d’accès des fichiers à chaque fois qu’ils y accèdent. Cette approche comporte une surcharge, mais certains serveurs peuvent bénéficier de ce schéma. Il a peu de mérite sur un ordinateur de bureau ou 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. Cependant, les horodatages modifiés 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 (temps relatif): 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 "less / etc / fstab" dans une fenêtre de terminal.

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

Le fichier "/ etc / fstab" en less dans une fenêtre de terminal.

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 en cours de montage à 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"

le "cat / proc / montages |  grep 'sda'" commande dans une fenêtre de terminal.

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.

Bientôt: Comment écrire un fichier fstab sous Linux

Les horodatages sont importants

Les horodatages nous donnent un moyen facile de voir 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 se révélera 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.

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.