GNU/Linux >> Znalost Linux >  >> Linux

Časová razítka souborů Linux vysvětlena s příklady

Tento výukový program vysvětluje typy časových razítek souborů Linux a jak zobrazit a změnit časová razítka souboru pomocí touch příkaz s příklady.

Stručný úvod do časových razítek souborů Linux

V Linuxu a Unixu obecně má každý soubor tři typy časových razítek, jmenovitě atime (čas přístupu), mtime (čas úpravy) a čas c (čas změny). Jak název napovídá, časová razítka se používají ke zjištění, kdy byl soubor zpřístupněn, upraven a změněn.

Časové razítko času přístupu (nebo zkráceně atime) je čas posledního čtení souboru. Například jste mohli otevřít soubor. K souboru mohl přistupovat nějaký jiný program nebo vzdálený počítač. Možná jste přečetli obsah souboru pomocí příkazu (např. cat příkaz), nebo program (např. gedit, vim atd.). Soubor není upravován ani upravován. Přistupovali jste k němu pouze vy nebo jiný uživatel ze vzdáleného systému.

Časová značka času úpravy (neboli mtime) udává, kdy byl soubor (nebo adresář) naposledy upraven. Jinými slovy, mtime označuje čas, kdy byl obsah souboru změněn. Mohli jste například něco do souboru přidat nebo ze souboru něco odstranit nebo upravit obsah souboru.

Časové razítko času změny (nebo ctime) ukazuje, kdy byl naposledy změněn obsah souboru nebo metadata souboru (tj. atributy souboru, jako je vlastnictví souboru, oprávnění souboru nebo skupina).

Stručně řečeno,

  • atime – označuje čas posledního přístupu do souboru pro čtení obsahu.
  • mtime – označuje čas poslední úpravy k obsahu souboru.
  • ctime – označuje čas poslední změny k obsahu souboru nebo metadatům souboru (vlastník, skupina nebo oprávnění).

Časová razítka mohou být užitečná v různých situacích. Zde je několik případů použití časových razítek:

  • Vyhledejte a seřaďte soubory podle času přístupu nebo úpravy.
  • Vyhledejte a odstraňte soubory starší než X dní. Užitečné k vyčištění starých souborů na pevném disku.
  • Zkontrolujte, kdy byl konfigurační soubor změněn.
  • Ověřte, zda byl soubor zpřístupněn.
  • Ověřte, zda byl adresář aktualizován.
  • Najděte soubory starší nebo novější než X dní.

Zobrazte časová razítka souborů Linux pomocí stat a ls příkazy

Časová razítka souborů můžeme zobrazit v Linuxu pomocí stat příkaz. Podle manuálových stránek stat příkaz zobrazí stav souboru nebo systému souborů v systému Linux. Příkaz stat je součástí GNU Coreutils , takže se neobtěžujme jeho instalací.

Nyní se podívejme na časová razítka textového souboru s názvem ostechnix.txt pomocí stat příkaz:

$ stat ostechnix.txt

Ukázkový výstup:

  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:31:01.484504149 +0530
Modify: 2020-11-11 17:31:01.484504149 +0530
Change: 2020-11-11 17:31:01.484504149 +0530
 Birth: -

Poslední tři řádky ve výše uvedeném výstupu zobrazují čas přístupu, čas změny a časové razítko změny. Když právě vytvoříme nový soubor, všechna časová razítka jsou stejná.

Všimli jste si řádku "Birth: " na konci výstupu? Označuje časové razítko vytvoření souboru. Standard POSIX nedefinuje časové razítko pro vytvoření souboru. Některé systémy souborů (např. ext4, JFS, Btrfs) ukládají tuto hodnotu, ale v současné době neexistuje API jádra Linuxu místo časového razítka v řádku "Narození:" tedy vidíme pomlčku "-".

Časová razítka atime, mtime a ctime můžete také získat jednotlivě pomocí ls příkaz.

