GNU/Linux >> Linux Esercitazione >  >> Linux

Spiegazione di Soft Link e Hard Link in Linux con esempi

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

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.


Linux
  1. Ordina il comando in Linux con esempi

  2. Spiegazione di hard link e soft link in Linux

  3. Come creare collegamenti soft e hard in Linux

  4. Che cos'è Soft Links e Hard Links nel file system Linux

  5. Differenza tra soft link e hard link in Linux

Il comando ln in Linux:crea collegamenti soft e hard

Utilizzo del comando Linux mv con esempi

Comando di montaggio Linux con esempi

Comando gawk Linux con esempi

Linux make Command con esempi

Hard link e soft link in Linux:tutto ciò che devi sapere