Linkare files o directory

di Luca Bove (PuntoWeb.Net Srl)

Linkare files o directory Come posso linkare files o directory?

Linkare file e directory è facile, e rende la vita più semplice. Per esempio, Star Office 5.2 per default crea una directory di lavoro chiamata ~/office52/user/work, che viene usata per memorizzare i vostri lavori. Ma personalmente preferisco memorizzare tutti i miei lavori nella stessa directory.
Quando uso altri programmi, trovo fastidioso dover digitare l'intero percorso per arrivare al mio lavoro, così ho creato un link da ~/lavoro a ~/office52/user/work.
Richiamando la directory "lavoro" vado direttamente in "office52/user/work".

Ci sono due tipi di links: "hard link" o collegamenti fisici e "soft link" o collegamenti simbolici. In questo articolo cercheremo di chiarire la differenza tra i due.

Poiché le directory possono essere linkate solo utilizzando soft link (ad eccezione della root), ho creato il link con il seguente comando:
> ln -s ~/office52/user/work

Questo ha creato un link SIMBOLICO da ~/work a ~/office52/user/work. Ma io voglio chiamare la mia directory in un altro modo. Io voglio un altro link alla mia directory di lavoro, ma la voglio chiamare "lavoro", allora eseguo il comando:

> ln -s ~/office52/user/work ~/lavoro

I link simbolici ai file si fanno nella stessa identica maniera, con lo stesso identico comando.

Riguardo invece ai "hard link" c'é da dire che non sono usati molto. I moderni sistemi Linux hanno in genere risorse sufficienti per rendere superfli i collegamenti fisici.
Introduciamo brevemente l'inode: le persone richiamano i file e le directory usando il loro nome, i sistemi Linux invece li richiamano per "inode" che é un numeretto. I collegamenti simbolici utilizzano un inode extra, invece i collegamenti fisici utilizzano lo stesso. In altre parole con il collegamento simbolico si crea un altro file (anche se particolare), con il collegamento fisico si punta allo stesso file o se si preferisce SONO lo stesso file.

Vediamo con un esempio la differenza tra un file con un hard link e un soft link:

Eseguite i seguenti comandi:
> touch miofile
> ln miofile miofile-hard
> ln -s miofile miofile-soft
> ls -il miofile*

Otterrete come output qualcosa del genere:

130259 -rw-rw-r-- 2 luca noze 0 Ott 01 12:22 miofile
130259 -rw-rw-r-- 2 luca noze 0 Ott 01 12:22 miofile-hard
130260 lrwxrwxrwx 1 luca noze 4 Ott 01 12:22 miofile-soft -> miofile


Come si vede, miofile e miofile-hard hanno lo stesso inode (I colonna), mentre miofile-soft ne ha uno diverso.
I link simbolici si notano perché hanno la lettera "l" all'inizio dei permessi. Alla fine viene anche indicato dove punta il collegamento: ( -> miofile).
Formalmente, nei link simbolici, vengono mostrati come attivi tutti i permessi degli ultimi 9 bit (lettura, scrittura ed esecuizione per tutti gli utenti), perché quelli che contano sono in realtà i permessi del file (o della directory) cui effettivamente punta il collegamento. Ciò non avviene con gli hard link. I problemi con i collegamenti fisici avvengono quando si deve cancellare un file. Quando si cancella un file, Linux elimina il riferimento al suo inode dalla directory che lo contiene. Quindi quando si utilizzano i collegamenti fisici, un file viene cancellato effettivamente solo quando sono stati eliminati tutti i riferimenti a questo.

Questa spiegazione non è ovviamente esaustiva, ma è sufficiente per iniziare.
Per ulteriori informazioni usate il comando man ln.

Per commentare e discutere l'articolo clicca qui

AUTORE DEL TESTO
Luca Bove (PuntoWeb.Net Srl)

Pubblicato il: 28/08/2001