Maksutavat Abuse

Kuinka tarkastella tiedoston luontipäivämäärää Linuxissa

22.04.2022, 18:05

Linux-järjestelmässä tiedoston ominaisuudet tiedostonhallinnassa näyttävät vain tiedot tiedoston viimeisimmästä käyttöpäivästä ja muutospäivästä. Luontipäivää ei kuitenkaan näytetä. Joskus sinun on katsottava sitä esimerkiksi saadaksesi selville, milloin loki on tallennettu. Tässä ohjeessa kerromme, miten näet, mitä tietoja Linux-tiedostojärjestelmiin tallennetaan, ja selitämme, miten Linux-tiedoston luontipäivämäärä saadaan selville. Mainitaan kerralla kaksi kätevää tapaa, joilla kummallakin on omat erityispiirteensä.

Tiedoston luontipäivämäärä

POSIX-standardi määrittelee vain 3 erilaista aikaleimaa, jotka tiedostojärjestelmän on tallennettava:

  • atime - aika, jolloin tiedostoa viimeksi käytettiin.
  • mtime - aika, jolloin sisältöä viimeksi muutettiin.
  • ctime - aika, jolloin käyttöoikeuksia tai omistajaa viimeksi muutettiin.

Siksi vanhoissa tiedostojärjestelmissä on usein mahdotonta nähdä tietoa tiedoston luontipäivästä. Mutta nykyaikaisissa tiedostojärjestelmissä (ext4, zfs, XFS ja niin edelleen) se on jo tallennettu.

Luontipäivämäärää koskevat tiedot tallennetaan erityiseen kenttään:

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

Näitä tietoja voi tarkastella kahdella tavalla: stat ja debugfs. Ensimmäinen menetelmä ei kuitenkaan sovellu kaikkien Linux-jakeluiden käyttäjille. Toinen menetelmä on yleispätevä, mutta sitä ei ole niin helppo käyttää. Käsitellään kumpikin niistä erikseen.

Statin käyttäminen

Stat-apuohjelma näyttää yksityiskohtaisia tietoja tiedostosta. Se näyttää muun muassa päivämäärän, jolloin Linux-tiedosto on luotu. Käyttääksesi sitä terminaalissa sinun tarvitsee vain määrittää tiedoston polku. Katsotaan esimerkiksi tietoja kuvasta pic_1.jpeg, joka on tallennettu hakemistoon /home/root-user/Pictures:

$ stat /home/root-user/Pictures/pic_1.jpeg

Tarvittavat tiedot on tallennettu Created-sarakkeeseen. Ja käyttämällä -c-vaihtoehtoa voit asettaa tietyt muotoilusäännöt tietojen tulostukselle, esimerkiksi jättää vain tarvittavan sarakkeen:

$ stat -c '%w' /home/root-user/Pictures/pic_1.jpeg

Kuinka tarkastella tiedoston luontipäivämäärää Linuxissa

Mutta on yksi pieni vaikeus. Joissakin Linux-jakeluissa tämä kenttä on tyhjä, kun käytät stat-apuohjelmaa.

Kuinka tarkastella tiedoston luontipäivämäärää Linuxissa

Pääsyy on se, että tuloste näytetään statx(2)-ohjelmalla. Komentotulkki lisättiin glibc-kirjastoon versiossa 2.28. Eli tuki tälle komentotulkille ilmestyi GNU coreutils 8.31 -järjestelmän perusapuohjelmien joukkoon. Voit tarkistaa version suorittamalla tämän komennon:

$ stat --version

Kuinka tarkastella tiedoston luontipäivämäärää Linuxissa

Näin ollen stat pystyy tuottamaan tiedostonluontitietoja vain, jos edellä kuvatut erityisehdot täyttyvät. Esimerkiksi Ubuntu 21.10 -jakelussa kaikki toimii ongelmitta, mutta Ubuntu 20.04:ssä kenttä on tyhjä.

DebugFS:n käyttäminen

DebugFS-apuohjelmalla ei ole versiorajoituksia. Se toimii aina. Mutta sen käyttömenettely on hieman monimutkaisempi. Tämä johtuu siitä, että jotta voit tarkastella tiedoston luontipäivämäärää debugfs:n kautta, sinun on tiedettävä sen inode-numero ja tiedostojärjestelmä. Saat inode-numeron selville käyttämällä komentoa ls, jossa on -i-vaihtoehto ja jossa on tiedoston polku:

$ ls -i /home/root-user/scripts/main_script.txt

Kuinka tarkastella tiedoston luontipäivämäärää Linuxissa

Tiedostojärjestelmän tarkastelemiseksi df-komento on kätevä:

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

Kuinka tarkastella tiedoston luontipäivämäärää Linuxissa

Nyt sinulla on kaikki tarvittavat tiedot ja voit siirtyä debugfs-apuohjelmaan. Sinun on annettava sille -R-optio, määritettävä inode-numero ja sitten tiedostojärjestelmän nimi:

$ sudo debugfs -R 'stat <28>' /dev/sda5

Kuinka tarkastella tiedoston luontipäivämäärää Linuxissa

Tämän jälkeen löydät terminaalista kentän, johon on tallennettu luontipäivämäärä. Meidän tapauksessamme se on crtime.

Näin ohjeet on saatu valmiiksi.