Introduction
Dans les systèmes Linux, les liens offrent un moyen puissant de référencer des fichiers et des répertoires. Ces liens créent des connexions entre les noms de fichiers et les données réelles stockées sur le disque. Comprendre comment utiliser efficacement les liens est une compétence essentielle pour les utilisateurs Linux et les administrateurs système.
Ce laboratoire (LabEx) vous guidera tout au long de la création et de l'utilisation de deux types de liens dans Linux :
Liens physiques (Hard Links) : Ce sont des entrées de répertoire supplémentaires qui pointent vers le même inode (données sur le disque). Lorsque vous créez un lien physique, vous donnez essentiellement un autre nom aux mêmes données.
Liens symboliques (Symbolic Links, également appelés liens souples) : Ce sont des fichiers spéciaux qui pointent vers d'autres fichiers par leur nom. Contrairement aux liens physiques, les liens symboliques peuvent pointer vers des répertoires et peuvent s'étendre sur différents systèmes de fichiers.
À la fin de ce laboratoire, vous comprendrez comment créer les deux types de liens à l'aide de la commande ln et apprendrez leurs applications pratiques dans un environnement Linux.
Création d'un répertoire de travail
Dans cette étape, nous allons créer une structure de répertoires et des fichiers que nous utiliserons pour pratiquer la création de liens.
Tout d'abord, vérifions notre emplacement actuel pour nous assurer que nous sommes dans le bon répertoire. Exécutez la commande suivante :
pwd
Vous devriez voir /home/labex/project comme sortie. Si vous êtes dans un autre répertoire, accédez au répertoire du projet :
cd /home/labex/project
Maintenant, créons un nouveau répertoire appelé linklab où nous stockerons nos fichiers :
mkdir /home/labex/project/linklab
Naviguons dans ce répertoire :
cd /home/labex/project/linklab
Maintenant, créons deux fichiers texte que nous utiliserons pour pratiquer la création de liens :
echo "This is the original file for our link examples." > original.txt
Vérifions que notre fichier a été créé correctement :
ls -l
Vous devriez voir une sortie similaire à ce qui suit :
-rw-r--r-- 1 labex labex 46 [date and time] original.txt
Examinons également le contenu du fichier :
cat original.txt
Vous devriez voir le texte que nous avons saisi précédemment affiché dans le terminal :
This is the original file for our link examples.
Création de liens physiques (hard links)
Un lien physique est un autre nom qui pointe vers exactement les mêmes données sur le disque que le fichier original. Le fichier original et le lien physique partagent le même numéro d'inode, ce qui signifie qu'ils sont essentiellement le même fichier avec des noms différents.
Pour créer un lien physique, nous utilisons la commande ln. Créons un lien physique pour notre fichier original.txt :
ln /home/labex/project/linklab/original.txt /home/labex/project/linklab/hardlink.txt
Cette commande crée un nouveau fichier appelé hardlink.txt qui est un lien physique vers original.txt. Maintenant, vérifions que notre lien physique a été créé correctement :
ls -li
L'option -i affiche le numéro d'inode de chaque fichier. Vous devriez constater que original.txt et hardlink.txt ont le même numéro d'inode, ce qui indique qu'ils sont le même fichier.
La sortie devrait ressembler à ce qui suit :
[inode number] -rw-r--r-- 2 labex labex 46 [date and time] hardlink.txt
[inode number] -rw-r--r-- 2 labex labex 46 [date and time] original.txt
Notez que le nombre 2 après les autorisations de fichier indique le nombre de liens physiques qui pointent vers l'inode. Tant original.txt que hardlink.txt affichent un compteur de liens de 2, car il y a maintenant deux fichiers qui pointent vers les mêmes données.
Montrons que la modification d'un fichier affecte l'autre, car ils sont essentiellement le même fichier :
echo "This is an added line." >> original.txt
cat hardlink.txt
Vous devriez voir les deux lignes affichées dans la sortie :
This is the original file for our link examples.
This is an added line.
Cela confirme que les modifications apportées à original.txt sont reflétées dans hardlink.txt.
De même, si nous modifions hardlink.txt, les modifications seront reflétées dans original.txt :
echo "Another line added through the hard link." >> hardlink.txt
cat original.txt
La sortie devrait maintenant afficher les trois lignes :
This is the original file for our link examples.
This is an added line.
Another line added through the hard link.
Création de liens symboliques
Les liens symboliques (également connus sous le nom de liens souples ou symlinks) sont différents des liens physiques (hard links). Un lien symbolique est un fichier distinct qui pointe simplement vers un autre fichier par son nom. Il ne partage pas le même inode que le fichier cible.
Pour créer un lien symbolique, nous utilisons la commande ln avec l'option -s. Créons un lien symbolique pour notre fichier original.txt :
ln -s /home/labex/project/linklab/original.txt /home/labex/project/linklab/symlink.txt
Cette commande crée un nouveau fichier appelé symlink.txt qui est un lien symbolique vers original.txt. Maintenant, vérifions que notre lien symbolique a été créé correctement :
ls -li
La sortie devrait ressembler à ce qui suit :
[inode number] -rw-r--r-- 2 labex labex [size] [date and time] hardlink.txt
[inode number] -rw-r--r-- 2 labex labex [size] [date and time] original.txt
[inode number] lrwxrwxrwx 1 labex labex [size] [date and time] symlink.txt -> /home/labex/project/linklab/original.txt
Notez le l au début des autorisations pour symlink.txt, indiquant qu'il s'agit d'un lien symbolique. De plus, la sortie montre le chemin vers lequel le lien symbolique pointe. Vous pouvez également constater que original.txt et symlink.txt ont des numéros d'inode différents, confirmant qu'ils sont des fichiers distincts.
Vérifions le contenu du lien symbolique :
cat symlink.txt
Vous devriez voir le même contenu que dans original.txt :
This is the original file for our link examples.
This is an added line.
Another line added through the hard link.
Ajoutons une autre ligne via le lien symbolique :
echo "This line was added through the symbolic link." >> symlink.txt
cat original.txt
La sortie devrait maintenant inclure les quatre lignes :
This is the original file for our link examples.
This is an added line.
Another line added through the hard link.
This line was added through the symbolic link.
Cela confirme que les modifications apportées via le lien symbolique affectent le fichier cible.
Maintenant, voyons ce qui se passe lorsque nous supprimons le fichier cible :
mv original.txt original.txt.bak
cat symlink.txt
Vous devriez voir un message d'erreur comme celui-ci :
cat: symlink.txt: No such file or directory
C'est parce que le lien symbolique pointe toujours vers /home/labex/project/linklab/original.txt, qui n'existe plus. C'est une différence clé entre les liens physiques et les liens symboliques.
Restaurons le fichier original :
mv original.txt.bak original.txt
cat symlink.txt
Le lien symbolique fonctionne à nouveau car le fichier cible existe de nouveau.
Comprendre les différences entre les liens physiques (hard links) et les liens symboliques
Maintenant que nous avons créé à la fois des liens physiques (hard links) et des liens symboliques, comparons leurs principales différences :
Liens physiques (Hard Links) :
- Partagent le même inode que le fichier original
- Ne peuvent pas être liés à des répertoires
- Ne peuvent pas traverser les limites des systèmes de fichiers
- Continuer à fonctionner même si le fichier original est supprimé ou déplacé
- Les modifications du contenu sont reflétées dans tous les liens physiques
Liens symboliques (Symbolic Links) :
- Ont leur propre inode, différent du fichier cible
- Peuvent être liés à des répertoires
- Peuvent traverser les limites des systèmes de fichiers
- Deviennent inutilisables si le fichier cible est supprimé ou déplacé
- Sont essentiellement des fichiers pointeurs qui contiennent le chemin vers le fichier cible
Démontrons certaines de ces différences avec des exemples :
Tout d'abord, essayons de créer un lien physique vers un répertoire, ce qui n'est pas autorisé :
mkdir testdir
ln testdir testdir_hardlink
Vous devriez voir un message d'erreur comme celui-ci :
ln: testdir: hard link not allowed for directory
Maintenant, essayons de créer un lien symbolique vers un répertoire, ce qui est autorisé :
ln -s testdir testdir_symlink
Vérifions notre lien symbolique de répertoire :
ls -la
Vous devriez voir testdir_symlink -> testdir dans la sortie, indiquant que testdir_symlink est un lien symbolique vers testdir.
Nous pouvons créer un fichier à l'intérieur du répertoire original :
echo "This is a test file in the directory." > testdir/testfile.txt
Et y accéder via le lien symbolique :
cat testdir_symlink/testfile.txt
Vous devriez voir le contenu :
This is a test file in the directory.
Cela démontre que les liens symboliques peuvent pointer vers des répertoires et être utilisés pour accéder à leur contenu.
Une autre différence importante est que la suppression du fichier original rend un lien symbolique inutilisable, mais pas un lien physique. Nous avons déjà vu cela avec notre exemple de lien symbolique. Demontrons-le avec notre lien physique :
rm original.txt
cat hardlink.txt
Vous devriez toujours voir les quatre lignes :
This is the original file for our link examples.
This is an added line.
Another line added through the hard link.
This line was added through the symbolic link.
Le lien physique continue de fonctionner car les données existent toujours sur le disque, et le lien physique pointe toujours vers ces données.
Cependant, notre lien symbolique est maintenant inutilisable :
ls -l symlink.txt
cat symlink.txt
Vous devriez constater que symlink.txt existe toujours mais pointe vers un fichier qui n'existe plus, et que toute tentative de lecture produit une erreur.
Recréons le fichier original à partir de notre lien physique :
cp hardlink.txt original.txt
cat symlink.txt
Le lien symbolique fonctionne à nouveau car le fichier vers lequel il pointe existe de nouveau.
Résumé
Dans ce laboratoire (lab), vous avez appris à connaître les deux types de liens sous Linux : les liens physiques (hard links) et les liens symboliques (soft links). Vous avez pratiqué la création de ces liens en utilisant la commande ln et exploré leurs principales différences.
Points clés abordés dans ce laboratoire :
Liens physiques (Hard Links) :
- Créés en utilisant la commande
lnsans options - Partagent le même inode que le fichier original
- Ne peuvent pas être liés à des répertoires ni traverser les limites des systèmes de fichiers
- Continuer à fonctionner même si le fichier original est supprimé
- Les modifications du contenu sont reflétées dans tous les liens physiques
- Créés en utilisant la commande
Liens symboliques (Symbolic Links) :
- Créés en utilisant la commande
ln -s - Ont leur propre inode, différent du fichier cible
- Peuvent être liés à des répertoires et traverser les limites des systèmes de fichiers
- Deviennent inutilisables si le fichier cible est supprimé ou déplacé
- Sont des fichiers pointeurs qui contiennent le chemin vers le fichier cible
- Créés en utilisant la commande
Applications pratiques :
- Les liens sont utiles pour créer des raccourcis vers des fichiers et des répertoires
- Ils peuvent être utilisés pour maintenir plusieurs versions de fichiers
- Les administrateurs système utilisent les liens pour la gestion de la configuration
- Les liens aident à organiser les fichiers sans dupliquer les données
Comprendre comment créer et utiliser efficacement les liens est une compétence essentielle pour les utilisateurs de Linux. Ces outils permettent une gestion et une organisation efficaces des fichiers au sein d'un système de fichiers Linux.



