48 lines
1.7 KiB
Markdown
48 lines
1.7 KiB
Markdown
# Link
|
|
|
|
Esiste un tipo speciale di file, chiamato *link*. Ne esistono di due tipi:
|
|
|
|
- link *simbolici*: chiamati anche *soft link*, puntano al percorso di un altro file. Se si elimina il file a cui punta il collegamento (*target*), questo smetterá di funzionare
|
|
- *hard link*: sono una voce aggiuntiva nel filesystem che punta alla stessa posizione (*inode*) sul disco (punta allo stesso dato). Se si elimina uno di questi nomi, gli altri continueranno a funzionare.
|
|
|
|
> Un inode é una struttura che memorizza gli attributi (o metadati) per un oggetto, come file o directory, su un filesystem. Tra questi attributi ci sono i permessi, le varie proprietá, ecc.
|
|
|
|
## Hard Link
|
|
|
|
```bash
|
|
ln TARGET LINK_NAME
|
|
```
|
|
|
|
Il target, ossia il file a cui punterá il collegamento, deve giá esistere.
|
|
|
|
```bash
|
|
ln file hardlink
|
|
|
|
ls -li
|
|
total 4
|
|
880514 -rw-rw-r-- 2 dado dado 0 Feb 18 20:39 file
|
|
880514 -rw-rw-r-- 2 dado dado 0 Feb 18 20:39 hardlink
|
|
```
|
|
Per verificare il numero di inode, si utilizza il comando `ls -i`. Il numero prima dei permessi é il numero di inode. I file `file` e `hardlink` hanno lo stesso numero di inode, poiché sono uno l'hardlink dell'altro.
|
|
|
|
In quanto un hardlink punta allo stesso inode, puo' essere spostato senza timore di rompere il collegamento.
|
|
|
|
Il numero `2` indica il numero di hard link che puntano al file (si parte da 1). I soft link non aumentano questo contatore.
|
|
|
|
## Soft Link
|
|
|
|
```bash
|
|
ln -s TARGET LINK_NAME
|
|
```
|
|
|
|
Ecco un esempio:
|
|
|
|
```bash
|
|
ls -lh
|
|
total 8.0K
|
|
|
|
lrwxrwxrwx 1 dado dado 4 Feb 18 20:44 softlink -> file
|
|
```
|
|
|
|
Il primo carattere sui permessi é `l`, che indica un soft link. I permessi per i softlink sono sempre `rwxrwxrwx`, ma in realtá i permessi sono gli stessi della destinazione.
|