Che cos'è Soft Link e Hard Link in Linux?
Un simbolico o collegamento software è un collegamento effettivo al file originale, mentre un collegamento fisico è una copia speculare del file originale. Se elimini il file originale, il collegamento software non ha valore, perché punta a un file inesistente.
Ma nel caso di hard link, è del tutto opposto. Anche se elimini il file originale, l'hard link conterrà ancora i dati del file originale. Perché il collegamento fisico agisce come una copia speculare del file originale.
In poche parole, un soft link
- può attraversare il file system,
 - ti consente di collegare tra directory,
 - ha un numero di inode e autorizzazioni di file diversi rispetto al file originale,
 - Le autorizzazioni non verranno aggiornate
 - ha solo il percorso del file originale, non il contenuto.
 
Un collegamento fisso
- non può oltrepassare i limiti del file system (ad es. un hardlink può funzionare solo sullo stesso filesystem),
 - Impossibile collegare le directory,
 - ha lo stesso numero di inode e le stesse autorizzazioni del file originale,
 - Le autorizzazioni verranno aggiornate se cambiamo le autorizzazioni del file sorgente,
 - ha il contenuto effettivo del file originale, in modo che tu possa comunque visualizzare il contenuto, anche se il file originale è stato spostato o rimosso.
 
Ancora non capisci? Bene, permettetemi di mostrarvi alcuni esempi pratici.
Come creare un collegamento soft o un collegamento simbolico
 Creiamo una directory vuota chiamata "test"  .
$ mkdir test
 Passa al "test" directory:
$ cd test
 Ora, crea un nuovo file chiamato source.file  con alcuni dati come mostrato di seguito.
$ echo "Welcome to OSTechNix" >source.file
Vediamo i dati del source.file.
$ cat source.file Welcome to OSTechNix
 Bene, il source.file è stato creato.
 Ora, crea un collegamento simbolico o software al source.file .
Per farlo, esegui:
$ ln -s source.file softlink.file
 Confrontiamo i dati di entrambi source.file e softlink.file .
$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix
 
 Come puoi vedere nell'output sopra, softlink.file visualizza gli stessi dati di source.file .
 Controlliamo gli inode e i permessi di softlink.file e source.file .
$ ls -lia
Risultato di esempio:
total 12 11665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:39 . 4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 .. 11665731 lrwxrwxrwx 1 sk sk 11 Oct 17 11:39 softlink.file -> source.file 11665692 -rw-rw-r-- 1 sk sk 21 Oct 17 11:39 source.file
 
 Come vediamo nello screenshot sopra, il numero inode (11665731  vs 11665692 ) e autorizzazioni file (lrwxrwxrwx  vs -rw-r--r-- ) sono diversi , anche se il softlink.file ha gli stessi contenuti di source.file . Quindi, è dimostrato che il collegamento software non condivide lo stesso numero di inode e le stesse autorizzazioni del file originale.
 Ora rimuovi il file originale (cioè source.file ) e guarda cosa succede.
$ rm source.file
 Controlla il contenuto del softlink.file usando il comando:
$ cat softlink.file
Risultato di esempio:
cat: softlink.file: No such file or directory
 
 Come vedi sopra, non esiste un file o una directory chiamata softlink.file dopo aver rimosso il file originale (cioè source.file ). 
Quindi, ora capiamo che il collegamento software è solo un collegamento che punta al file originale. Il softlink è come un collegamento a un file. Se rimuovi il file, il collegamento è inutile.
Come già sai, se rimuovi il soft link, il file originale sarà ancora disponibile.
Lettura consigliata:
- Come elencare i collegamenti simbolici su Linux
 - Come trovare collegamenti simbolici interrotti ed eliminarli su Linux
 
Come creare Hard Link
 Crea un file chiamato source.file  con alcuni contenuti come mostrato di seguito.
$ echo "Welcome to OSTechNix" >source.file
Verifichiamo il contenuto del file.
$ cat source.file Welcome to OSTechNix
 Il source.file è stato creato ora.
 Ora creiamo il collegamento reale al source.file come mostrato di seguito.
$ ln source.file hardlink.file
 
 Controlla i contenuti di hardlink.file :
$ cat hardlink.file Welcome to OSTechNix
 Viene visualizzato il hardlink.file visualizza gli stessi dati di source.file.
 Controlliamo l'inode e le autorizzazioni di hardlink.file e source.file .
$ ls -lia
Risultato di esempio:
total 16 11665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:58 . 4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 .. 11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 hardlink.file 11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file
 
 Ora vediamo che entrambi hardlink.file e source.file hanno lo stesso numero di inode (11665692 ) e autorizzazioni per i file (-rw-r--r-- ) . Quindi, è dimostrato che il file hard link condivide lo stesso numero di inode e le stesse autorizzazioni del file originale.
 Avviso: Se cambiamo i permessi su source.file , la stessa autorizzazione verrà applicata a hardlink.file anche.
 Ora rimuovi il file originale (cioè source.file ) e guarda cosa succede.
$ rm source.file
 Controlla il contenuto di hardlink.file usando il comando:
$ cat hardlink.file
Risultato di esempio:
 
 Come vedi sopra, anche se ho eliminato il file sorgente, posso visualizzare il contenuto di hardlink.file . Quindi, è dimostrato che Hard link condivide lo stesso numero di inode, i permessi e i dati del file originale.
Quindi, qual è la differenza tra Hard link e il normale file copiato?
Ti starai chiedendo perché dovremmo creare un collegamento fisico mentre possiamo facilmente copiare/incollare il file originale? Creare un collegamento fisico a un file è diverso dalla copiarlo.
Se copi un file, questo duplicherà semplicemente il contenuto. Quindi, se modifichi il contenuto di un file (originale o hard link), non ha alcun effetto sull'altro.
Tuttavia, se crei un collegamento reale a un file e modifichi il contenuto di uno dei file, la modifica verrà visualizzata su entrambi.
Diamo un'occhiata al source.file.
$ cat source.file Welcome to OSTechNix
Il file sorgente ha una singola riga che dice:Benvenuto in OSTechNix.
 Aggiungi una nuova riga, ad esempio "Welcome to Linux" in source.file o hardlink.file .
$ echo "Welcome to Linux" >>source.file
Ora controlla il contenuto di entrambi i file.
$ cat hardlink.file Welcome to OSTechNix Welcome to Linux
$ cat source.file Welcome to OSTechNix Welcome to Linux
 
 Vedere? Le modifiche che abbiamo appena apportato a source.file vengono aggiornati in entrambi i file. Significato:entrambi i file (sorgente e collegamento fisico) vengono sincronizzati. 
Qualsiasi modifica apportata a qualsiasi file si rifletterà sull'altro. Se normalmente copi/incolli il file, non vedrai nessuna nuova modifica in altri file.
Per maggiori dettagli, controlla le pagine man.
$ man ln
Conclusione
In questa guida, abbiamo discusso cosa sono soft link e hard link in Linux, come creare softlink e hardlink con comandi di esempio e infine abbiamo spiegato la differenza tra hardlink e normale file copiato.
Spero che tu abbia un'idea di base su come utilizzare collegamenti simbolici o soft e hard link in Linux.