Způsoby platby Abuse

Jak zobrazit datum vytvoření souboru v systému Linux

22.04.2022, 18:05

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.

Datum vytvoření souboru

Standard POSIX specifikuje pouze 3 typy časových značek, které musí souborový systém uchovávat:

  • atime - čas posledního přístupu k souboru.
  • mtime - čas poslední modifikace obsahu.
  • ctime - čas poslední změny přístupových práv nebo vlastníka.

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:

  • Ext4 - crtime
  • ZFS - crtime
  • XFS - crtime
  • Btrfs - otime
  • JFS - di_otime

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ášť.

Použití stat

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

Jak zobrazit datum vytvoření souboru v systému Linux

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é.

Jak zobrazit datum vytvoření souboru v systému Linux

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

Jak zobrazit datum vytvoření souboru v systému Linux

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é.

Použití systému DebugFS

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

Jak zobrazit datum vytvoření souboru v systému Linux

Pro zobrazení souborového systému se bude hodit příkaz df:

$ df /home/root-user/scripts/main_script.txt

Jak zobrazit datum vytvoření souboru v systému Linux

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

Jak zobrazit datum vytvoření souboru v systému Linux

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.