Collegamenti rigidi
Gli hard link non sono un file contenente il percorso del file originale, ma copie speculari del file originale a cui puntano. Un file e i suoi hard link non sono associati dal nome o dal percorso ma dall'inode che memorizza le informazioni sul file, come la posizione, la data di creazione, i permessi e altri attributi. Ogni numero di inode è univoco all'interno di un filesystem, impedendo il funzionamento di hard link tra diverse partizioni o sistemi. Gli hard link non possono essere utilizzati per collegare le directory.
A differenza dei soft link, gli hard link contengono le informazioni a cui si collegano, quindi se il file originale viene rimosso puoi comunque accedere ai suoi dati.
In tutti i sistemi Linux vengono creati collegamenti sia fisici che simbolici con il comando ln . Per iniziare, crea prima un file chiamato LinuxHintFile e una directory chiamata LinuxHintDirectory come mostrato nell'immagine qui sotto:
toccoLinuxHintFile
rmkdir LinuxHintDirectory
ls
radice@LinuxSuggerimento:/casa/linuxhint#
Per creare un hard link chiamato Link2LHFile al file LinuxHintFile, esegui nel terminale:
lnLinuxHintFile Link2LHFile
Dopo aver verificato con ls vediamo l'hard link che abbiamo appena creato, se digiti ls -i vedrai gli inode dei file, puoi confermare che il link che abbiamo appena creato ha lo stesso numero di inode del file originale, digita:
ls -io
Come abbiamo detto sopra, non possiamo usare hard link per directory né collegamenti ad altri volumi o filesystem, collegheremo LinuxHintDirectory con un soft link.
Puoi trovare hard link all'interno della directory di lavoro eseguendo:
trova -genereF-link+1
Puoi anche trovare file per inode, per questa esecuzione:
trova.-inum <NumeroInode>
Come vedi, ha trovato sia il file originale che l'hard link che condividono lo stesso numero di inode.
Link morbidi
A differenza dei collegamenti fisici, i collegamenti software non sono copie del file originale, contengono il percorso del file originale, per questo motivo se il file originale viene rimosso, il collegamento software o il collegamento simbolico indicherà che nessun file diventa un collegamento interrotto, o un collegamento orfano, il che significa che se perdi il file sorgente, se lo elimini o lo sposti il collegamento simbolico perderà l'accesso alle informazioni, mentre con l'hard link le informazioni rimangono nonostante la rimozione del file sorgente perché è un completo ed esatto copia di quel file.
Inoltre, contrariamente ai collegamenti reali, i collegamenti simbolici non condividono lo stesso inode con il file originale, ecco perché il collegamento simbolico può attraversare volumi e filesystem mentre i collegamenti reali no. I collegamenti simbolici possono essere utilizzati per collegare le directory mentre con collegamenti reali non è possibile.
Anche i collegamenti simbolici vengono creati con il programma ln , ma affinché il collegamento sia simbolico/soft dobbiamo specificare il parametro -S , per creare un collegamento simbolico alla directory LinuxHintDirectory chiamata LHDLink eseguire:
ln -SLinuxHintDirectory LHDLinkE poi corri ' ls -i ' per verificare che sia stato creato correttamente:
Come vediamo in questo caso il collegamento simbolico è stato creato, ma ha un numero di inode diverso rispetto al file originale.
Possiamo elencare i collegamenti simbolici all'interno di una directory con il comando ls -l
Nell'immagine sopra possiamo vedere nei permessi del primo file il prefisso l per i collegamenti simbolici, la fine della riga mostra anche a quale file punta il collegamento simbolico.
Spero che tu abbia trovato questo articolo utile per comprendere le differenze tra collegamenti reali e collegamenti simbolici e come crearli. Continua a seguire LinuxHint per ulteriori suggerimenti e aggiornamenti su Linux.