Hintergrund Manchmal müssen wir den Erstellungszeitpunkt einer Datei ermitteln. Zum Beispiel: Als ich das „xtrabackup-Schema“ studierte, wollte ich durch Beobachtung bestätigen, dass xtrabackup_log die erste erstellte und die letzte gespeicherte Datei war. Wir müssen den Erstellungszeitstempel und den Änderungszeitstempel der Datei xtrabackup_logfile kennen. Review: Drei Zeitstempel für Linux-Dateien Das Linux-Dateisystem speichert drei Zeitstempel, die durch Anzeigen der Dateiinformationen mit dem Befehl stat abgerufen werden können. Dies sind ATime, MTime und CTime. [root@192-168-199-198 Backups]# stat 2.txt Datei: '2.txt' Größe: 16 Blöcke: 8 IO Blöcke: 4096 reguläre Datei Gerät: 821h/2081d Inode: 15 Links: 1 Zugriff: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Zugriff: 2019-07-23 12:12:14.276981038 +0800 Ändern: 2019-07-23 12:12:41.415980158 +0800 Änderung: 2019-07-23 12:12:41.415980158 +0800 Geburt: - ATime - die letzte Zugriffszeit der Datei Immer wenn eine Datei gelesen wird, wird ATime aktualisiert, um dem durch den Befehl stat abgerufenen Access-Wert zu entsprechen. [root@192-168-199-198 Backups]# cat 2.txt #<-- Datei lesen 121231233123123 [root@192-168-199-198 Backups]# stat 2.txt Datei: '2.txt' Größe: 16 Blöcke: 8 IO Blöcke: 4096 reguläre Datei Gerät: 821h/2081d Inode: 15 Links: 1 Zugriff: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Zugriff: 2019-07-23 12:22:09.644961733 +0800 #<-- Die Zeit hat sich geändert Ändern: 2019-07-23 12:12:41.415980158 +0800 Änderung: 2019-07-23 12:12:41.415980158 +0800 Geburt: - MTime - der Zeitpunkt der letzten Änderung des Dateiinhalts Wenn die Datei geschrieben wird, wird CTime entsprechend dem durch den Befehl stat erhaltenen Modify-Wert aktualisiert. [root@192-168-199-198 Backups]# echo hello_world > 2.txt #<-- Dateiinhalt ändern [root@192-168-199-198 Backups]# stat 2.txt Datei: '2.txt' Größe: 12 Blöcke: 8 IO Blöcke: 4096 reguläre Datei Gerät: 821h/2081d Inode: 15 Links: 1 Zugriff: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Zugriff: 2019-07-23 12:22:09.644961733 +0800 Ändern: 2019-07-23 12:26:23.466953503 +0800 #<-- Die Zeit hat sich geändertÄndern: 2019-07-23 12:26:23.466953503 +0800 Geburt: - Verwenden Sie hier nicht vi, um den Dateiinhalt zu ändern, da die Verwendung von vi zum Ändern des Dateiinhalts dazu führen kann, dass sich der Inode ändert, d. h. die von Ihnen beobachtete Datei ist nicht die vorherige Datei! Dies hängt mit dem Prinzip von vi zusammen. CTime – der Zeitpunkt der letzten Änderung der Dateiattribute Wenn das Dateiverzeichnis geändert wird oder der Dateieigentümer, die Berechtigungen usw. geändert werden, wird auch CTime entsprechend dem durch den Befehl stat erhaltenen Änderungswert aktualisiert. [root@192-168-199-198 Backups]# chmod 777 2.txt #<-- Dateiattribute ändern [root@192-168-199-198 Backups]# stat 2.txt Datei: '2.txt' Größe: 12 Blöcke: 8 IO Blöcke: 4096 reguläre Datei Gerät: 821h/2081d Inode: 15 Links: 1 Zugriff: (0777/-rwxrwxrwx) Uid: (0/root) Gid: (0/root) Zugriff: 2019-07-23 12:22:09.644961733 +0800 Ändern: 2019-07-23 12:26:23.466953503 +0800 Änderung: 2019-07-23 12:30:35.830945320 +0800 #<-- Zeit geändertGeburt: - Linux kann die Dateierstellungszeit nicht abrufen? Jetzt wissen wir, dass es unter Linux drei Arten von Zeit gibt: ATime, MTime und CTime. Da wundern wir uns, warum es keine CRTime (Erstellungszeit) gibt. Im Vergleich zum Windows-System (siehe oben) gibt es im Windows NTFS-Dateisystem drei Zeitstempel, einschließlich der „Erstellungszeit“. In der Designphilosophie von Linux gibt es jedoch keine „Erstellungszeit“ für Dateien, sodass frühe Versionen des ext-Dateisystems die „Erstellungszeit“ für Dateien nicht unterstützen. Ab der ext4-Version wird die Dateierstellungszeit jedoch im Inode des ext4-Dateisystems gespeichert, sodass das ext4-Dateisystem die Dateierstellungszeit auch mithilfe einer speziellen Methode abrufen kann. Außerdem wird erläutert, dass die Ermittlung der Erstellungszeit einer Datei davon abhängt, ob das Dateisystem dies unterstützt. Schritte zum Ermitteln der Dateierstellungszeit unter Linux Das CentOS7-Linux-System verfügt über ein Tool namens debugfs, mit dem die Erstellungszeit von Dateien im ext4-Dateisystem ermittelt werden kann. man debugfs hat herausgefunden, dass die Beschreibung des Tools „ext2/ext3/ext4-Dateisystem-Debugger“ lautet, es unterstützt also das xfs-Dateisystem nicht. Es ist nicht klar, ob das häufig verwendete xfs-Dateisystem das Abrufen der Dateierstellungszeit unterstützt und wie dies zu tun ist. Leser müssen die offizielle Dokumentation zu Rate ziehen. 1. Holen Sie sich die Inode-Nummer der Datei Methode 1: [root@192-168-199-198 Backups]# stat /backups/2.txt Datei: „/backups/2.txt“ Größe: 30 Blöcke: 8 IO Blöcke: 4096 reguläre Datei Gerät: 821h/2081d Inode: 14 #<--- Diese Links: 1 Zugriff: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Zugriff: 2019-07-23 12:49:11.462909146 +0800 Ändern: 2019-07-23 12:49:11.462909146 +0800 Änderung: 2019-07-23 13:08:20.138871900 +0800 Geburt: - Methode 2: [root@192-168-199-198 Backups]# ls -i /backups/2.txt 14 /backups/2.txt Hier erhalten wir die Inode-Nummer 14. 2. Suchen Sie den Datenträgerpfad, auf dem sich die Datei befindet [root@192-168-199-198 Backups]# df -h Verwendete Dateisystemgröße Verfügbare Nutzung% Eingebunden auf /dev/mapper/centos-root 46 G 23 G 24 G 49 % / devtmpfs 3,8 G 0 3,8 G 0 % /Entwickler tmpfs 3,9 G 8,0 K 3,9 G 1 % /Entwickler/shm tmpfs 3,9 G 12 M 3,8 G 1 %/Lauf tmpfs 3,9 G 0 3,9 G 0 % /sys/fs/cgroup /dev/sdb1 100 G 77 G 24 G 77 % /data2 /dev/sdc1 50G 53M 47G 1% /backups #<--- Sie können sehen, dass die Dateien hier sind /dev/sda1 1014M 142M 873M 14% /boot tmpfs 781M 0 781M 0 % /run/Benutzer/0 Der Datenträgerpfad lautet /dev/sdc1 3. Verwenden Sie debugfs, um die Dateierstellungszeit anzuzeigen [root@192-168-199-198 Backups]# debugfs -R 'stat <14>' /dev/sdc1 debugfs 1.42.9 (28. Dezember 2013) Inode: 14 Typ: regulär Modus: 0644 Flags: 0x80000 Generation: 737271740 Version: 0x00000000:00000001 Benutzer: 0 Gruppe: 0 Größe: 30 Datei-ACL: 0 Verzeichnis-ACL: 0 Links: 1 Blockanzahl: 8 Fragment: Adresse: 0 Nummer: 0 Größe: 0 ctime: 0x5d369644:211c1170 – Dienstag, 23. Juli 2019, 13:08:20 Uhr atime: 0x5d3691c7:6e5dbb68 – Dienstag, 23. Juli 2019, 12:49:11 Uhr mtime: 0x5d3691c7:6e5dbb68 – Dienstag, 23. Juli 2019, 12:49:11 Uhr crtime: 0x5d3691c7:6e5dbb68 – Dienstag, 23. Juli 2019, 12:49:11 Uhr Größe der zusätzlichen Inode-Felder: 28 UMFANG: (0):35337 Skript zum Abrufen der Dateierstellungszeit Angesichts der Tatsache, dass der Vorgang zum Abrufen des Zeitschritts für die Dateierstellung etwas umständlich ist (obwohl es nur drei Schritte sind :)) Ich stelle hier ein Skript zur Verfügung vi statx #!/bin/sh [ $# -ne 1 ] && echo "Verwendung: $0 {FILENAME}" && exit 1 INODE=`ls -i $1 |awk '{print $1}'` DATEINAME=$1 #Wenn der Parameter / enthält, holen Sie sich den Verzeichnispfad des Parameters und wechseln Sie in das Verzeichnis `echo $FILENAME |grep / 1> /dev/null` && { FPWD=${FILENAME%/*};FPWD=${FPWD:=/};cd ${FPWD};FPWD=`pwd`; } || FPWD=`pwd` Array = (`echo ${FPWD} | sed 's@/@ @g'`) Arraylänge=${#array[@]} für ((i=${array_length};i>=0;i--)) Tun nicht gesetztes Array[$i] SUBPWD=`echo " "${array[@]} | sed 's@ @/@g'` DISK=`df -h |grep ${SUBPWD}$ |awk '{print $1}'` [[ -n $DISK ]] && abbrechen Erledigt #Beenden, wenn es nicht ext4 ist [[ "`mount |grep ${DISK} |awk '{print $5}'`" != "ext4" ]] && { echo ${DISK} wird auf Typ ext4 nicht gemountet! Nur ext4-Dateisystemunterstützung!;exit 2; } debugfs -R "stat <${INODE}>" ${DISK} verwenden: chmod +x statx mv statx /usr/sbin/statx [root@192-168-199-198 Backups]# statx 2.txt debugfs 1.42.9 (28. Dezember 2013) Inode: 14 Typ: regulär Modus: 0644 Flags: 0x80000 Generation: 737271740 Version: 0x00000000:00000001 Benutzer: 0 Gruppe: 0 Größe: 30 Datei-ACL: 0 Verzeichnis-ACL: 0 Links: 1 Blockanzahl: 8 Fragment: Adresse: 0 Nummer: 0 Größe: 0 ctime: 0x5d369644:211c1170 – Dienstag, 23. Juli 2019, 13:08:20 Uhr atime: 0x5d36bb8f:56eb1e70 – Dienstag, 23. Juli 2019, 15:47:27 Uhr mtime: 0x5d3691c7:6e5dbb68 – Dienstag, 23. Juli 2019, 12:49:11 Uhr crtime: 0x5d3691c7:6e5dbb68 – Dienstag, 23. Juli 2019, 12:49:11 Uhr Größe der zusätzlichen Inode-Felder: 28 UMFANG: (0):35337 ! ! ! Bitte in Produktionsumgebungen mit Vorsicht verwenden. Shell-Skripte führen kaum Ausnahmebehandlungen durch, unterstützen keine Pipes, keine Verzeichnisse und wurden nicht umfassend getestet. Im tatsächlichen Kampf gehen wir zurück und verwenden diese Methode, um zu bestätigen, ob das „Xtrabackup-Schema“ korrekt ist. Was wir überprüfen müssen, ist: xtrabackup_log ist die erste erstellte und die letzte gespeicherte Datei. 1. Erstellen Sie ein Backup DATE=`Datum "+%Y%m%d%H%M%S"` xtrabackup -uroot -proot \ -S /tmp/mysql3306.sock \ --Backup \ --target-dir=/backups/$DATE 2. Finden Sie die crtime aller Sicherungsdateien cd /backups/$DATE >/tmp/1.txt >/tmp/2.txt finde . -type f >/tmp/1.txt für i in `cat /tmp/1.txt` Tun { echo -n $i" ";statx $i 2>/dev/null |grep crtime |awk '{print $7}'; } >>/tmp/2.txt Erledigt cat /tmp/2.txt |sort -k2 |weniger ###Das Folgende ist die Ausgabe### ./ibdata1 23:32:59 ./xtrabackup_logfile 23:32:59 #<---Sie können sehen, dass diese Datei die erste ist, die erstellt wurde./mysql/engine_cost.ibd 23:33:00 ./mysql/gtid_executed.ibd 23:33:00 ./mysql/help_category.ibd 23:33:00 ./mysql/hilfe_schlüsselwort.ibd 23:33:00 ./mysql/help_relation.ibd 23:33:00 ./mysql/help_topic.ibd 23:33:00 ./mysql/innodb_index_stats.ibd 23:33:00 ./mysql/innodb_table_stats.ibd 23:33:00 ./mysql/plugin.ibd 23:33:00 ./mysql/server_cost.ibd 23:33:00 ./mysql/servers.ibd 23:33:00 ./mysql/slave_master_info.ibd 23:33:00 ./mysql/slave_relay_log_info.ibd 23:33:00 ./mysql/slave_worker_info.ibd 23:33:00 ./mysql/time_zone.ibd 23:33:00 ./mysql/time_zone_leap_second.ibd 23:33:00 ... ./zabbix/trigger_tag.frm 23:33:09 ./zabbix/users.frm 23:33:09 ./zabbix/users_groups.frm 23:33:09 ./zabbix/usrgrp.frm 23:33:09 ./zabbix/valuemaps.frm 23:33:09 ./zabbix/widget_field.frm 23:33:09 ./zabbix/widget.frm 23:33:09 3. Finden Sie die mtime aller Sicherungsdateien >/tmp/1.txt >/tmp/2.txt finde . -type f >/tmp/1.txt für i in `cat /tmp/1.txt` Tun { echo -n $i" ";statx $i 2>/dev/null |grep mtime |awk '{print $7}'; } >>/tmp/2.txt Erledigt cat /tmp/2.txt |sort -k2 |weniger ###Das Folgende ist die Ausgabe### ./ibdata1 23:33:00 ./mysql/engine_cost.ibd 23:33:00 ./mysql/gtid_executed.ibd 23:33:00 ./mysql/help_category.ibd 23:33:00 ./mysql/hilfe_schlüsselwort.ibd 23:33:00 ./mysql/help_relation.ibd 23:33:00 ./mysql/help_topic.ibd 23:33:00 ./mysql/innodb_index_stats.ibd 23:33:00 ./mysql/innodb_table_stats.ibd 23:33:00 ./mysql/plugin.ibd 23:33:00 ... ./xtrabackup_logfile 23:33:09 #<---Sie können sehen, dass diese Datei zuletzt geändert und gespeichert wurde./zabbix/acknowledges.frm 23:33:09 ./zabbix/actions.frm 23:33:09 ... ./zabbix/users_groups.frm 23:33:09 ./zabbix/usrgrp.frm 23:33:09 ./zabbix/valuemaps.frm 23:33:09 ./zabbix/widget_field.frm 23:33:09 ./zabbix/widget.frm 23:33:09 Abschließend haben wir die Richtigkeit des ersten und siebten Schritts des xtrabackup-Schemas überprüft, indem wir uns die Erstellungs- und Änderungszeit der Dateien angesehen haben. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: So verwenden Sie Node zum Implementieren des statischen Datei-Cachings
>>: Wie MLSQL Stack das Stream-Debugging vereinfacht
1. Was ist Master-Slave-Replikation? Mithilfe der...
Im Allgemeinen ist es unwahrscheinlich, dass Sie ...
Die Verwendung der Clear-Eigenschaft zum Löschen v...
Flex(彈性布局) in CSS kann das Layout einer Webseite ...
Linearer Farbverlauf Hintergrundbild: linearer Fa...
Aufgrund der anfänglichen Partitionierung des Sys...
Verwenden Sie Anti-Shake, um DIV verschwinden zu ...
Inhaltsverzeichnis Szenario Wirkung Code Zusammen...
Hintergrund Vor nicht allzu langer Zeit habe ich ...
Inhaltsverzeichnis Ein kurzer Überblick über die ...
Inhaltsverzeichnis 2. Feldverkettung 2. Geben Sie...
Windows: Unterstützt NTFS, FAT Linux unterstützt ...
Ich freue mich, dass einige Blogger meinen Artike...
Inhaltsverzeichnis 1. Datenbankübersicht 1.1 Entw...
Inhaltsverzeichnis Hintergrund zum Schreiben Proj...