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

Quand « changer » ne signifie-t-il pas « modifier » ? Quand on parle d'horodatage des fichiers Linux. Dans ce guide, nous expliquerons comment le système les met à jour et comment les modifier vous-même.

Explication des horodatages des fichiers Linux pour : atime, mtime, ctime - %categories

La différence entre atime, mtime et ctime

Chaque fichier Linux possède 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 fois que le fichier a été lu. 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 sont référencées mais inchangées.

L'horodatage modifié indique la dernière fois que le contenu du fichier a été modifié. Un programme ou un processus modifie ou manipule le fichier. « Modifié » signifie que quelque chose dans le fichier a été modifié ou supprimé, ou que de nouvelles données ont été ajoutées.

Les horodatages modifiés n'indiquent pas les modifications apportées au contenu du fichier. Il s'agit plutôt du moment où les métadonnées liées au fichier ont été modifiées. Par exemple, les modifications des autorisations de fichiers mettront à jour l'horodatage modifié.

Le système de fichiers Linux ext4 standard alloue également de l'espace pour l'horodatage de création de fichier dans ses structures de système de fichiers internes, mais cela n'est pas encore implémenté. Parfois, cet horodatage est rempli, mais vous ne pouvez pas vous fier aux valeurs qu'il contient.

Horodatage détaillé

Les horodatages Linux contiennent un nombre au lieu de la date et de l'heure. Ce nombre est le nombre de secondes il y a L'ère 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 n'ont donc rien à voir avec le temps réel.

Lorsque Linux doit afficher un horodatage, il traduit le nombre de secondes en date et heure. Cela rend la compréhension plus facile pour les humains. L'emplacement et le fuseau horaire dans lesquels l'ordinateur visualise le fichier indiquent à l'ordinateur de convertir le nombre de secondes en date et 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 19 2038 03 pour être exact. C’est un chiffre important, mais est-ce suffisant ? Si vous ajoutez cela à l'ère Unix, puis que vous le traduisez en une date et une heure, vous obtenez le mardi 14 janvier 07 à XNUMX:XNUMX:XNUMX. Nous aurons besoin d’un système différent pour les horodatages avant cela.

Afficher les horodatages

Lorsque l'option -l (liste longue) est utilisée avec ls, comme indiqué ci-dessous, Vous pouvez voir l'horodatage modifié :

ls -l dp.c

Si vous souhaitez voir l'horodatage d'accès, utilisez l'option -lu (temps d'accès) comme suit :

ls -lu dp.c

Enfin, pour voir l'horodatage du changement, vous pouvez utiliser l'option -lc (heure du changement) ; Écrivez ce qui suit :

ls -lc dp.c

Explication des horodatages des fichiers Linux pour : atime, mtime, ctime - %categories

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

Lisez aussi:  Comment utiliser AUR dans Arch Linux

A voir Tous les horodatages à la fois, utilisez la commande stat comme suit :

statistique dp.c

Explication des horodatages des fichiers Linux pour : atime, mtime, ctime - %categories

Les fuseaux horaires sont répertoriés en bas de l'écran. Comme vous pouvez le constater, ils ont une composante de secondes très précise. À la fin de chaque horodatage, vous voyez également -0500 ou -0400.

Ce sont des décalages horaires. Le système de fichiers enregistre les horodatages UTC et les convertit dans le fuseau horaire local lorsqu'ils sont affichés par les statistiques. L'ordinateur que nous avons utilisé pour rechercher cet article a été configuré comme s'il se trouvait dans le fuseau horaire de l'Est (EST) des États-Unis.

Ce fuseau horaire est en retard de cinq heures sur le temps universel coordonné (UTC) lorsque l'heure de l'Est est en vigueur. Cependant, il y a quatre heures de retard sur le temps universel coordonné (UTC) lorsque l'heure avancée de l'Est (EDT) est en vigueur. En avril 2019, lorsque l'horodatage révisé a été modifié, l'heure normale de l'Est des États-Unis est entrée en vigueur. C'est pourquoi deux des horodatages ont un décalage de cinq heures, mais la version modifiée a un décalage de quatre heures.

