V systému Linux se ve vlastnostech souboru ve správci souborů zobrazují pouze informace o datu posledního přístupu k souboru a datu jeho změny. Datum vytvoření se zde však nezobrazuje. Někdy se na něj potřebujete podívat, například abyste zjistili, kdy se protokol zaznamenává. V tomto návodu si povíme, jak zjistit, jaká data jsou uložena v souborových systémech Linuxu, a vysvětlíme si, jak zjistit datum vytvoření souboru v Linuxu. Zmíníme se hned o dvou vhodných způsobech, z nichž každý má své zvláštnosti.
Standard POSIX specifikuje pouze 3 typy časových značek, které musí souborový systém uchovávat:
Proto ve starých souborových systémech často není možné zobrazit informaci o datu vytvoření souboru. V moderních souborových systémech (ext4, zfs, XFS apod.) je však již uložena.
Údaje o datu vytvoření jsou zaznamenány ve speciálním poli:
Tyto informace lze zobrazit dvěma způsoby: stat a debugfs. První metoda však není vhodná pro uživatele všech linuxových distribucí. Druhá metoda je univerzální, ale není tak snadné ji používat. Zabývejme se každou z nich zvlášť.
Nástroj stat zobrazuje podrobné informace o souboru. Mimo jiné zobrazuje datum, kdy byl soubor v Linuxu vytvořen. Chcete-li jej spustit v terminálu, stačí zadat cestu k souboru. Podívejme se například na informace o obrázku pic_1.jpeg
uloženém v katalogu /home/root-user/Pictures
:
$ stat /home/root-user/Pictures/pic_1.jpeg
Potřebné informace jsou zaznamenány ve sloupci Created. A pomocí volby -c můžete nastavit určitá pravidla formátování výstupních informací, například ponechání pouze potřebného sloupce:
$ stat -c '%w' /home/root-user/Pictures/pic_1.jpeg
Je tu však jedna malá potíž. V některých distribucích Linuxu bude toto pole při použití nástroje stat prázdné.
Hlavním důvodem je to, že výstup se zobrazuje v programu statx(2). Tento shell byl přidán do knihovny glibc ve verzi 2.28. To znamená, že podpora tohoto shellu se objevila v sadě základních systémových nástrojů GNU coreutils 8.31. Chcete-li zjistit verzi, spusťte tento příkaz:
$ stat --version
V důsledku toho bude stat
schopen vypsat údaje o vytváření souborů pouze tehdy, pokud jsou splněny výše popsané specifické podmínky. Například v distribuci Ubuntu 21.10 vše funguje bez problémů, ale v Ubuntu 20.04 bude pole prázdné.
Nástroj DebugFS nemá žádná omezení týkající se verze. Bude fungovat vždy. Postup jeho použití je však poněkud složitější. Je to proto, že abyste mohli zobrazit datum vytvoření souboru prostřednictvím nástroje debugfs, musíte znát jeho číslo inodu a souborový systém. Chcete-li zjistit inode, použijte příkaz ls
s parametrem -i
a zadejte cestu k souboru:
$ ls -i /home/root-user/scripts/main_script.txt
Pro zobrazení souborového systému se bude hodit příkaz df
:
$ df /home/root-user/scripts/main_script.txt
Nyní máte všechny potřebné údaje a můžete přejít k nástroji debugfs. Musíte mu předat parametr -R
, zadat číslo inodu
a poté název souborového systému:
$ sudo debugfs -R 'stat <28>' /dev/sda5
Poté budete moci v terminálu najít pole, kde je uloženo datum vytvoření. V našem případě je to crtime.
Tím je návod dokončen.