Aller au contenu principal

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).


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 l dans ls -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

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éristiqueLien SymboliqueLien Dur
InodeDifférentMême
RépertoiresOuiNon
Systèmes de fichiersOuiNon
Fichier inexistantOuiNon
Suppression cibleLien casséFonctionne
PerformanceLégèrement plus lentIdentique
Identificationl dans ls -lMê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