Les décalages et les fuseaux horaires ne sont stockés nulle part. Il n'y a aucun inode ni aucun espace de système de fichiers alloué pour contenir ces valeurs. Vous devez calculer rapidement cela en utilisant l'horodatage (qui est toujours UTC), le fuseau horaire local de l'ordinateur visualisant le fichier et si l'heure d'été est en vigueur ou non.

Vous verrez également l'horodatage « Naissance », qui est réservé à la date de création du fichier. Ceci n'est pas implémenté et vous verrez un trait d'union « - » à la place de l'horodatage.

Modifier les horodatages

Si vous le souhaitez, vous pouvez modifier les horodatages du fichier. Vous pouvez utiliser la commande tactile pour modifier 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 pouvez utiliser l'option -a (heure d'accès). Cette commande définit l'horodatage d'accès sur l'heure actuelle de l'ordinateur :

statistique dp.c

Explication des horodatages des fichiers Linux pour : atime, mtime, ctime - %categories

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 l'option -m (heure modifiée) :

touch -m dp.c
statistique dp.c

Explication des horodatages des fichiers Linux pour : atime, mtime, ctime - %categories

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

Vous pouvez utiliser l'option -d (date) si vous souhaitez modifier à la fois les horodatages et l'accès modifié. Vous pouvez également spécifier l'heure et la date – vous n'êtes pas limité à modifier les horodatages au présent.

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

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

Explication des horodatages des fichiers Linux pour : atime, mtime, ctime - %categories

Nous avons maintenant défini l’horodatage d’accès et de modification sur une date antérieure. L'horodatage modifié est également mis à jour avec l'heure actuelle de l'ordinateur.

Vous pouvez également utiliser l'option -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 fichier :

touchez dp.c -r dice_words.sl3
statistique dp.c

Explication des horodatages des fichiers Linux pour : atime, mtime, ctime - %categories

Après cela, nous sommes presque revenus à notre point de départ, avec un mélange d'horodatages -0400 et -0500.

Lisez aussi:  Comment configurer le contrôle de version Subversion dans Ubuntu

Faisons quelque chose qui n'affecte que l'horodatage variable. Nous utiliserons la commande chmod pour accorder le fichier exécutable Exécuter les autorisations pour tous les utilisateurs :

chmod +x dp
statistique dp

L’horodatage modifié était le seul à être mis à jour. En effet, le fichier lui-même n'a pas changé, ni n'a été consulté ou modifié. Cependant, les métadonnées du fichier ont été modifiées.

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

Lorsqu'un système de fichiers est installé, vous pouvez utiliser certaines options pour spécifier comment ce système de fichiers s'exécute ou comment interagir avec lui. Ils sont stockés dans le fichier /etc/fstab, qui est lu et traité au démarrage. Vous pouvez également définir des options pour dicter quel système doit être utilisé pour mettre à jour l'horodatage d'accès.

Voici quelques-unes des options les plus populaires :

strictatime : cette option met à jour l’horodatage d’accès aux fichiers à chaque accès. Cette approche entraîne des coûts supplémentaires, mais certains serveurs peuvent bénéficier de ce système. Il présente peu d’avantages par rapport à un ordinateur de bureau ou portable.
noatime (no atime) : cette option désactive complètement la mise à jour des horodatages d'accès aux fichiers et répertoires. Cependant, les horodatages modifiés seront mis à jour.
nodiratime (no dir atime) : Cette option permet d'accéder aux horodatages des fichiers à mettre à jour, mais les désactive pour les répertoires.
relatime : Cette option ne met à jour l'horodatage d'accès que s'il date de plus de 24 heures ou si le précédent est plus ancien que l'horodatage actuel modifié ou modifié. Cela établit un bon équilibre entre la mise à jour fréquente des horodatages d’accès ou l’absence de mise à jour du tout.
Jetons un coup d'œil au fichier /etc/fstab pour cet ordinateur et voyons quelles options sont définies :

moins / etc / fstab

Explication des horodatages des fichiers Linux pour : atime, mtime, ctime - %categories

Le fichier /etc/fstab apparaît comme indiqué ci-dessous.

Explication des horodatages des fichiers Linux pour : atime, mtime, ctime - %categories

Voici le contenu du fichier sans le packaging :

