Ln
| Fiche express | |
|---|---|
| Domaine | Gestion des fichiers (liens) |
| Commande | ln
|
| Symbolique | ln -s cible lien
|
| Dur | ln cible lien
|
| Forcer | ln -sf (remplace un lien existant)
|
| Vérifier | ls -li (numéro d'inode)
|
ln crée des liens entre fichiers : un lien symbolique (raccourci pointant vers un chemin) ou un lien dur (deuxième nom pour le même contenu sur disque, même inode). Les deux se comportent très différemment en cas de suppression ou de déplacement de la cible, ce qui explique pourquoi le choix entre les deux n'est pas anodin.
Lien symbolique vs lien dur
Un lien symbolique (ln -s) est un petit fichier spécial qui contient simplement le chemin vers la cible ; il peut traverser les systèmes de fichiers (pointer d'une partition vers une autre), peut cibler un répertoire, et devient un lien cassé si la cible est supprimée ou déplacée.
Un lien dur (ln sans option) crée une deuxième entrée de répertoire pointant vers le même inode que le fichier original : les deux noms sont strictement équivalents, aucun n'est « le vrai » et l'autre « la copie ». Un lien dur ne fonctionne que sur le même système de fichiers (même partition) et ne peut pas cibler un répertoire (limitation du système de fichiers, pour éviter les boucles). Tant qu'au moins un lien dur existe vers un inode, les données restent accessibles même si le fichier a été supprimé sous son nom d'origine.
Créer des liens
ln -s /chemin/source cible_symlink # lien symbolique
ln -s /chemin/source . # lien symbolique dans le répertoire courant, même nom
ln /chemin/source lien_dur # lien dur (même système de fichiers uniquement)
Vérifier avec ls -li
ls -li affiche le numéro d'inode en première colonne : deux fichiers avec le même numéro d'inode sont deux noms pour les mêmes données (lien dur).
ls -li fichier lien_dur
# 131074 -rw-r--r-- 2 root root 12 23 juil. 10:00 fichier
# 131074 -rw-r--r-- 2 root root 12 23 juil. 10:00 lien_dur
Le compteur de liens (deuxième colonne, ici 2) indique combien de noms pointent vers cet inode. Pour un lien symbolique, ls -li montre un inode différent et le fichier apparaît en type l (première lettre des permissions), avec une flèche vers la cible.
Forcer le remplacement (ln -sf)
Par défaut, ln -s refuse d'écraser un lien ou un fichier déjà présent au même endroit. L'option -f force le remplacement, ce qui est indispensable pour mettre à jour un lien symbolique existant :
ln -sf /nouvelle/cible lien_existant # remplace le lien existant sans confirmation
Cas d'usage : basculer une version active
Un usage classique du lien symbolique est de matérialiser une version « courante » d'une application, mise à jour de façon atomique en changeant simplement la cible du lien :
ln -sfn /app/v2 /app/current # bascule /app/current vers la version v2
L'option -n est importante ici : sans elle, si /app/current est déjà un lien symbolique pointant vers un répertoire, ln -s le traite comme une cible et crée le nouveau lien à l'intérieur de ce répertoire au lieu de remplacer le lien lui-même. -n force le traitement de /app/current comme un fichier à remplacer, pas comme un répertoire de destination. Ce mécanisme permet de basculer une version en un seul appel système, donc sans état intermédiaire incohérent, et de revenir en arrière tout aussi vite en refaisant pointer le lien vers l'ancienne version.
Voir aussi
- Chkconfig — gestion des services SysV init