>Ma veramente!? – Cronaca del crtime su sistemi Linux

>Ok, non scrivo da un bel po’ su questo blog, ma questa cosa vorrei condividerla.

LA PREMESSA

Non voglio dire di essere un grande esperto, ma ho comunque anni e anni di esperienza su sistemi Linux che rendono la questione ancora più interessante…e questo ha contribuito ancora di più a farmi sentire un pirla nella “scoperta” che ho fatto 🙂

IL FATTO

A lavoro per diverse ragioni dovevo risalire alla data di creazione di un file.

Bene, così per abitudine:

$ ls -l

mmh no vero, non c’è.

$ man ls

mmmh niente di utile.

$ stat

mmh Access, Modify e Change, ma niente Create o Creation.

$ man stat

[…]

%x Time of last access

%X Time of last access as seconds since Epoch

%y Time of last modification

%Y Time of last modification as seconds since Epoch

%z Time of last change

%Z Time of last change as seconds since Epoch

[..]

mmh niente da fare. Iniziano i primi FORTI dubbi. Al che per togliersene un bel po’

$ man 2 fstat


[..]

struct stat {

dev_t st_dev; /* ID of device containing file */

ino_t st_ino; /* inode number */

mode_t st_mode; /* protection */

nlink_t st_nlink; /* number of hard links */

uid_t st_uid; /* user ID of owner */

gid_t st_gid; /* group ID of owner */

dev_t st_rdev; /* device ID (if special file) */

off_t st_size; /* total size, in bytes */

blksize_t st_blksize; /* blocksize for file system I/O */

blkcnt_t st_blocks; /* number of 512B blocks allocated */

time_t st_atime; /* time of last access */

time_t st_mtime; /* time of last modification */

time_t st_ctime; /* time of last status change */

};

[..]

ma…ma…NON C’È!

LA “SCOPERTA

Finalmente è stato introdotto con l’arrivo di ext4.

In aggiunta ai campi tradizionali (access,modification,change) sono stati aggiunti il crtime(creation) e dtime(deletion) legati all’inode.

Al momento sembra mancare negli strumenti tradizionali (stat, find, ls) la possibilità di ottenere informazioni dal filesystem ext4 maggiori rispetto a quanto possibile per ext2 o ext3.

Per ottenere queste informazioni:

# debugfs -R ‘stat /percorso/file’ /dev/sda1

dove /dev/sda1 è il dispositivo su cui è montato il filesystem dove risiede il file di cui vogliamo vedere queste informazioni.

Inode: 524360 Type: regular Mode: 0644 Flags: 0x80000

Generation: 1374299388 Version: 0x00000000:00000001

User: 0 Group: 0 Size: 515

File ACL: 0 Directory ACL: 0

Links: 1 Blockcount: 8

Fragment: Address: 0 Number: 0 Size: 0

ctime: 0x4d62a41b:29f0e708 — Mon Feb 21 18:42:51 2011

atime: 0x4e44d538:d129cbbc — Fri Aug 12 09:24:40 2011

mtime: 0x4d62a41b:1d8b1d3c — Mon Feb 21 18:42:51 2011

crtime: 0x4d62a41b:1d8b1d3c — Mon Feb 21 18:42:51 2011

Size of extra inode fields: 28

EXTENTS:

(0):2167296

CONCLUSIONI

Le conclusioni in questa storia sono:

  1. non si finisce mai di imparare…;
  2. è terribile quando sei straconvinto di una cosa per anni e accorgersi che era completamente sbagliata;
  3. La maggior parte di chi legge aveva la mia stessa convinzione ma non lo dirà mai, anzi dirà che lo sapeva perfettamente;
  4. Non so che gli costava aggiungere questo campo anche prima.

Ogni altra aggiunta e spiegazione su questo fatto sono ben voluti.

  1. Roberto Gradini says:

    >prego

  2. Aldo says:

    >Grazie, Lorenzo! 🙂

Leave a Comment

Your email address will not be published.