Les liens sous linux sont des fichiers qui pointent vers le même fichier.
Il en existe de 2 types
- lien matériel (hard link)
- lien symbolique (soft|symbolic link)
Les liens
Hard Link
Un hard link est juste un autre nom de fichier qui pointe vers les mêmes données.
Création de hard link
Pour créer un hard link :
# ln myfile.txt myfile-hardLink01.txt |
Spécificités
Les hard link :
- Pointent vers les mêmes données
- Ont les mêmes numéros d’inode
- Donc si un fichier linké modifié alors tous le seront
- Les données seront consultables depuis n’importe quels fichiers s’il en reste au moins un
- Ne s’utilisent qu’avec les fichiers de type
file
(Pas de dossier, pas de pipe, etc.) - Ne s’utilisent que sur le même système de fichiers
Soft Link
Un lien symbolique est un type de fichier spécial qui pointe vers un fichier ou un répertoire existant.
Création de soft link
Pour créer un soft link :
# ln myfile.txt -s myfile-softLink01.txt |
Spécificités
Les soft link :
- Type de fichier spécial pointant vers un fichier ou un répertoire existant
- Ont des numéros d’inode différents
- S’utilisent avec n’importe quels types de fichiers
- S’utilisent sur des systèmes de fichiers différents
Listing
Pour voir s’il s’agit d’un soft ou d’un hard link, l’option -i
de ls
permet de voir les inodes identiques :
# ls -li |
On peut voir 4 hard links sur les fichiers ayant l’inode de 18888.
/!\ Résumé des commandes
HardLink | SoftLink |
---|---|
Accessible en utilisant plusieurs noms | Références pointant vers le fichier originel |
Données supprimées = lien accessible | Fichier d’origine supprimé = lien invalide |
N° d’inode simlaire | N° d’inode différent |
ln fichier nomHardLink |
ln -s fichier nomSoftLink |
Consomme moins de mémoire | Consomme plus de mémoire |
Même systèmes de fichiers | Différents systèmes de fichiers et en réseaux |
Pas de chemin relatif | Chemin relatif |
Affiche les n° d’inodes :
# ls -li |
Supprimer un lien :
# unlink <NomFichier> |
Attention : s’il s’agit d’un hardlink, le fichier ciblé sera supprimé.
Cas pratiques
Hard Links
Création d’un lien matériel MyFile.txt
pour le fichier MyFile.txt.backup
:
[aline@SERVER01 ~]$ ln MyFile.txt MyFile.txt.backup |
Afficher le nombre de liens du fichier d’origine MyFile.txt
et du nouveau fichier lié MyFile.txt.backup
. Le nombre de liens est de 2 pour les fichiers :
[aline@SERVER01 ~]$ ls -li |
Suppression :
[aline@SERVER01 ~]$ unlink MyFile.txt.backup |
Le fichier a été supprimé :
[aline@SERVER01 ~]$ ls -li |
Soft Links
Création de liens symboliques appelés MyTemp0*
qui pointent vers le répertoire /tmp
:
[aline@SERVER01]$ ln -s /tmp MyTemp01 |
Vérification :
[aline@SERVER01]$ ls -li |
Suppression :
[aline@SERVER01 ~]$ unlink MyTemp01 |
Le fichier a été supprimé :
[aline@SERVER01]$ ls -li |
Création de liens symboliques appelés MyFileSoft0*.txt
qui pointent vers le fichier MyFile.txt
:
[aline@SERVER01]$ ln -s MyFile.txt MyFileSoft01.txt |
Vérification :
[aline@SERVER01]$ ls -li |
Suppression :
[aline@SERVER01 ~]$ unlink MyFileSoft01.txt |
Le fichier a été supprimé :
[aline@SERVER01]$ ls -li |
Modification des soft links
Création de FILE.txt
et de 3 liens symboliques file*.txt
:
[aline@SERVER01] ~ $ touch FILE.txt |
Vérification :
[aline@SERVER01] ~ $ ls -l |
Ajout de texte dans FILE.txt
et file2.txt
, tous les fichiers on été modifiés :
[aline@SERVER01] ~ $ echo "SOME TEXT" >> FILE.txt |
En vérifiant on constate que la taille des liens symbolique ne change pas, seulement celle de FILE.txt
à augmentée :
[aline@SERVER01] ~ $ ls -l |
Documentation
https://n0tes.fr/2023/03/05/Commande-ln-liens/
https://n0tes.fr/2023/03/05/Snippet-Commande-lister-liens/
MAN ln(1)