Jak možná víte, časová razítka „čas přístupu“ a „čas úpravy“ souboru se po úpravě nebo úpravě souboru změní na aktuální čas. Někdy možná budete chtít zachovat stará časová razítka z jakéhokoli důvodu i po úpravách nebo úpravách souborů. Tento stručný průvodce vysvětluje, jak upravit soubor bez změny jeho časových razítek v Linuxu.
Pokud toho o časových razítkách souborů v Linuxu moc nevíte, podívejte se do následujícího průvodce.
- Časová razítka souborů Linux s příklady
Upravit soubor beze změny jeho časových razítek v Linuxu
Časová razítka souboru lze aktualizovat pomocí touch
příkaz. Časová razítka se také aktualizují, když ručně přidáme obsah do souboru nebo z něj odstraníme data. Pokud chcete změnit obsah souborů bez změny jejich časových razítek, neexistuje žádný přímý způsob, jak to udělat. Ale je to možné!
Můžeme použít jeden z touch
možnost příkazu -r
(odkaz) pro zachování časových razítek souboru po jeho úpravě nebo úpravě. -r
volba se používá k nastavení časových značek jednoho souboru na hodnoty časových značek jiného.
Mám textový soubor s názvem ostechnix.txt
. Podívejme se na časová razítka tohoto souboru pomocí stat
příkaz:
$ 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-12 19:47:55.992788870 +0530
Modify: 2020-11-12 19:47:55.992788870 +0530
Change: 2020-11-12 19:47:55.992788870 +0530
Birth: -
Jak již bylo řečeno, pokud změníme obsah nebo metadata tohoto souboru, změní se také časová razítka.
Nyní vytvořte nový prázdný soubor, například ostechnix.timestamp
, se stejnými časovými razítky jako ostechnix.txt
pomocí touch
příkaz:
$ touch -r ostechnix.txt ostechnix.timestamp
Zkontrolujte časová razítka nového souboru:
$ stat ostechnix.timestamp
File: ostechnix.timestamp
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 801h/2049d Inode: 4328645 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ sk) Gid: ( 1000/ sk)
Access: 2020-11-12 19:47:55.992788870 +0530
Modify: 2020-11-12 19:47:55.992788870 +0530
Change: 2020-11-12 19:48:48.934235300 +0530
Birth: -

Vidět? Atime obou souborů a mtime časová razítka jsou stejná!
Nyní proveďte změny v hlavním souboru, tj. ostechnix.txt
. Jak jste uhodli, časová razítka hlavního souboru se změní.
Nakonec zkopírujte časová razítka nového souboru, tj. ostechnix.timestamp
do hlavního souboru:
$ touch -r ostechnix.timestamp ostechnix.txt
Nyní má hlavní soubor svá stará časová razítka, než byl upraven/změněn.
Upozorňujeme, že časová razítka času změny (ctime) nemůžeme zachovat. Vždy se aktualizuje na aktuální čas.
TL;DR
Vytvořte nový soubor se stejnými časovými razítky jako hlavní soubor pomocí touch
proveďte změny v hlavním souboru a nastavte časová razítka nového souboru na hlavní soubor pomocí -r
možnost.
Doufám, že to pomůže.