Chcete-li zobrazit časové razítko času modifikace (mtime), použijte ls -l příkaz:

$ ls -l ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Chcete-li zobrazit časové razítko času změny (ctime), spusťte ls -lc příkaz:

$ ls -lc ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Zde c příznak se používá k zobrazení času poslední změny metadat souboru nebo atributů souboru.

Časové razítko času přístupu (atime) zobrazíte pomocí ls -lu příkaz:

$ ls -lu ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Zde u flag zobrazuje čas posledního přístupu k souboru.

Změňte časová razítka souborů Linux pomocí touch příkaz

touch příkaz se používá ke změně časových razítek souborů a také k vytváření nových prázdných souborů v Linuxu. Stejně jako stat touch příkaz je také součástí GNU coreutils , takže jej také nemusíte instalovat.

Před změnou časových razítek získáme aktuální časová razítka souboru s názvem ostechnix.txt pro informaci:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:31:01.484504149 +0530
Modify: 2020-11-11 17:31:01.484504149 +0530
Change: 2020-11-11 17:31:01.484504149 +0530
 Birth: -

Jak můžete vidět ve výše uvedeném výstupu, soubor ostechnix.txt byl přístupný. upraveno a změněno ve stejné datum a čas, tj. 11. listopadu 2020 v 17:31:01.

Změňme časová razítka tohoto souboru pomocí touch příkaz jako níže:

$ touch ostechnix.txt

Výše uvedený příkaz změní všechna časová razítka (tj. atime, mtime a ctime) na aktuální čas vašeho počítače.

Nyní se podívejme na časová razítka souboru s stat příkaz:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:39:59.430610787 +0530
Modify: 2020-11-11 17:39:59.430610787 +0530
Change: 2020-11-11 17:39:59.430610787 +0530
 Birth: -

Vidět? Všechna časová razítka byla změněna na aktuální čas mého systému, tj. 2020-11-10 17:51:02 .

Je také možné měnit jednotlivá časová razítka samostatně. Například můžete změnit pouze čas přístupu (atime) pomocí -a příznak:

$ touch -a ostechnix.txt

Výše uvedený příkaz nastaví časové razítko přístupu na aktuální čas.

Nyní zkontrolujte časové razítko souboru ostechnix.txt soubor s stat příkaz:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:43:46.555428706 +0530
Modify: 2020-11-11 17:39:59.430610787 +0530
Change: 2020-11-11 17:43:46.555428706 +0530
 Birth: -

Jak vidíte na výše uvedeném výstupu, čas přístupu se změní na aktuální čas. Aktualizuje se také čas změny.

Chcete-li změnit pouze časové razítko změny (mtime), použijte -m příznak:

$ touch -m ostechnix.txt

Ověřte, zda se mtime změnil pomocí stat příkaz:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:43:46.555428706 +0530
Modify: 2020-11-11 17:47:17.577722187 +0530
Change: 2020-11-11 17:47:17.577722187 +0530
 Birth: -

Nyní se časové značky mtime a ctime změnily, zatímco atime zůstalo tak, jak je.

Jak jste si mohli všimnout, když změníme čas přístupu nebo čas úpravy, aktualizuje se také čas ctime.

Pokud chcete změnit časové razítko atime i mtime současně, použijte -d možnost.

$ touch -d "2020-11-11 17:50:01" ostechnix.txt

Pomocí stat ověřte, zda byla časová razítka atime a mtime změněna příkaz:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:50:01.000000000 +0530
Modify: 2020-11-11 17:50:01.000000000 +0530
Change: 2020-11-11 17:51:17.024213698 +0530
 Birth: -

Nyní jsme nastavili čas přístupu a čas úpravy na konkrétní čas, tj. 2020-11-11 17:50:01 . A časové razítko ctime bylo také aktualizováno na aktuální čas.

Je také možné použít konkrétní časové razítko místo aktuálního času pomocí -t vlajka také:

