Table des matières

Dernière mise-à-jour : 2020/01/30 03:27

104.6 - Créer et modifier des liens physiques et symboliques (2/60)

Système de Fichiers Unix

Chaque partition sous un système Unix peut héberger une des structures suivantes :

Superbloc

Le superbloc contient :

Le Superbloc est dupliqué tous les 8 ou 16Mo sous ext3 et ext4. Pour réparer un système de fichiers en restaurant un Superbloc, utilisez la commande suivante :

# e2fsck -f -b 8193 /dev/sda1 [Enter]

Pour visualiser l'emplacement du Superbloc primaire et ses sauvegardes, utilisez la commande suivante :

root@debian6:~# dumpe2fs /dev/sda1 | grep -i superbloc
dumpe2fs 1.41.12 (17-May-2010)
 superbloc Primaire à 0, Descripteurs de groupes à 1-1
 superbloc Secours à 32768, Descripteurs de groupes à 32769-32769
 superbloc Secours à 98304, Descripteurs de groupes à 98305-98305
 superbloc Secours à 163840, Descripteurs de groupes à 163841-163841
 superbloc Secours à 229376, Descripteurs de groupes à 229377-229377
 superbloc Secours à 294912, Descripteurs de groupes à 294913-294913
 superbloc Secours à 819200, Descripteurs de groupes à 819201-819201
 superbloc Secours à 884736, Descripteurs de groupes à 884737-884737
root@debian7:~# dumpe2fs /dev/sda1 | grep -i superbloc
dumpe2fs 1.42.5 (29-Jul-2012)
 superbloc Primaire à 0, Descripteurs de groupes à 1-1
 superbloc Secours à 32768, Descripteurs de groupes à 32769-32769
 superbloc Secours à 98304, Descripteurs de groupes à 98305-98305
 superbloc Secours à 163840, Descripteurs de groupes à 163841-163841
 superbloc Secours à 229376, Descripteurs de groupes à 229377-229377
 superbloc Secours à 294912, Descripteurs de groupes à 294913-294913
 superbloc Secours à 819200, Descripteurs de groupes à 819201-819201
 superbloc Secours à 884736, Descripteurs de groupes à 884737-884737
 superbloc Secours à 1605632, Descripteurs de groupes à 1605633-1605633
root@debian8:~# dumpe2fs /dev/sda1 | grep -i superbloc
dumpe2fs 1.42.12 (29-Aug-2014)
 superbloc Primaire à 0, Descripteurs de groupes à 1-1
 superbloc Secours à 32768, Descripteurs de groupes à 32769-32769
 superbloc Secours à 98304, Descripteurs de groupes à 98305-98305
 superbloc Secours à 163840, Descripteurs de groupes à 163841-163841
 superbloc Secours à 229376, Descripteurs de groupes à 229377-229377
 superbloc Secours à 294912, Descripteurs de groupes à 294913-294913
 superbloc Secours à 819200, Descripteurs de groupes à 819201-819201
 superbloc Secours à 884736, Descripteurs de groupes à 884737-884737
 superbloc Secours à 1605632, Descripteurs de groupes à 1605633-1605633

Inodes

Chaque fichier est représenté par un inode. L'inode contient :

Graphiquement, on peut schématiser cette organisation de la façon suivante :

Pour mieux comprendre, tapez la commande suivante :

root@debian6:~# ls -ld /dev/console /dev/loop0 /etc /etc/passwd
crw-------   1 root root  5, 1  4 juil. 14:34 /dev/console
brw-rw----   1 root disk  7, 0  4 juil. 14:34 /dev/loop0
drwxr-xr-x 121 root root 12288  4 juil. 15:05 /etc
-rw-r--r--   1 root root  1298 27 avril  2011 /etc/passwd
root@debian7:~# ls -ld /dev/console /dev/loop0 /etc /etc/passwd
crw-------   1 root root  5, 1 juin  26 16:17 /dev/console
brw-rw---T   1 root disk  7, 0 juin  26 16:17 /dev/loop0
drwxr-xr-x 133 root root 12288 juil.  4 16:36 /etc
-rw-r--r--   1 root root  1657 juin  26 15:42 /etc/passwd
root@debian8:~# ls -ld /dev/console /dev/sda /etc /etc/passwd
crw-------   1 root root  5, 1 Oct 15 15:27 /dev/console
brw-rw----   1 root disk  8, 0 Oct 15 15:27 /dev/sda
drwxr-xr-x 134 root root 12288 Oct 15 15:27 /etc
-rw-r--r--   1 root root  2202 Oct 15 13:27 /etc/passwd

Le premier caractère de chaque ligne peut être un des suivants :

Pour visualiser le numéro d'inode, utilisez l'option -i :

root@debian6:~# ls -ldi /dev/console /dev/loop0 /etc /etc/passwd
  1251 crw-------   1 root root  5, 1  4 juil. 14:34 /dev/console
  2041 brw-rw----   1 root disk  7, 0  4 juil. 14:34 /dev/loop0
