Liens sous Windows


🧟 Liens symboliques et hard links sous Windows (et Linux) : le guide du nécromancien NTFS/EXT4

Dans l’univers brumeux des systèmes de fichiers, il existe une magie noire peu connue mais redoutablement efficace : les liens symboliques et les liens physiques (hard links). Ces artefacts permettent de tromper le système de fichiers, de mentir aux programmes, et de faire croire à votre ordinateur qu’un fichier existe là où il ne devrait pas. 🪄📂

📜 Qu’est-ce qu’un lien symbolique ?

Un lien symbolique (ou symlink) est un raccourci intelligent qui redirige vers un fichier ou un dossier ailleurs sur le système. Il agit comme une illusion : le fichier semble présent ici, mais vit ailleurs. 🌀

🪓 Qu’est-ce qu’un hard link ?

Un lien physique (hard link) est une autre entrée pour un même fichier. Contrairement au lien symbolique, il ne pointe pas vers le chemin, mais directement vers les blocs de données du fichier. Résultat : supprimer le fichier d’origine ne supprime pas le contenu, tant qu’il reste au moins un hard link. ⚰️

⚙️ Ce qui se passe techniquement dans le système de fichiers

📂 Sous Linux (EXT4 et dérivés)

  • Un fichier est représenté par un inode (numéro unique) qui contient les métadonnées et pointe vers les blocs de données.
  • Un hard link est simplement une nouvelle entrée de répertoire pointant vers le même inode.
  • Un lien symbolique, lui, est un fichier spécial contenant le chemin de la cible. Il possède son propre inode.

🪟 Sous Windows (NTFS)

  • NTFS utilise des structures appelées MFT (Master File Table). Chaque fichier ou dossier a une entrée dans la MFT.
  • Un hard link crée une nouvelle entrée de nom qui pointe vers la même entrée MFT.
  • Un symlink est un objet reparse pointant vers une autre entrée — il utilise les fonctionnalités avancées de NTFS pour rediriger les appels système.

⚖️ Différences principales

  • 🔗 Symbolique : pointe vers un chemin (fichier ou dossier)
  • 📌 Hard : référence directe au fichier (dossier non supporté sur Windows)
  • 💥 Supprimer la cible : le symlink meurt, le hard link survit
  • 🚧 Symlinks peuvent être brisés si la cible n’existe plus, hard links non
  • 🌐 Symlinks peuvent pointer à travers des disques, pas les hard links

📊 Tableau comparatif des commandes

Action Windows Linux
Créer un lien symbolique vers un fichier mklink lien.txt cible.txt ln -s cible.txt lien.txt
Créer un lien symbolique vers un dossier mklink /D lien cible ln -s cible lien
Créer un hard link vers un fichier mklink /H lien.txt cible.txt ln cible.txt lien.txt
Créer une jonction vers un dossier mklink /J lien cible ✘ (non applicable)
Supprimer un lien del lien.txt rm lien.txt
Vérifier les hard links fsutil hardlink list fichier.txt ls -li fichier.txt

📦 Exemples concrets

  • 💡 Rediriger un dossier de profil utilisateur (Windows) :
    mklink /D "C:\Users\Bob\Documents" "D:\MesDocs"
  • 📂 Partager un fichier sans duplication (Windows) :
    mklink /H "C:\Projet\fichier.txt" "C:\Commun\reference.txt"
  • 🐧 Rediriger le dossier /var/log vers une autre partition (Linux) :
    mv /var/log /mnt/logs
    ln -s /mnt/logs /var/log
  • 🔄 Utiliser des hard links pour éviter la duplication de fichiers (Linux) :
    ln fichier1.txt fichier2.txt

🧠 Conclusion

Que vous soyez sur Windows ou Linux, les liens symboliques et hard links sont des outils puissants. Mais attention : un lien mal placé, et vous entrez dans un monde où vos scripts échouent, vos sauvegardes se dédoublent à l’infini, et vos disques pleurent en silence. 🎭💾

Utilisez-les comme un chirurgien, pas comme un nécromancien enragé. 🧛‍♂️ Et rappelez-vous : tout ce qui brille n’est pas un vrai fichier.