Sul tuo sistema Linux funzionante, supponiamo di avere un file annidato all’interno di più livelli di directory. Per accedere facilmente a quel file, si desidera creare un collegamento per quel file sul desktop. È possibile utilizzare symlink (noto anche come soft link). Esiste anche un’altra forma di collegamento nota come collegamento fisico. In questo articolo spiegheremo le differenze tra soft e hard link e daremo un’occhiata a quale dovresti usare.
Collegamenti soft vs. hard
Un collegamento morbido, o collegamento simbolico, è solo un collegamento simbolico. È semplicemente un puntatore al percorso file di destinazione. A un collegamento software non interessa se il file o la cartella nel percorso del file esiste davvero. Se il file o la cartella non esiste, risulterà solo un collegamento simbolico interrotto. Puoi modificare o eliminare il collegamento simbolico e non influirà sul file di destinazione.
D’altra parte, un collegamento fisico ha l’effetto di dare al file di destinazione un nome aggiuntivo. Quando modifichi il contenuto di un file, modificherà anche il contenuto dell’altro file. In breve, un collegamento software è solo un riferimento al percorso del file di destinazione, mentre un collegamento fisico è un collegamento diretto ai dati del file di destinazione.
Di seguito illustreremo come funzionano i link soft e hard.
Soft link in azione
Supponiamo di avere un file chiamato “first_file.txt” che ha quattro righe di testo al suo interno.
Creeremo un collegamento software nella nostra directory Home.
ln -s first_file.txt ~/sl-firstfile.txt
Nell’ambiente desktop GNOME, è possibile creare un collegamento software per un file semplicemente facendo clic con il pulsante destro del mouse sul file e selezionando “Crea collegamento”. Viene creato un collegamento software il cui nome è simile a “Collegamento a
Se proviamo a visualizzare il contenuto di “sl-firstfile.txt”, possiamo vedere che è lo stesso di “first_file.txt”.
Se diamo uno sguardo a questi due file nel File Manager, il collegamento software appare come un collegamento al file originale. La freccia nera nell’icona del file lo indica.
Quando tentiamo di visualizzare l’elenco della directory corrente utilizzando il comando ls -l
, puoi vedere dove il collegamento software punta al file di destinazione. Il primo carattere nella stringa di autorizzazione per “sl-firstfile.txt” è “l”, il che significa che questa voce è per un collegamento.
Comportamento di cancellazione dei soft link
Quando il file di destinazione viene eliminato, il collegamento software sarà ancora disponibile.
Tuttavia, è diventato un collegamento “penzoloni” o “interrotto” ed è inutile.
Ora, se crei un altro file con lo stesso nome – “first_file.txt” – il collegamento software diventerà nuovamente attivo.
Nota: nel caso in cui incontri dei soft link e desideri trovare il percorso assoluto del file per cui il link è stato creato, usa semplicemente il file readlink
comando come mostrato di seguito.
L’output di questo comando sarà il percorso assoluto del file originale.
Collegamenti fisici in azione
Ora creeremo un collegamento fisico per lo stesso file nella nostra directory Home. Questo può essere fatto con il seguente comando:
ln first_file.txt hl-first-file.txt
Nota: i metodi per creare il collegamento soft e hard link utilizzano entrambi ln
comando. L’unica differenza è il file -s
flag che denota un collegamento simbolico.
Un altro modo per creare un collegamento fisico è utilizzare il link
comando.
link hl-firstfile.txt hl2-firstfile.txt
Un controllo su entrambi i file mostra che il loro contenuto è lo stesso.
Nella GUI, entrambi i file vengono visualizzati come entità distinte. Non ci sono indicazioni sull’esistenza di un hard link.
Proviamo ad aggiungere una nuova riga al file di collegamento fisico “hl-firstfile.txt”.
echo "hello" >> hl-first-file.txt
La modifica dei dati può essere visualizzata in entrambi i file.
Quando viene creato un collegamento fisico, è come se esistessero due file diversi, ma i loro dati sono collegati. Un cambiamento in uno si riflette nell’altro.
Consiglio rapido: quando si creano collegamenti software e collegamenti fisici, sarebbe una buona idea utilizzare la stessa estensione del file per il quale viene creato il collegamento.
Comportamento di cancellazione degli hard link
Per gli hard link, l’eliminazione del file originale o dell’hard link non è motivo di preoccupazione. I dati inizialmente memorizzati nel file sono ancora accessibili tramite l’hard link.
Quando sarebbero utili i soft link?
Abbiamo notato che i collegamenti virtuali vengono visualizzati come scorciatoie per un file. Quando abbiamo un file all’interno di più livelli di directory e desideriamo memorizzarlo in una posizione per un facile accesso, una buona opzione sarebbe semplicemente creare un breve collegamento per esso.
Quando sarebbero utili gli hard link?
Abbiamo visto che una volta che un collegamento fisico è stato creato per un file, qualsiasi modifica al file o al collegamento fisico si riflette in entrambi.
Supponiamo che tu abbia un server di backup. Viene utilizzato un meccanismo di backup incrementale in cui vengono riflesse solo le modifiche a file / cartelle dall’ultimo backup. È possibile creare un collegamento fisico tra un file nel server e la copia corrispondente nel computer. Quando viene eseguito il backup, le modifiche al file nel computer si rifletteranno automaticamente nel corrispondente file hard linkato nel server, anche se i file subiscono un cambio di nome.
Conclusione
Sia i soft link che gli hard link hanno i propri usi e dovrebbero essere usati in diverse situazioni. Comprendere le loro differenze ti consente di prendere decisioni migliori durante la creazione di collegamenti. È possibile creare collegamenti software e collegamenti fisici anche per le directory. Mentre i soft link possono essere creati attraverso i filesystem, gli hard link possono essere creati solo all’interno dello stesso filesystem.