194689 drwxr-xr-x 121 root root 12288  4 juil. 15:05 /etc
201193 -rw-r--r--   1 root root  1298 27 avril  2011 /etc/passwd
root@debian7:~# ls -ldi /dev/console /dev/loop0 /etc /etc/passwd
  1196 crw-------   1 root root  5, 1 juin  26 16:17 /dev/console
  3269 brw-rw---T   1 root disk  7, 0 juin  26 16:17 /dev/loop0
260609 drwxr-xr-x 133 root root 12288 juil.  4 16:36 /etc
262280 -rw-r--r--   1 root root  1657 juin  26 15:42 /etc/passwd
root@debian8:~# ls -ldi /dev/console /dev/sda /etc /etc/passwd
  5676 crw-------   1 root root  5, 1 Oct 15 15:27 /dev/console
  6938 brw-rw----   1 root disk  8, 0 Oct 15 15:27 /dev/sda
260609 drwxr-xr-x 134 root root 12288 Oct 15 15:27 /etc
262545 -rw-r--r--   1 root root  2202 Oct 15 13:27 /etc/passwd

Blocs de données

Les données sont stockées dans des blocs de données. Dans le cas d'un répertoire, le bloc de données contient une table qui référence les inodes et les noms des fichiers dans le répertoire. Cette table s'appelle une table catalogue.

Le nom d'un fichier n'est pas stocké dans l'inode mais dans une table catalogue. Cette particularité nous permet de donner deux noms différents au même fichier. Pour ajouter un nouveau nom à un fichier, il convient de créer un lien physique.

Liens Physiques

Un lien physique se crée en utilisant la commande suivante :

Pour illustrer ce point, tapez la ligne de commande suivante :

root@debian8:~# cd /tmp; mkdir inode; cd inode; touch fichier1; ls -ali
total 8
11619 drwxr-xr-x  2 root root 4096 Jan 21 11:56 .
  199 drwxrwxrwt 14 root root 4096 Jan 21 11:56 ..
11775 -rw-r--r--  1 root root    0 Jan 21 11:56 fichier1

Notez bien le numéro de l'inode du fichier fichier1. Notez aussi que le numéro dans le troisième champs de la ligne de fichier1 a la valeur 1 :

11775 -rw-r–r– 1 root root 0 Jan 21 11:56 fichier1

Créez maintenant un lien physique :

# ln fichier1 fichier2 [Entrée]

Visualisez le résultat :

root@debian8:/tmp/inode# ln fichier1 fichier2
root@debian8:/tmp/inode# ls -ali
total 8
11619 drwxr-xr-x  2 root root 4096 Jan 21 11:57 .
  199 drwxrwxrwt 14 root root 4096 Jan 21 11:56 ..
11775 -rw-r--r--  2 root root    0 Jan 21 11:56 fichier1
11775 -rw-r--r--  2 root root    0 Jan 21 11:56 fichier2

Notez les deux lignes suivantes :

11775 -rw-r–r– 2 root root 0 Jan 21 11:56 fichier1
11775 -rw-r–r– 2 root root 0 Jan 21 11:56 fichier2

Les deux fichiers, fichier1 et fichier2, sont référencés par le même inode. Le nombre de liens est donc augmenté de 1 (le numéro dans le troisième champs).

Important : Un lien physique ne peut être créé que dans le cas où les deux fichiers se trouvent dans le même filesystem et que le fichier source existe.

Liens Symboliques

Un lien symbolique est un raccourci vers un autre fichier ou répertoire. Un lien symbolique se crée en utilisant la commande suivante :

Pour illustrer ce point, tapez la ligne de commande suivante :

root@debian8:/tmp/inode# ln -s fichier1 fichier3
root@debian8:/tmp/inode# ls -ali
total 8
11619 drwxr-xr-x  2 root root 4096 Jan 21 11:58 .
  199 drwxrwxrwt 14 root root 4096 Jan 21 11:56 ..
11775 -rw-r--r--  2 root root    0 Jan 21 11:56 fichier1
11775 -rw-r--r--  2 root root    0 Jan 21 11:56 fichier2
11776 lrwxrwxrwx  1 root root    8 Jan 21 11:58 fichier3 -> fichier1

Notez que le lien symbolique est référencé par un autre inode. Le lien symbolique pointe vers le fichier1.

Important : Un lien symbolique peut être créé même dans le cas où les deux fichiers se trouvent dans deux filesystems différents et même dans le cas où le fichier source n'existe pas.


<html>

Copyright © 2004-2017 Hugh Norris.<br><br> <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”><img alt=“Licence Creative Commons” style=“border-width:0” src=“http://i.creativecommons.org/l/by-nc-nd/3.0/fr/88x31.png” /></a><br />Ce(tte) oeuvre est mise à disposition selon les termes de la <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”>Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 3.0 France</a>.

</html>