I collegamenti simbolici hanno limitazioni nel modo in cui funzionano come ls
, mv
e cp
può operare su di essi perché a differenza dei comandi avviati dalla shell come cd
, queste funzioni non hanno informazioni su come l'utente ha effettuato l'accesso alla directory rispetto al percorso logico (vedi post relativo). Sembra di usare mount --bind
l'opzione invece può aggirare questo problema, offrendo una maggiore funzionalità e compatibilità con samba e altri file server perché la directory montata avrà quindi due percorsi fisici indipendenti, invece di un collegamento.
Vorrei sostituire tutti i miei collegamenti simbolici con riferimenti utilizzando mount --bind
opzione ma questo significherebbe montare oltre 150 punti in fstab. Ci sono problemi di prestazioni che potrebbero derivare da questo o da altri inconvenienti che dovrei considerare?
Risposta accettata:
Con mount --bind
, un albero di directory esiste in due (o più) posizioni nella gerarchia di directory. Ciò può causare una serie di problemi. I backup e altre copie di file sceglieranno tutte le copie. Diventa difficile specificare che vuoi copiare un filesystem:finirai per copiare due volte i file montati su bind. Ricerche con find
, grep -r
, find
, ecc., attraverserà tutte le copie e così via.
Non otterrai alcuna "maggiore funzionalità e compatibilità" con i mount bind. Assomigliano a qualsiasi altra directory, cosa che il più delle volte non è un comportamento desiderabile. Ad esempio, Samba espone i collegamenti simbolici come directory per impostazione predefinita; non c'è nulla da guadagnare con l'utilizzo di un montaggio bind. D'altra parte, i mount di bind possono essere utili per esporre le gerarchie di directory su NFS.
Non avrai problemi di prestazioni con i mount bind. Quello che avrai sono mal di testa da amministrazione. I mount di binding hanno i loro usi, come rendere accessibile un albero di directory da un chroot o esporre una directory nascosta da un punto di montaggio (questo è solitamente un uso transitorio mentre la struttura di una directory viene rimodellata). Non usarli se non ne hai bisogno.
Solo root può manipolare i mount di binding. Non possono essere spostati con mezzi ordinari; bloccano la loro posizione e le directory degli antenati.
In generale, se si passa un collegamento simbolico a un comando, il comando agisce sul collegamento stesso se opera su file e sulla destinazione del collegamento se opera sul contenuto di file. Questo vale anche per le directory. Di solito è la cosa giusta. Alcuni comandi hanno opzioni per trattare i collegamenti simbolici in modo diverso, ad esempio ls -L
, cp -d
, rsync -l
. Qualunque cosa tu stia cercando di fare, è molto più probabile che i link simbolici siano lo strumento giusto, piuttosto che i binding mount siano lo strumento giusto.