Collegamenti reali e Collegamenti software sono concetti importanti da comprendere quando si lavora in un ambiente simile a Unix. In questo articolo, discuteremo cos'è l'hard link e il soft link e come crearli in Linux.
Linux tratta tutto come un file. Che si tratti di un dispositivo a blocchi, di un dispositivo a caratteri, di un socket o di una named pipe, Linux li tratterà come un file. Collegamenti reali e collegamenti software sono anche un tipo di file che viene effettivamente creato in riferimento a un altro file.
Cos'è Hardlink in Linux
Collegamento fisico è come un clone del file originale. Tutti i collegamenti reali condividono lo stesso numero di inode e la rimozione dell'originale o di qualsiasi altro file con collegamento reale non avrà alcun effetto su altri file e comunque puoi leggere il contenuto del file.
NOTA :non è possibile creare hardlink per le directory.
Come creare collegamenti reali in Linux
Vediamo come lavorare con gli hard link. Sto creando un file chiamato file1.txt e scrivendoci alcuni contenuti.
$ cat file1.txt

Ora esegui il comando ls con -i
flag per controllare il numero di inode di file1.txt e conteggio dei link.
$ ls -li file1.txt

Ora crea un nuovo hard link ed esegui lo stesso comando ls per controllare il numero di inode. Vedrai che entrambi i file hanno gli stessi numeri di inode.
$ ln <source-file> <destination-file> $ ln file1.txt file2.txt

Ora creerò un nuovo file di collegamento fisico da file2.txt che è già stato creato da file1.txt . Controlla il conteggio dei link e viene aggiornato a 3 in tutti i file.
$ ls -li file2.txt /home/karthick/file3.txt

Come rimuovere hard link in Linux
Ora, se elimini uno qualsiasi dei file con collegamenti fisici, il conteggio dei collegamenti verrà aggiornato di conseguenza in tutti i file e potrai comunque accedere al contenuto del file.
$ rm file1.txt
Per rimuovere completamente tutti i file con collegamenti fisici nel file system, puoi utilizzare il comando find per cercare i file con lo stesso numero di inode e rimuovere i file.
$ find <directory> -inum <inode-number> # SYNTAX $ find / -inum 415314 # Finding all files with Inode 51425368

Per rimuovere i file puoi aggiungere un exec comando per trova comando.
$ sudo find / -inum415314 -exec rm -f {} \;

NOTA :Quando esegui trova comando e se desideri scansionare tutte le directory nel file system è meglio usare sudo .
Cos'è i Softlink in Linux
Collegamenti software a volte chiamati collegamenti simbolici o collegamenti simbolici. Quando crei un collegamento software, verrà creato un nuovo file e quel file punterà al file principale. Pensa a questo come a una scorciatoia che crei per file e cartelle. Un nuovo file avrà un Inode diverso rispetto al file principale.
$ cat > slink.txt $ ls -li slink.txt

Come creare collegamenti software in Linux
Ora crea un nuovo collegamento software ed esegui lo stesso comando ls per controllare il numero di inode. Vedrai che entrambi i file hanno gli stessi numeri di inode. Inoltre, dai un'occhiata al conteggio dei link per ogni file.
$ ln -s <source> <destination> # SYNTAX $ ln -s file1.txt file2.txt

Dai un'occhiata al conteggio dei link dall'immagine sopra, sarà sempre 1 per i collegamenti software poiché tutti i file ottengono un numero di Inode separato. Ora se elimini il collegamento software non avrà alcun effetto sul file originale.
# grep ^ ./slink* # Display the contents of file1, file2 # rm slinked_linked.txt

Se elimini il file originale, il file collegato genererà un errore quando tenti di accedervi.
$ ls -li $ rm slink.txt $ ls -li $ cat slink_linked.txt

A volte potresti rimuovere il file principale ma dimenticare di rimuovere tutti i file collegati. È possibile controllare e pulire tutti i collegamenti software orfani eseguendo il comando seguente. Trova Il comando proverà a trovare tutti i link orfani da /home/ directory e -delete
rimuoverà i collegamenti.
# find -L /home/ -type l -delete
Questo è tutto per questo articolo. Ci piacerebbe sentire il tuo prezioso feedback o eventuali suggerimenti che possono migliorare gli articoli.