$ touch -t 2011111754 ostechnix.txt

Tento příkaz nastaví časová razítka atime a mtime na 2020-11-11 17:54:00 . Ověřte jej pomocí stat příkaz jako níže:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:54:00.000000000 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:56:20.844405239 +0530
 Birth: -

Jak již bylo řečeno, ctime se aktualizuje, když se změní atime a mtime. Pokud chcete změnit pouze časové razítko ctime, v touch není žádný vyhrazený příznak příkaz. Musíte tedy ručně změnit ctime úpravou metadat souboru nebo atributů souboru. Například přidělím spustitelné oprávnění do ostchnix.txt soubor s chmod příkaz:

$ chmod +x ostechnix.txt

Zkontrolujte, zda se ctime aktualizuje pomocí stat příkaz:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:54:00.000000000 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:57:21.022720776 +0530
 Birth: -

Vidět? Časové razítko ctime se změnilo, ale časy atime a mtime se nezměnily. Protože k souboru není ani přístup, nezměnil se. Změnil jsem pouze oprávnění k souboru.

Změňte časová razítka souborů zobrazením, přístupem nebo úpravou souborů

Jak již bylo řečeno, časové razítko atime se změní, když přistoupíme k souboru pro čtení. Zkuste získat přístup k souboru pro čtení pomocí cat příkaz a uvidíte, co se stane.

$ cat ostechnix.txt
This is a text file.

Nyní zkontrolujte, zda je aktualizováno časové razítko přístupu:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 18:00:16.005323521 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:57:21.022720776 +0530
 Birth: -

Vidět? Hodnota atime se nyní změnila.

Čas mtime se aktualizuje, když přidáme nebo odebereme data ze souboru.

Dovolte mi přidat řádek do ostechnix.txt soubor:

$ echo "modify this file" >> ostechnix.txt

Zkontrolujte časová razítka souborů:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 38        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 18:00:16.005323521 +0530
Modify: 2020-11-11 18:01:49.072771458 +0530
Change: 2020-11-11 18:01:49.072771458 +0530
 Birth: -

Od té doby, co se změnil obsah souboru, se změnily jeho mtime i ctime.

Změna časových razítek symbolických odkazů

Ve výchozím nastavení, pokud používáte touch příkaz na symbolickém odkazu (nebo symbolický odkaz), změní také časová razítka odkazovaného souboru.

Pokud chcete změnit pouze časové razítko symbolického odkazu, použijte -h , (--no-dereference ) možnost:

$ touch -h <path-to-symlink>

[Bonusový tip] Zkopírujte časová razítka z jiného souboru

Dotykový příkaz má volbu nazvanou -r, (--reference=) který umožňuje kopírovat časová razítka z jednoho souboru do druhého.

Následující příkaz zkopíruje časová razítka souboru1 do souboru2.

$ touch -r file1.txt file2.txt

Další podrobnosti najdete v manuálových stránkách stat a touch příkazy:

$ man stat
$ man touch

Závěr

V této příručce jsme probrali tři typy časových razítek souborů Linux, tj. atime, mtime a ctime, jak zobrazit časová razítka souborů pomocí stat a ls příkazy a nakonec jak změnit časová razítka souborů pomocí touch příkaz. Doufám, že to pomůže.


Linux
  1. Třídit příkaz v Linuxu s příklady

  2. Jak používat příkaz Vmstat v Linuxu vysvětleno na příkladech

  3. Soubor Časová razítka v Linuxu:atime, mtime, ctime Vysvětleno

  1. Linux cut Command Vysvětlení pomocí 6 příkladů

  2. 10 Quick Linux Tail Command s příklady

  3. Příkaz Linux Traceroute, vysvětlený s příklady

  1. Linuxový příkaz cksum vysvětlený pro začátečníky (s příklady)

  2. Příkaz Linux ldd vysvětlený s příklady

  3. Linux Tail Command s příklady