Quali sono alcuni usi tipici dei collegamenti fisici?


9

Chiunque fosse abituato a Windows può immaginare cosa siano i collegamenti simbolici e come vengano utilizzati. D'altra parte, il concetto di hard link è estraneo a Windows (ho ragione?).

Vorrei sapere quali sono gli usi tipici degli hard link in Linux. Ho già visto diversi post che descrivono la differenza nel modo in cui funzionano. Quello che sto chiedendo è quali sono alcune situazioni tipiche in cui un utente starebbe meglio usando hard link invece di symlink?


3
Questa domanda è stata posta su StackExchange di Unix e Linux: Perché esistono collegamenti
Flimm,

Risposte:


9

Uso un collegamento reale in cui ho bisogno di un singolo file in due o più posizioni, prevedo che un giorno vorrò eliminare una delle posizioni e potrei dimenticare di avere un collegamento al file. Questo mi impedisce di finire con un link simbolico a un file che non esiste più.

Una precisazione:

Il nome di un file è, in effetti, un collegamento reale al file. Pertanto, ogni file ha almeno un collegamento reale, essendo quello che normalmente chiamiamo "il" nome del file. Quando elimini un file, in effetti stai rimuovendo il suo hard link (da qui il nome "rimuovi", cioè rmanziché "elimina"). Quando a un file viene rimosso l'ultimo collegamento reale, il sistema elimina anche il file.


7

I collegamenti fissi consentono ...

  • un singolo eseguibile per avere più di un nome.

    Esempio:

    ls -l /bin | grep -v ' 1 ' | sortelencherà quelli /binper te. Risultato ...

    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 gunzip
    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 uncompress
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bunzip2
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzcat
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzip2
    

    Invece di 3 file bunzip2 bzcat e bzip2 usano lo stesso file e all'interno del file viene fatta la distinzione su cosa fare. Risparmiare codice e meno codice significa meno bug possibili e una manutenzione più semplice.

  • un singolo file a cui possono accedere diversi percorsi.

    Prendiamo ad esempio un gestore di pacchetti, che crea una directory / usr / share / doc / $ nomepacchetto per ciascun pacchetto installato e all'interno di quella directory un file chiamato LICENSE con le informazioni sulla licenza del pacchetto. Molti pacchetti su un tipico sistema Linux hanno la licenza GPL, quindi invece di avere 200 copie della GPL sul filesystem potrebbero esserci solo una copia e 199 collegamenti. ptman @ Serverfault

Il motivo per cui i collegamenti fisici funzionano qui (e quelli molli non funzionano): la rimozione di solo 1 dei collegamenti fisici non rimuove il file stesso.


2
"Esempio: a move ( mv) è una copia ( cp) + a remove ( rm)." Questo è vero solo quando l'origine e la destinazione si trovano su supporti diversi. Altrimenti, a mvsposta solo il nome, non il file.
Paddy Landau,

1
Se vuoi diventare tecnico: mv cambia l'inode e non il nome. Ma hai ragione: sembra che quell'esempio sia un po 'vecchio al giorno d'oggi e avrei dovuto usare gzip come esempio;)
Rinzwind

3
Stiamo diventando un po 'fuori tema, ma ho appena provato questo. Finché il file rimane sullo stesso mount, mvcambia solo il nome; l'inode rimane lo stesso.
Paddy Landau,

Questo non spiega davvero perché non puoi semplicemente usare i symlink, che puoi salvare per pochi byte di dati extra. Questo è affrontato correttamente in questa risposta .
Ken Sharp,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.