|
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.
|