Esistono 2 tipi di collegamenti che puoi creare in Linux:
- Collegamenti duri
- Collegamenti simbolici
Un collegamento simbolico è molto simile a un collegamento sul desktop in Windows. Il collegamento simbolico punta semplicemente alla posizione di un file.
L'eliminazione di un collegamento simbolico non ha alcun effetto sul file fisico a cui punta il collegamento.
Un collegamento simbolico può puntare a qualsiasi file sul file system corrente o addirittura su altri file system. Questo lo rende più flessibile di un hard link.
Un hard link è in realtà lo stesso file a cui si collega ma con un nome diverso. Il modo più semplice per pensarlo è il seguente:
Immagina di essere nato con il nome Robert. Altre persone potrebbero conoscerti come Robbie, Bob, Bobby o Rob. Ogni persona parlerebbe della stessa persona.
Ogni collegamento aggiunge 1 a un contatore di link che significa eliminare il file fisico che è necessario eliminare tutti i collegamenti.
Perché usare i collegamenti duri?
Gli hard link forniscono un modo efficiente per organizzare i file. Il modo più semplice per descriverlo è con un vecchio episodio di Sesame Street.
Bert disse a Ernie di mettere da parte tutte le sue cose e così Ernie si dedicò al suo compito. Prima di tutto, ha deciso di mettere da parte tutte le cose rosse. "L'autopompa è rossa". Quindi Ernie mette via la fire engine.
Successivo Ernie decide di mettere via tutti i giocattoli con le ruote. L'autopompa ha le ruote. Così Ernie ha riordinato l'autopompa.
Inutile dire che Bert torna a casa e trova esattamente lo stesso disordine di prima, ma Ernie ha messo da parte una mezza dozzina di volte il motore antincendio.
Immagina che l'autopompa fosse solo l'immagine di una autopompa. Potresti avere diverse cartelle sul tuo computer come segue:
- Foto di cose rosse
- Foto di veicoli
- Foto di servizi di emergenza
Ora è possibile creare una copia della foto e posizionarla in ciascuna delle cartelle. Ciò significa che hai tre copie dello stesso file occupando tre volte lo spazio.
Classificare le foto facendo copie di esse potrebbe non occupare troppo spazio, ma se provassi la stessa cosa con i video ridurrai in modo significativo lo spazio su disco.
Un hard link non occupa spazio. È quindi possibile memorizzare lo stesso video in varie categorie (vale a dire per anno, genere, cast, registi) senza ridurre lo spazio su disco.
Come creare un hard link
Puoi creare un hard link usando la seguente sintassi:
In path / to / file / path / to / hard / link
Ad esempio, nell'immagine sopra abbiamo una cartella musicale Alice Cooper chiamata Trash nel percorso / home / gary / Musica / Alice Cooper / Cestino. In quella cartella ci sono 10 canzoni, una delle quali è la classica Poison.
Ora Poison è una traccia rock, così abbiamo creato una cartella chiamata Rock sotto la cartella musicale e creato un hard link per Poison digitando il seguente file:
ln "01 - Poison.mp3" "~ / Music / rock / Poison.mp3"
Questo è un buon modo per organizzare la musica.
Come capire la differenza tra un hard link e un collegamento simbolico
Puoi sapere se un file ha un hard link usando il comando ls:
ls -lt
Un file standard senza collegamenti avrà il seguente aspetto
-rw-r - r-- 1 gary gary 1000 dic 18 21:52 poison.mp3
Le colonne sono le seguenti:
- -rw-r - r-- = autorizzazioni
- 1 = numero di collegamenti
- gary = gruppo
- gary = proprietario
- 1000 = dimensione del file
- Dic 18 = data
- 21:52 = ora
- poison.mp3 = nomefile
Se si trattava di un collegamento reale, l'output sarebbe il seguente:
-rw-r - r-- 2 gary gary 1000 dic 18 21:52 poison.mp3
Si noti che il numero della colonna dei collegamenti mostra 2. Ogni volta che viene creato un collegamento fisico, il numero aumenta.
Un collegamento simbolico avrà il seguente aspetto:
-rw-r - r-- 1 gary gary 1000 dic 18 21:52 poison.mp3 -> poison.mp3
Puoi vedere chiaramente che un file punta a un altro.
Come trovare tutti i collegamenti fisici a un file
Tutti i file nel tuo sistema Linux contengono un numero di inode che identifica univocamente il file. Un file e il suo hard link conterranno lo stesso inode.
Per vedere il numero di inode per un file digita il seguente comando:
ls -i
L'output per un singolo file sarà il seguente:
1234567 nomefile
Per trovare i collegamenti reali per un file, è sufficiente eseguire una ricerca di file per tutti i file con lo stesso inode (ad esempio 1234567).
Puoi farlo con il seguente comando:
trova ~ / -xdev -inum 1234567