Ciao, Ti Presento gli iNode del tuo FileSystem! Articolo di Approfondimento..

Questa guida vuole essere un approfondimento sugli iNode del filesystem Linux. No, non è un nuovo prodotto della Apple, bensì una parte del nostro amato sistema operativo alla base di tutte le splendide funzionalità che ogni giorno ci accompagnano.

Partiamo dall’inizio: “che cosa è un filesystem?” è un semplice sistema di gestione file, generalmente è suddiviso in due parti:

  • i metadati anche chiamati “i dati relativi ai dati”;
  • i dati veri e propri;

La prima componente può sembrare al quanto strana e divertente, cosa significa “i dati relativi ai dati?”. Pensateci un po’ su e fate un ls -l su una qualsiasi delle vostre directory. Cosa vedete? Una serie di informazioni relative ad ogni file e directory; ma da dove vengono quelle informazioni?

Gli iNode del FileSystem

Eh si avete colto il punto, i cosìdetti metadata o inode rappresentano quella parte di filesystem che mantiene una scheda anagrafica di ogni oggetto nel vostro sistema operativo. Ogni oggetto, file o directory che sia, viene schedato e legato ad un numero.

Aprendo un terminale e digitando:

$ ls -i /etc/passwd
32820 /etc/passwd

Il numero 32820 rappresenta l’inode number del file passwd. Ma che informazioni risiedono negli inode? Di seguito una lista:

  • la dimensione in bytes dell’oggetto
  • il device Id
  • lo user proprietario del file
  • il gruppo associato al file
  • i permessi associati
  • alcune date o timestamp che registrano l’ultimo accesso e l’ultima modifica (ricorda che Linux non registra la data di creazione dei file)
  • un contatore di link che indica quanti hard-link sono legati a quel file
  • un puntatore allo spazio disco che contiene i dati veri e propri

Potete visionare tutte queste informazioni tramite il comando stat:

$ stat /etc/passwd

File: `/etc/passwd’
Size: 1988 Blocks: 8 IO Block: 4096 regular file
Device: 341h/833d Inode: 32820 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2005-11-10 01:26:01.000000000 +0530
Modify: 2005-10-27 13:26:56.000000000 +0530
Change: 2005-10-27 13:26:56.000000000 +0530

Che cosa me ne faccio ora?

Vi chiederete: “Ok adesso che so cosa sono gli iNode in che caso potrebbero tornarmi utili?” Vi presento una situazione in cui tutti noi ci siam trovati almeno una volta e non ne siamo usciti. Aprite un terminale e provate a lanciare questi comandi:

$ cd ~
$ touch \”incubo*
$ ls -l

Ora provate a rimuovere il file “incubo*…
Non ci riuscite vero? Ed ora? (non barate nautilus non può essere utilizzato :-) )
Non preouccupatevi quale il miglior modo per identificare in maniera univoca un file se non gli inode.

Procedete come segue:

$ cd ~
$ ls -il
123456 -rw-r–r– 1 viv viv 0 2006-01-27 15:49 “incubo*

Come potete notare il file incriminato ha come inode number il 123456.

Con questo numero sarà possibile effettuare una cancellazione pulita tramite il comando:

$ find . -inum 123456 -exec rm -i {} \;

Per ora è tutto alla prossima!

[grazie a andreac]