Hard Links
Luca Giuzzi
giuzzi a dmf.bs.unicatt.it
Dom 30 Gen 2000 01:16:51 UTC
Sei sicuro che gli hard links fra directory siano proprio essenziali?
Non sono una `bella cosa'(tm), e, se passi attraverso le astrazioni
del filesystem non dovrebbero essere troppo importanti.
L'unico caso in cui la cosa potrebbe essere utile e' quello in cui hai
degli utenti (o dei programmi) che lavorano in un environment chrooted
e non vuoi copiare tutti i files ogni volta.
Comunque,
una soluzione al tuo problema c'e':
se i files si trovano su una partizione ext2 puoi usare il debugfs
per creare gli hard links fra directories.
`aprire' il filesystem con
open -w /dev/partizione
e poi dare i comandi (abbastanza logici)
cd directory_radice (relativa la partizione, non assoluta)
ln directory_originale directory_destinazione
quit
Questo fa quanto da te richiesto.
Una nota pero':
kids, do not try this at home! :)))
SunOS4 stesso aveva problemi nella rimozione delle direcory linkate
staticamente: se si vuole elimirare una dir legata ad altre da un hard
link, si devono eliminare tutte assieme [non e' come nel caso dei files
in cui ci si ritrova ad avere una copia dei contenuti da qualche altra
parte!] salvo spiacevoli conseguenze.
Un esempio:
1. creo una dir `aa' e vi faccio puntare un hard link `bb'
la procedura elencata sopra.
2. cancello la dir `aa'
3. scrivere in `bb' non e' cosa salutare... inoltre quando cerco
di rimuovera ottengo i seguenti warning:
[la partizione era /dev/hda3]
EXT2-fs warning (device ide0(3,3)): empty_dir: bad directory (dir #8450) - no data block
EXT2-fs warning (device ide0(3,3)): ext2_rmdir: empty directory has nlink!=2 (0)
in quanto il blocco dati e' stato cancellato con il primo comando rmdir...
[il caso di SunOS4 era simile]
Il modo piu' pulito per lavorare con la rimozione di directory linkate
staticamente in questo modo sarebbe usare il comando `unlink' da debugfs
(o l'appropriata chiamata di sistema), senza rimuovere i blocchi di
controllo (puntati dall'inode) sino a che non si procede ad eliminare
l'ultima di esse.
Una parola su debugfs, infine: e' un programma piuttosto flessibile e
consente di lavorare a livello abbastanza basso su un filesystem ext2,
ma consente anche di creare danni non da poco...
Non dite che non vi ho avvertito! :))
Ciao,
lg
Maggiori informazioni sulla lista
Lug
|