← Sommaire SkyLinux

Leçon 26 : Liens symboliques et liens durs

Dans cette leçon, tu vas découvrir comment créer des liens symboliques et des liens durs sous Linux. Ces mécanismes permettent d'accéder à un même fichier depuis plusieurs endroits sans le dupliquer.


1. Qu'est-ce qu'un lien ?

Sous Linux, tout est fichier. Chaque fichier stocké sur le disque a :

Un **lien** est un second nom pointant vers le même inode. Cela permet d'accéder à un même fichier depuis plusieurs endroits sans le dupliquer.

Il existe deux types de liens :

TypeLien dur (hard link)Lien symbolique (soft link / symlink)
**Concept**Un autre nom pour le même fichierUn raccourci ou pointeur vers un autre fichier
**Inode**Même inodeInode différent
**Cross-filesystem**❌ Non✅ Oui
**Vers répertoire**❌ Non✅ Oui
**Vers fichier supprimé**Continue de fonctionnerDevient cassé (lien mort)

2. Liens durs (hard links)

ln - Créer un lien dur

ln fichier_original lien_nouveau

**Exemple :**

# Créer un lien dur vers rapport.txt dans ~/Documents/

ln /home/david/rapport.txt /home/david/Documents/rapport_lien.txt

⚠️ Les deux noms pointent vers le **même contenu**. Modifier l'un modifie l'autre.

ls - Vérifier l'inode commun

ls -li fichier_original lien_nouveau

Le -i affiche le numéro d'inode. Tu verras que les deux fichiers ont le **même inode**.

$ ls -li rapport.txt Documents/rapport_lien.txt

1234567 -rw-r--r-- 2 david david 4096 jan 15 10:00 rapport.txt

1234567 -rw-r--r-- 2 david david 4096 jan 15 10:00 Documents/rapport_lien.txt

Le chiffre 2 (deuxième colonne) est le **nombre de liens durs** vers cet inode. Tant qu'au moins un lien existe, le fichier n'est pas supprimé physiquement.

rm - Supprimer un lien dur

rm lien_nouveau

Le fichier original reste intact. Les données ne sont vraiment effacées du disque que quand le **dernier lien dur** est supprimé.


3. Liens symboliques (symlinks)

ln -s - Créer un lien symbolique

ln -s fichier_cible lien_symbolique

**Exemple :**

# Créer un raccourci vers mes-documents dans le bureau

ln -s /home/david/mes-documents /home/david/Bureau/mes-documents

# Créer un lien symbolique vers un script dans /usr/local/bin/

sudo ln -s /opt/mon-script.sh /usr/local/bin/mon-script

ls - À quoi ça ressemble ?

$ ls -la Bureau/

lrwxrwxrwx 1 david david 20 jan 15 10:00 mes-documents -> /home/david/mes-documents

test - Vérifier si un lien symbolique est cassé

# Tester le lien

test -e lien_symbolique && echo "OK" || echo "CASSÉ"

# Lister les liens cassés

find . -type l -xtype l

rm - Supprimer un lien symbolique

rm lien_symbolique

⚠️ Pas de / à la fin du nom ! Sinon tu pourrais supprimer la **cible** par erreur.


4. Quand utiliser quoi ?

Utilise le lien symbolique quand :

Utilise le lien dur quand :

Exemple concret : la configuration système

# Ubuntu lie python3 vers python pour la compatibilité

$ ls -la /usr/bin/python

lrwxrwxrwx 1 root root 7 jan 15 10:00 python -> python3

# Python3 est le vrai exécutable

$ ls -la /usr/bin/python3

-rwxr-xr-x 1 root root 10480 jan 15 10:00 python3


5. Exercices pratiques

Exercice 1 : Créer un lien symbolique vers un script

1. Crée un fichier test.sh dans ton dossier personnel :

echo 'echo "Bonjour depuis le script"' > ~/test.sh

chmod +x ~/test.sh

2. Crée un lien symbolique sur ton bureau :

ln -s ~/test.sh ~/Bureau/test_rapide.sh

3. Exécute le lien :

~/Bureau/test_rapide.sh

✅ Tu devrais voir "Bonjour depuis le script"

Exercice 2 : Découvrir les liens dans /etc/

# Les paramètres régionaux sont souvent des liens symboliques

ls -la /etc/localtime

# Trouver tous les symlinks dans /etc

find /etc -type l -maxdepth 1 -ls

Exercice 3 : Comprendre les liens durs

# Créer un fichier

echo "Contenu important" > ~/important.txt

# Créer un lien dur

ln ~/important.txt ~/backup_important.txt

# Vérifier l'inode commun

ls -li ~/important.txt ~/backup_important.txt

# Supprimer l'original

rm ~/important.txt

# Vérifier que la copie fonctionne encore

cat ~/backup_important.txt

Exercice 4 : Identifier les liens cassés

# Créer un lien symbolique vers un fichier

echo "test" > ~/fichier_test.txt

ln -s ~/fichier_test.txt ~/lien_test

# Supprimer le fichier original

rm ~/fichier_test.txt

# Vérifier que le lien est maintenant cassé

test -e ~/lien_test && echo "OK" || echo "LIEN CASSÉ"


6. Résumé

CommandeDescription
ln original lienCréer un lien dur
ln -s cible lienCréer un lien symbolique
ls -li fichierVoir l'inode et le nombre de liens
find . -type lTrouver tous les liens symboliques
test -e lienTester si un lien (symbole) est valide

Complément: Pratique des liens

Créer un lien symbolique

La commande ln -s crée un lien symbolique qui pointe vers un autre fichier ou dossier.

Identifier les liens symboliques

Plusieurs indices révèlent un lien symbolique :

La flèche -> dans ls -la

Le l en premier caractère des permissions

La taille du lien (généralement petite, ~13 octets pour un chemin court)

Trouver tous les liens symboliques cassés

Quand une cible est supprimée, le lien devient "orphelin". Voici comment les détecter :

Modifier ou supprimer un lien

Les liens ne sont pas modifiables — il faut les recréer :

Astuce : Copier des liens au lieu de des fichiers

Quand vous copiez un dossier contenant des liens, utilisez -L ou -P selon votre besoin :