Files
learning/lpic/101/027-link.md
2025-08-28 21:42:33 +02:00

51 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Link
Nei sistemi operativi Unix e Unix-Like, esiste una tipologia speciale di file denominata `link`. I link consentono di creare riferimenti a file o directory già esistenti, ma si distinguono in due categorie:
- `link simbolici` (o soft link): puntano al percorso di un altro file o directory. Se il file o la directory di destinazione viene eliminato, il link simbolico smette di funzionare, poiché il riferimento diventa non valido
- `hard link`: rappresentano una voce aggiuntiva allinterno del filesystem che punta alla stessa posizione (`inode`) fisica sul disco del file originale. Se unhard link viene eliminato, gli altri continueranno a funzionare
Un `inode` è una struttura che memorizza i metadati di un file o directory allinterno del filesystem. Tra le informazioni contenute vi sono i permessi, la proprietà, le dimensioni e i timestamp, ecc.
## Hard Link
La sintassi per creare un hard link è la seguente:
```bash
ln TARGET LINK_NAME
```
Il target, ovvero il file a cui punterà il collegamento, deve già esistere.
Per verificare il numero di `inode` associato ai file, si utilizza il comando `ls -i`. Il numero che precede i permessi (880514) rappresenta l'identificativo dell'inode.
```bash
ls -li
total 4
880514 -rw-rw-r-- 2 user user 0 Feb 18 20:39 file
880514 -rw-rw-r-- 2 user user 0 Feb 18 20:39 hardlink
```
Nel caso riportato, file e hardlink condividono lo stesso inode, confermando che si tratta di hard link dello stesso file.
Il numero `2` indica il conteggio degli hard link che puntano al file, partendo da 1. È importante notare che i link simbolici non incrementano questo contatore.
## Soft Link
La sintassi per creare un link simbolico è la seguente:
```bash
ln -s TARGET LINK_NAME
```
Ecco un esempio:
```bash
ls -lh
total 8.0K
lrwxrwxrwx 1 user user 4 Feb 18 20:44 softlink -> file
```
Il primo carattere dei permessi è `l`, che indica che si tratta di un link simbolico. I permessi per i link simbolici sono sempre impostati su `rwxrwxrwx`, ma in realtà i permessi effettivi sono quelli del file di destinazione.