# / etc / fstab: informations sur le système de fichiers statique.
#
# Utilisez 'blkid' pour imprimer l'identifiant universellement unique d'un
#appareil; Cela peut être utilisé avec UUID= comme moyen plus robuste de nommer les appareils
# qui fonctionne même si des disques sont ajoutés et supprimés. Voir fstab(5).
#
# <filet combustion propre> <monter point> <type> <Options> <déverser> <pass>
# / était sur / dev / sda1 lors de l'installation
UUID=4a143d08-8695-475b-8243-b13b56050fc2 / erreurs ext4=remount-ro 0 1 /swapfile aucun swap sw 0 0

Il n'y a que deux entrées, dont l'une est un fichier d'échange, que nous pouvons ignorer. L'autre est installé à la racine du système de fichiers ( / ) et se trouvait sur le périphérique /dev/sda1 au moment de l'installation. Il s'agit de la première partition du premier disque dur et elle contient le système de fichiers ext4.

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

Par conséquent, il n’y a aucune mention de la façon de gérer l’horodatage d’accès. Allons plus loin et vérifions ce que /proc/mounts peut nous dire. Nous connecterons la sortie de /proc/mounts via grep. Notre chaîne de recherche sera "sda", identifiant du disque dur.

Lisez aussi:  8 façons de supprimer des fichiers en toute sécurité sous Linux

Nous écrivons ce qui suit :

chat /proc/mounts | grep "sda"

Explication des horodatages des fichiers Linux pour : atime, mtime, ctime - %categories

Nous voyons maintenant les options suivantes :

rw : le système de fichiers sera monté en tant que système de fichiers en lecture-écriture.
relatime : le système de fichiers utilisera le système de « temps relatif » pour mettre à jour les horodatages d'accès.
D'où est-ce que sa vient? Eh bien, un graphique de liens est utilisé dans les situations suivantes :

Lors de l'utilisation de l'option par défaut /etc/fstab.
Lors de l'utilisation du relatime /etc/fstab.
Lorsque les options d'horodatage d'accès dans /etc/fstab ne sont pas utilisées et que vous utilisez le noyau Linux 2.6.30 ou version ultérieure.
Notre entrée /etc/fstab pour le système de fichiers ext4 ne spécifiait aucune option pour mettre à jour l'horodatage d'accès, donc Linux a fait le choix judicieux et a utilisé relatime.

Les horodatages sont importants

Les horodatages nous permettent de savoir facilement quand un fichier a été consulté, modifié ou modifié. Mais plus important encore, il offre un moyen de sauvegarder et de synchroniser le logiciel pour identifier les fichiers qui doivent être sauvegardés.

La possibilité de manipuler les horodatages s'avérera utile lorsque vous devrez convaincre avec force un programme d'inclure ou d'ignorer un fichier ou un groupe de fichiers.

Commandes Linux
Fichiers goudron·pv·cat·tac·chmod·grep ·diff·sed·ar·man·pushd·popd·fsck·Testdisk·suivants·fd·pandoc·cd·$ CHEMIN·awk·rejoindre·jq·plier·uniq·journalctl·queue·état·ls·fstab·echo·moins·chgrp·chown·tour·du dernier·instruments à cordes·type·rebaptiser·Zip *: français·ouvrir·monter·umount·installer·Fdisk·mkfs·rm·rmdir·rsync·df·gpg·vi·nano·mkdir·du·ln·pièce·convertir·rclone·déchiqueter·SRM·scp·gzip·chattr·cut·trouver·umask·wc· tr
Processus alias·écran·top·agréable·reins·Les Progrès·strass·systemd·tmux·chsh·Histoire·at·lot·faim·qui·dmesg·chfn·usermod·ps·chroot·xarg·tty·pinky·lsof·vmstat·temps mort·wall·Oui·tuer·sleep·sudo·su·fiable·groupeajouter·usermod·groupes·Lshw·shutdown·reboot·arrêt·éteindre·passwd·lscpu·crontab·données·bg·fg·pidof·nohup·pmap
Réseautage netstat·ping·traceroute·ip·ss·whois·fail2ban·bmon·creuser·doigt·nmap·ftp·boucle·wget·pour qui·whoami·w·iptables·ssh-keygen·ufw·arpenter·pare-feu
Vous pourriez l'aimer aussi