Quelle est la différence entre un lien symbolique et un raccourci ?
Réponses
Trop de publicités?Je pense que le point important est que les raccourcis sont juste un fichier. Ils ont une taille (une petite taille, qui fait juste référence à l'endroit où ils pointent) et ils nécessitent une application qui supporte ce type de fichier afin d'être utilisés.
Un lien symbolique est au niveau du système de fichiers, et tout le monde le voit. comme le fichier original. Une application n'a besoin d'aucun support particulier pour utiliser un lien symbolique.
Un "lien symbolique" peut en fait se substituer à un répertoire ou à un fichier de manière fonctionnelle, et est couramment utilisé dans les environnements Unix/Linux. Bien qu'il existe apparemment un support pour cela dans Windows, je n'ai pas encore vu d'utilisation réelle.
Un "raccourci" est simplement un fichier ordinaire qui contient une référence au fichier ou au répertoire de destination, ainsi que d'autres éléments comme l'icône à afficher. Contrairement à un lien symbolique, vous ne pouvez pas "cd ./shortcut-name" sous DOS (sous Unix/Linux, vous pouvez "cd ./symlink-name" et cela fonctionnera comme un véritable sous-répertoire).
En outre, dans la plupart des applications Windows, lorsque vous cliquez sur un raccourci dans une boîte de dialogue Fichier->Ouvrir l'interface graphique, le champ du nom de fichier est rempli avec le nom de fichier de ce raccourci et agit comme un sous-répertoire, alors que dans Unix/Linux, l'interface graphique traite un lien symbolique comme un chemin (sans modifier le champ du nom de fichier).
Comme d'autres l'ont mentionné, un lien symbolique est l'un des types de liens disponibles au niveau du système de fichiers, ce qui le rend transparent pour les applications. J'ai trouvé cette documentation très utile (notamment la section "Crop/Unroll/Splice Outer Junctions/Symbolic Links"). Et l'outil est également très joli. (En mentionnant ceci, et mklink, j'espère que d'autres recherches trouveront cette discussion).
Un raccourci est un fichier, pas un véritable lien, et il n'est généralement suivi avec succès comme un lien que lorsqu'il est interprété par l'IU (interface utilisateur) de Windows. Par exemple, lorsque vous double-cliquez sur un raccourci de dossier, Windows vous redirige vers cet autre emplacement. (Cela inclut les boîtes de dialogue génériques Ouvrir un fichier et Enregistrer un fichier que la plupart des applications invoquent). Sur mon bureau, j'ai un raccourci vers ce dossier : C:\ProgramData\Microsoft\Windows\Start Menu \Programs\G
Le nom de fichier du raccourci est : C:\Users\user5\Desktop\Games.lnk Mais Windows supprime l'extension .lnk et n'affiche que "Jeux", même si vous décochez "masquer les extensions pour les types de fichiers connus". Mais si vous ouvrez une invite de commande et effectuez une recherche, vous le verrez :
C:\Users\user5\Desktop>dir "g*"
Volume in drive C has no label.
Volume Serial Number is 900...
Directory of C:\Users\user5\Desktop
03/08/2014 05:30 PM 1,710 Games.lnk
1 File(s) 1,710 bytes
0 Dir(s) 246,818,222,080 bytes free
Je peux créer l'équivalent avec un lien symbolique en utilisant la commande \D (pour le répertoire) :
C:\Users\user5\Desktop>mklink /D mysymlink "C:\ProgramData\Microsoft\Windows\S
tart Menu\Programs\G"
symbolic link created for mysymlink <<===>> C:\ProgramData\Microsoft\Windows\Sta
rt Menu\Programs\G
C:\Users\user5\Desktop>cd mysymlink
C:\Users\user5\Desktop\mysymlink>
(Une jonction de répertoire ( \J ) est également une option, puisqu'il s'agit d'un lien vers un dossier). L'explorateur Windows, tout comme cette console et la plupart des applications, vous permettra de naviguer "vers le bas" dans ce sous-répertoire apparent, plutôt que (a) de rediriger "vers le haut" vers un emplacement différent ou (b) d'échouer.
Les raccourcis ne se comportent pas comme des sous-répertoires. Je peux invoquer le comportement de fichier par défaut de l'interface utilisateur de Windows avec cette commande (cela ouvre le dossier "G" dans l'Explorateur Windows) :
C:\Users\user5\Desktop>"Games.lnk"
Alors que mysymlink est listé (voir le compte) comme un vrai sous-répertoire et ne peut pas être lancé de cette façon :
C:\Users\user5\Desktop>dir "my*"
Volume in drive C has no label.
Volume Serial Number is 900...
Directory of C:\Users\user5\Desktop
03/29/2014 06:08 PM <DIR> mysubdir
03/29/2014 05:40 PM <SYMLINKD> mysymlink [C:\ProgramData\Microsoft\Windo
ws\Start Menu\Programs\G]
0 File(s) 0 bytes
2 Dir(s) 246,816,153,600 bytes free
C:\Users\user57\Desktop>mysubdir
'mysubdir' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\user57\Desktop>mysymlink
'mysymlink' is not recognized as an internal or external command,
operable program or batch file.
Inversement, vous ne pouvez pas changer de répertoire en raccourci :
C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.
L'interface utilisateur de Windows vous permet de cliquer avec le bouton droit de la souris pour modifier les propriétés d'un raccourci. Ou, ce qui suit montre exactement ce qui est réellement stocké dans le fichier .lnk (données binaires), bien qu'un éditeur hexadécimal afficherait mieux :
C:\Users\user5\Desktop>notepad.exe "Games.lnk"
Alors qu'en essayant d'exécuter le Bloc-notes sur un sous-dossier réel, on obtient un message d'erreur "Accès refusé" et un Bloc-notes vide.
Inversement, si je fais un lien symbolique de fichier (pas un lien symbolique de dossier), je peux le lancer avec Notepad. Parmi les appels suivants de notepad.exe, les deux premiers fonctionnent, et le troisième échoue (il ouvre le fichier .LNK, le charabia binaire).
C:\Users\user5\Desktop>mklink symplain.txt plain.txt
symbolic link created for symplain.txt <<===>> plain.txt
C:\Users\user5\Desktop>notepad.exe "symplain.txt"
C:\Users\user5\Desktop>notepad.exe "plain.txt"
C:\Users\user5\Desktop>notepad.exe "plain.txt.lnk"
Ce n'est pas seulement un problème de console. J'ai copié un raccourci du Bloc-notes sur mon bureau et j'ai essayé de faire glisser et de déposer chacun des trois documents sur ce raccourci, et le comportement est exactement le même. (Parce que le glisser-déposer, contrairement au double-clic, laisse l'application interpréter le raccourci).
En ce qui concerne les différences entre les liens symboliques de répertoire et les jonctions, voir cette discussion et voici un très description utile :
"Une différence majeure dans la façon dont Windows résout les liens symboliques et les jonctions de répertoires est l'endroit où le traitement a lieu. Windows traite les liens symboliques sur le système local, même lorsqu'ils font référence à un emplacement sur un serveur de fichiers distant. Windows traite les jonctions de répertoires qui font référence à un serveur de fichiers distant sur le serveur lui-même. Les liens symboliques sur un serveur peuvent donc faire référence à des emplacements qui ne sont accessibles que depuis un client, comme d'autres volumes clients, alors que les jonctions de répertoires ne le peuvent pas. Pour résoudre ce problème, Windows Vista prend en charge le nouveau type de lien symbolique pour les fichiers et les répertoires.
"De nombreuses commandes de système de fichiers ont été mises à jour pour comprendre les implications des liens symboliques. Par exemple, la commande Delete sait qu'il ne faut pas suivre les liens, ce qui entraînerait la suppression de la cible, mais supprimer le lien à la place. Cependant, comme toutes les applications ne gèrent pas forcément les liens symboliques correctement, la création d'un lien symbolique nécessite le nouveau privilège Créer un lien symbolique que seuls les administrateurs possèdent par défaut."
"Les liens symboliques diffèrent des raccourcis en ce qu'ils offrent une chemin transparent* vers l'objet de données souhaité, avec un raccourci (.lnk), quelque chose doit lire et interpréter le contenu du fichier de contenu du fichier de raccourci et ensuite ouvrir le fichier auquel il fait référence (c'est un processus en deux étapes). Lorsqu'une application utilise un lien symbolique, elle obtient l'accès immédiat à l'objet de données référencé par le lien symbolique (c'est-à-dire que la est un processus en une seule étape)."
Source : http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html
Parfois, il est bon d'avoir un exemple fonctionnel, alors je vais expliquer comment j'utilise cette fonction.
J'utilise google drive pour sauvegarder des fichiers, mais parfois je veux sauvegarder des fichiers dans un dossier spécifique (je ne peux pas les déplacer vers ../google drive). En particulier avec les applications universelles de Windows 10, les fichiers de configuration et autres sont stockés dans appdata, et la plupart du temps, je ne peux pas changer cet emplacement.
J'utilise l'application stikynot native de Windows, et je voulais sauvegarder mes notes, donc j'ai utilisé un lien symbolique ici. Google drive reconnaît le lien comme un fichier réel et synchronise les fichiers sans problème, alors que le fichier réel est toujours dans le dossier appdata.
Lorsque j'ai des fichiers tels que des dossiers de projet en local que je ne veux pas synchroniser avec le nuage, j'utilise des raccourcis (copie, raccourci passé->collé).