På et Linux-system viser filegenskaberne for en fil i filhåndteringen kun oplysninger om datoen for den sidste adgang til filen og datoen for ændring. Men oprettelsesdatoen vises ikke. Nogle gange er man nødt til at se på den, f.eks. for at finde ud af, hvornår loggen er blevet optaget. I denne vejledning fortæller vi, hvordan man kan se, hvilke data der er gemt i Linux-filsystemer, og hvordan man finder frem til oprettelsesdatoen for en Linux-fil. Vi nævner straks to praktiske måder med hver deres særpræg.
POSIX-standarden specificerer kun 3 typer tidsstempler, som et filsystem skal gemme:
Derfor er det i gamle filsystemer ofte umuligt at se oplysninger om datoen for filens oprettelse. Men i moderne filsystemer (ext4, zfs, XFS og så videre) er det allerede gemt.
Data om oprettelsesdatoen registreres i et særligt felt:
Der er to metoder til at se disse oplysninger: stat og debugfs. Den første metode er dog ikke egnet til brugere af alle Linux-distributioner. Den anden metode er universel, men ikke så nem at bruge. Lad os se på dem hver for sig.
Værktøjet stat viser detaljerede oplysninger om en fil. Det viser bl.a. datoen for, hvornår Linux-filen blev oprettet. For at køre det i terminalen skal du bare angive stien til filen. Lad os f.eks. se på oplysningerne om billedet pic_1.jpeg
, der er gemt i kataloget /home/root-user/Pictures
:
$ stat /home/root-user/Pictures/pic_1.jpeg
De nødvendige oplysninger er registreret i kolonnen Created. Og ved at bruge indstillingen -c kan du indstille visse formateringsregler for informationsoutputtet, f.eks. ved kun at efterlade den nødvendige kolonne:
$ stat -c '%w' /home/root-user/Pictures/pic_1.jpeg
Men der er et lille problem. På nogle Linux-distributioner vil dette felt være tomt, når man bruger stat-værktøjet.
Hovedårsagen er, at outputtet vises i statx(2). Shellen blev tilføjet til glibc-biblioteket i version 2.28. Det vil sige, at understøttelse af denne shell dukkede op i GNU coreutils 8.31-sættet af grundlæggende systemværktøjer. For at tjekke versionen skal du køre denne kommando:
$ stat --version
Derfor vil stat
kun kunne udlæse data om filoprettelse, hvis de specifikke betingelser, der er beskrevet ovenfor, er til stede. I Ubuntu 21.10-distributionen fungerer alt f.eks. uden problemer, men i Ubuntu 20.04 vil feltet være tomt.
DebugFS-værktøjet har ingen versionsbegrænsninger. Det vil altid virke. Men det er lidt mere kompliceret at bruge det. For at kunne se oprettelsesdatoen for en fil via debugfs skal man nemlig kende dens inode-nummer og filsystem. For at få inoden skal du bruge kommandoen ls
med indstillingen -i
og angive stien til filen:
$ ls -i /home/root-user/scripts/main_script.txt
For at se filsystemet er kommandoen df
praktisk:
$ df /home/root-user/scripts/main_script.txt
Nu har du alle de nødvendige data, og du kan gå videre til debugfs-værktøjet. Du skal give det indstillingen
-R
, angive inode-nummeret
og derefter navnet på filsystemet:
$ sudo debugfs -R 'stat <28>' /dev/sda5
Derefter vil du i terminalen kunne finde det felt, hvor oprettelsesdatoen er gemt. I vores tilfælde er det crtime.
Dette afslutter instruktionerne.