← Sommaire SkyLinux

Les liens symboliques — Astuces pratiques

Les liens symboliques (symlinks) sont omniprésents sur Linux. Cette leçon vous montre comment les utiliser efficacement pour organiser vos fichiers et simplifier votre quotidien.

Créer un lien symbolique

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

ln -s /chemin/vers/fichier lien_name

Exemple pratique

# Créer un lien vers un fichier ln -s /var/log/syslog logs_actuels # Vérifier que le lien existe ls -la logs_actuels # lrwxrwxrwx 1 user user 13 Apr 28 08:00 /home/user/logs_actuels -> /var/log/syslog

Cas d'utilisation courants

1. Raccourcir des chemins longs

# Au lieu de taper le chemin complet à chaque fois ln -s /mnt/sandbox/experiments/scripts mes_scripts # Maintenant vous pouvez faire cd mes_scripts ./deploy.sh

2. Plusieurs versions d'un même logiciel

# Vous avez plusieurs versions installées ls /opt/mon_app/ # 1.0.0 2.1.0 3.0.0 # Créer un lien "version actuelle" ln -s /opt/mon_app/3.0.0 /opt/mon_app/current # Vos scripts utilisent toujours /opt/mon_app/current # Pour changer de version, modifiez juste le lien

3. Dossier "data" dans un projet

# Organiser un projet mkdir ~/mon_projet cd ~/mon_projet ln -s /media/donnees/partagees data # Le contenu distant apparaît comme un dossier local cd data && ls

Identifier les liens symboliques

Plusieurs indices révèlent un lien symbolique :

# Identifier visuellement ls -la | grep "^l" # Avec la commande file file mon_lien # mon_lien: symbolic link to /chemin/vers/cible

Liens symboliques vs liens durs

CaractéristiqueLien symboliqueLien dur
Commandeln -sln
Peut traverser partitionsOuiNon
Peut pointer vers un dossierOuiNon
Survit si la cible est suppriméeNon (lien brisé)Oui
Inode différentOuiNon (même inode)

Trouver tous les liens symboliques cassés

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

# Trouver les liens cassés dans le répertoire courant find . -type l ! -exec test -e {} \; -print # Ou avec une approche plus lisible find . -type l -xtype l # Dans tout le système (nécessite sudo) sudo find /home -type l -xtype l

Modifier ou supprimer un lien

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

# Supprimer un lien (ne supprime PAS le fichier cible) rm mon_lien # Ou unlink mon_lien # Recréer avec une nouvelle cible ln -s /nouveau/chemin mon_lien

Astuce : Copier des liens вместо des fichiers

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

# -L : copier le contenu des liens (suivre) cp -Lr liens/ destination/ # -P : garder les liens tels quels cp -Pr liens/ destination/ # -s : créer automatiquement des liens symboliques vers les fichiers copiés cp -s * ../destination/

Exemple concret : Structure de projet

# Structure typique d'un projet ~/projet/ ├── code/ # Scripts sources ├── data/ # Lien vers données (montage réseau) ├── logs/ # Lien vers /var/log/projet ├── releases/ # Versions compilées │ ├── current -> releases/3.2.1 # Lien vers version actuelle │ └── 3.2.1/ └── README.md # Le lien "current" permet de changer de version sans modifier les scripts # Pour mettre à jour : rm current && ln -s releases/3.3.0 current

Résumé

ln -s cible nomCréer un lien symbolique
ls -la | grep "^l"Trouver les liens dans le dossier
file lienVérifier le type et la cible
find . -type l -xtype lTrouver les liens cassés
rm lienSupprimer le lien (pas la cible)