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.
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 :
| Type | Lien dur (hard link) | Lien symbolique (soft link / symlink) |
|---|---|---|
| **Concept** | Un autre nom pour le même fichier | Un raccourci ou pointeur vers un autre fichier |
| **Inode** | Même inode | Inode différent |
| **Cross-filesystem** | ❌ Non | ✅ Oui |
| **Vers répertoire** | ❌ Non | ✅ Oui |
| **Vers fichier supprimé** | Continue de fonctionner | Devient cassé (lien mort) |
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 -li fichier_original lien_nouveauLe -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 lien_nouveauLe fichier original reste intact. Les données ne sont vraiment effacées du disque que quand le **dernier lien dur** est supprimé.
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 -la Bureau/
lrwxrwxrwx 1 david david 20 jan 15 10:00 mes-documents -> /home/david/mes-documents
l au début = c'est un lien symbolique-> montre vers quoi le lien pointe# Tester le lien
test -e lien_symbolique && echo "OK" || echo "CASSÉ"
# Lister les liens cassés
find . -type l -xtype l
rm lien_symbolique⚠️ Pas de
/à la fin du nom ! Sinon tu pourrais supprimer la **cible** par erreur.
# 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
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.sh3. Exécute le lien :
~/Bureau/test_rapide.sh✅ Tu devrais voir "Bonjour depuis le script"
# 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
# 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
# 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É"
| Commande | Description |
|---|---|
ln original lien | Créer un lien dur |
ln -s cible lien | Créer un lien symbolique |
ls -li fichier | Voir l'inode et le nombre de liens |
find . -type l | Trouver tous les liens symboliques |
test -e lien | Tester si un lien (symbole) est valide |
La commande ln -s crée un lien symbolique qui pointe vers un autre fichier ou dossier.
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)
Quand une cible est supprimée, le lien devient "orphelin". Voici comment les détecter :
Les liens ne sont pas modifiables — il faut les recréer :
Quand vous copiez un dossier contenant des liens, utilisez -L ou -P selon votre besoin :