Symbolic e Hard Link (LN) - INODE
In Linux ogni file e directory è identificato dal suo inode che è una struttura dati che contiene informazioni come:
- la dimensione del file, il proprietario, il gruppo e i permessi- tempo di accesso e modifica
- il numero di hard link che referenziano l'inode
- un puntatore allo spazio del disco che contiene i file veri e propri.# ls -li /etc/hosts
33872583 -rw-r--r-- 1 root root 207 Mar 16 12:00 /etc/hosts
Il numero 33872583 è l'inode del file hosts. E' visibile anche dal comando
[root@coslab02 ~]# stat /etc/hosts
File: ‘/etc/hosts’
Size: 207 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 33872583 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-09-01 02:45:02.424953632 +0200
Modify: 2021-03-16 12:00:39.908297015 +0100
Change: 2021-03-16 12:00:39.911297015 +0100
Birth: -
Creiamo un HARD LINK
ln <nome_file_puntato> <nome_link>
[root@coslab02 ~]# ln /etc/hosts /root/hardhosts
[root@coslab02 ~]# ls -li /etc/hosts /root/hardhosts
33872583 -rw-r--r-- 2 root root 207 Mar 16 12:00 /etc/hosts
33872583 -rw-r--r-- 2 root root 207 Mar 16 12:00 /root/hardhosts
[root@coslab02 ~]# stat /etc/hosts
File: ‘/etc/hosts’
Size: 207 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 33872583 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-09-01 02:45:02.424953632 +0200
Modify: 2021-03-16 12:00:39.908297015 +0100
Change: 2021-09-01 11:40:26.539639820 +0200
Birth: -
[root@coslab02 ~]# stat /root/hardhosts
File: ‘/root/hardhosts’
Size: 207 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 33872583 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-09-01 02:45:02.424953632 +0200
Modify: 2021-03-16 12:00:39.908297015 +0100
Change: 2021-09-01 11:40:26.539639820 +0200
Birth: -
Attenzione: all'interno dell'inode il valore di "Links" contiene le informazioni degli hadr link che lo puntano. Si è passati da 1 a 2.
Se si modifica il contenuto di un hard link, anche il file originario cambia.
Creiamo un SOFT LINK
ln -s <nome_file_puntato> <nome_link>
[root@coslab02 ~]# ln -s /etc/hosts symhosts
[root@coslab02 ~]# ls -lrt
-rw-r--r-- 2 root root 207 Sep 1 11:46 hardhosts
lrwxrwxrwx 1 root root 10 Sep 1 12:15 symhosts -> /etc/hosts
Il link simbolico ha tutti i permessi e se cancelliamo il file a cui punta diventa invalido.
[root@coslab02 ~]# cat symhosts
cat: symhosts: No such file or directory
E' possibile ricreare il file cancellato a partire dall'hard link
[root@coslab02 ~]# ln hardhosts /etc/hosts
[root@coslab02 ~]# ls -li symhosts hardhosts /etc/hosts
33872583 -rw-r--r-- 2 root root 207 Sep 1 11:46 /etc/hosts
33872583 -rw-r--r-- 2 root root 207 Sep 1 11:46 hardhosts
84175853 lrwxrwxrwx 1 root root 10 Sep 1 12:15 symhosts -> /etc/hosts
Il symbolic link fa riferimento ad inode diverso.
[root@coslab02 ~]# stat symhosts
File: ‘symhosts’ -> ‘/etc/hosts’
Size: 10 Blocks: 0 IO Block: 4096 symbolic link
Device: fd00h/64768d Inode: 84175853 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-09-01 12:15:51.090261137 +0200
Modify: 2021-09-01 12:15:49.644277697 +0200
Change: 2021-09-01 12:15:49.644277697 +0200
Il symbolik link è un alias, uno pseudonimo, un secondo nome con cui un file può essere richiamato, oltre che con il suo nome principale.
-b (--backup) Esegue una copia di backup dei file di destinazione, prima di cancellarli (se esistono).
Esempi
Per rimuove un link simbolio
unlink <nome_link>
-b (--backup) Esegue una copia di backup dei file di destinazione, prima di cancellarli (se esistono).
Esempi
Per rimuove un link simbolio
unlink <nome_link>