Chapitre 3.7 - Liens Symboliques et Durs
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Comprendre la différence entre liens symboliques et durs
- Créer et gérer des liens symboliques
- Créer et gérer des liens durs
- Choisir le bon type de lien selon le cas
Qu'est-ce qu'un Lien?
Un lien est une référence vers un fichier. Linux supporte deux types de liens: symboliques (soft) et durs (hard).
Liens Symboliques (Soft Links)
Caractéristiques
Un lien symbolique est un pointeur vers un autre fichier ou répertoire.
# Créer un lien symbolique
ln -s /chemin/vers/cible lien_symbolique
ln -s cible.txt lien.txt
# Voir où pointe le lien
ls -l lien.txt
readlink lien.txt
Caractéristiques:
- Pointe vers un nom de fichier (pas l'inode)
- Peut pointer vers fichiers inexistants
- Peut pointer vers répertoires
- Peut traverser les systèmes de fichiers
- Identifié par
ldansls -l
Exemple
# Créer un fichier
echo "Contenu" > original.txt
# Créer un lien symbolique
ln -s original.txt lien.txt
# Vérifier
ls -li
# 12345 -rw-r--r-- 1 user group 8 Jan 1 12:00 original.txt
# 12346 lrwxrwxrwx 1 user group 12 Jan 1 12:01 lien.txt -> original.txt
# Lire via le lien
cat lien.txt # Affiche "Contenu"
# Supprimer l'original
rm original.txt
# Le lien existe toujours mais est cassé
cat lien.txt # Erreur: No such file or directory
ls -l lien.txt # lien.txt -> original.txt (rouge, cassé)
Avantages
- Peut pointer vers répertoires
- Peut traverser systèmes de fichiers
- Facile à identifier (flèche dans ls -l)
- Peut pointer vers fichiers inexistants (pour création future)
Inconvénients
- Liens cassés si cible supprimée
- Légèrement plus lent (déréférencement)
- Peut créer des boucles
Liens Durs (Hard Links)
Caractéristiques
Un lien dur est une référence directe au même inode qu'un autre fichier.
# Créer un lien dur
ln cible.txt lien.txt
# Vérifier (même inode)
ls -li
# 12345 -rw-r--r-- 2 user group 8 Jan 1 12:00 cible.txt
# 12345 -rw-r--r-- 2 user group 8 Jan 1 12:00 lien.txt
# Même inode (12345), même contenu
Caractéristiques:
- Référence le même inode
- Même fichier (plusieurs noms)
- Ne peut pas pointer vers répertoires
- Ne peut pas traverser les systèmes de fichiers
- Compte de liens dans
ls -l(2 dans l'exemple)
Exemple
# Créer un fichier
echo "Contenu" > original.txt
# Créer un lien dur
ln original.txt lien.txt
# Vérifier
ls -li
# Même inode, même taille, même contenu
# Modifier via un lien
echo "Nouveau contenu" > lien.txt
# Vérifier l'original
cat original.txt # Affiche "Nouveau contenu"
# Supprimer l'original
rm original.txt
# Le lien fonctionne toujours!
cat lien.txt # Affiche "Nouveau contenu"
Compte de Liens
# Voir le compte de liens
ls -l fichier.txt
# -rw-r--r-- 3 user group 1024 Jan 1 12:00 fichier.txt
# Le "3" indique 3 liens durs vers ce fichier
# Le fichier n'est vraiment supprimé que quand
# le compte de liens atteint 0
Avantages
- Pas de lien cassé (même si un nom est supprimé)
- Performance identique à l'original
- Pas de déréférencement
Inconvénients
- Ne peut pas pointer vers répertoires
- Ne peut pas traverser systèmes de fichiers
- Moins flexible
Comparaison
| Caractéristique | Lien Symbolique | Lien Dur |
|---|---|---|
| Inode | Différent | Même |
| Répertoires | Oui | Non |
| Systèmes de fichiers | Oui | Non |
| Fichier inexistant | Oui | Non |
| Suppression cible | Lien cassé | Fonctionne |
| Performance | Légèrement plus lent | Identique |
| Identification | l dans ls -l | Même inode |
Cas d'Usage
Liens Symboliques
Quand utiliser:
- Pointer vers répertoires
- Créer des raccourcis
- Pointer vers fichiers sur autres systèmes de fichiers
- Configuration flexible
Exemples:
# Raccourci vers répertoire
ln -s /var/www/html ~/www
# Version actuelle
ln -s app-v2.0 app-current
# Configuration
ln -s /etc/nginx/sites-available/monsite /etc/nginx/sites-enabled/
Liens Durs
Quand utiliser:
- Sauvegarde de sécurité (plusieurs noms)
- Économie d'espace (même fichier)
- Performance critique
Exemples:
# Plusieurs noms pour même fichier
ln fichier.txt backup.txt
ln fichier.txt archive.txt
# Tous pointent vers le même inode
Commandes Utiles
# Voir tous les liens vers un inode
find /home -inum 12345
# Trouver les liens symboliques cassés
find /home -type l ! -exec test -e {} \; -print
# Compter les liens durs
stat fichier.txt | grep Links
# Voir où pointe un lien symbolique
readlink -f lien.txt # Chemin absolu résolu
Résumé
Dans ce chapitre, vous avez appris:
Liens Symboliques: Pointeurs vers noms de fichiers (ln -s)
Liens Durs: Références au même inode (ln)
Différences: Symboliques plus flexibles, durs plus robustes
Cas d'usage: Symboliques pour répertoires/flexibilité, durs pour robustesse
Gestion: ls -li pour voir, readlink pour symboliques
Prochaines Étapes
Chapitre 3.8: Types de Systèmes de Fichiers
Lab 3.3: Recherche et Liens
Chapitre créé le: Décembre 2024