web-dev-qa-db-fra.com

Quelle est la différence entre lien symbolique et raccourci?

Quelle est la différence entre un lien symbolique et un raccourci?

76
deepthi tm

Je pense que le point important est que les raccourcis ne sont qu'un fichier. Ils ont une taille (une petite taille, qui fait simplement référence à l'endroit où ils pointent) et ils ont besoin d'une application prenant en charge ce type de fichier pour pouvoir être utilisée.

Un lien symbolique est au niveau du système de fichiers, et tout le voit comme le fichier d'origine. Une application n'a besoin d'aucun support particulier pour utiliser un lien symbolique.

55
Phoshi

Un "lien symbolique" peut en fait fonctionner comme un substitut à un répertoire ou à un fichier et est couramment utilisé dans les environnements Unix/Linux. Bien que Windows semble prendre en charge cette fonctionnalité, je n’en ai pas encore vu l’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, tels que 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 vrai sous-répertoire).

De plus, dans la plupart des applications Windows, lorsque vous cliquez sur un raccourci dans une boîte de dialogue Fichier-> Ouvrir une interface graphique, le champ de nom de fichier est rempli avec le nom de fichier de ce raccourci et agit comme un sous-répertoire. un lien symbolique sous forme de chemin (sans modifier le champ du nom de fichier).

19

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 "Rogner/Dérouler/Assembler les jonctions extérieures/liens symboliques"). Et l'outil là-bas a l'air bien aussi. (En mentionnant ceci et mklink, nous espérons que plus de recherches trouveront cette discussion.)

Un raccourci est un fichier, pas un lien réel, et il n’est généralement suivi avec succès qu’en tant que lien interprété par l’interface utilisateur Windows (interface utilisateur). 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 d'ouverture de fichier et d'ouverture de fichier invoquées par la plupart des applications.) Sur mon bureau, un raccourci vers ce dossier est créé: C:\ProgramData\Microsoft\Windows\Menu Démarrer\Programmes\G

Le nom de fichier du raccourci est: C:\Users\user5\Desktop\Games.lnk, bien que Windows supprime l'extension .lnk et ne montre 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 faites un répertoire, 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 l'option\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, car il s’agit d’un lien de dossier.) L’Explorateur Windows, tout comme cette console et la plupart des applications, vous permettra de naviguer "dans" ce sous-répertoire apparent, plutôt que de le "à travers" vers un emplacement différent ou (b) en échec.

Les raccourcis ne se comportent pas comme des sous-répertoires. Je peux appeler le comportement de fichier par défaut de l'interface utilisateur Windows avec cette commande (le dossier "G" s'ouvre dans l'explorateur Windows):

C:\Users\user5\Desktop>"Games.lnk"

Alors que mysymlink est répertorié (voir le compte) comme un véritable 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 un raccourci:

C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.

L'interface utilisateur 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), mais un éditeur hexadécimal afficherait mieux:

C:\Users\user5\Desktop>notepad.exe "Games.lnk"

Tandis que vous essayez d'exécuter le Bloc-notes sur un sous-dossier réel, un message d'erreur "Accès refusé" et un Bloc-notes vide s'affichent.

Inversement, si je crée un lien symbolique de fichier (et non un lien symbolique de dossier), je peux le lancer avec Notepad. Parmi les appels notepad.exe suivants, les deux premiers fonctionnent et le troisième échoue (il ouvre le fichier .LNK, le binaire gobbledegook).

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 juste un truc de console. Copier un raccourci vers le Bloc-notes sur mon bureau et essayer de glisser-déposer chacun des trois éléments sur celui-ci entraîne exactement le même comportement. (Le glisser-déposer, contrairement au double-clic, permet à l'application d'interpréter le raccourci.)

En ce qui concerne les différences entre les liens symboliques et les jonctions d’annuaires, voir cette discussion , et voici une description très utile :

"Une différence majeure dans la manière dont Windows résout les liens symboliques et les jonctions de répertoires réside dans le traitement. Windows traite les liens symboliques sur le système local, même lorsqu'ils référencent un emplacement sur un serveur de fichiers distant. Windows traite les jonctions de répertoires référençant un serveur distant. Les liens symboliques sur un serveur peuvent donc faire référence à des emplacements uniquement accessibles depuis un client, comme les autres volumes client, contrairement aux jonctions de répertoires. Pour remédier à cela, Windows Vista prend en charge le nouveau type de lien symbolique pour les deux fichiers. et 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 Supprimer ne doit pas suivre les liens, ce qui entraînerait la suppression de la cible, mais plutôt le supprimer. Cependant, toutes les applications peut gérer 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 ont par défaut. "

10
Jon Coombs

"Les liens symboliques diffèrent des raccourcis en ce sens qu’ils offrent un chemin * transparent vers l’objet de données souhaité, avec un raccourci (.lnk). c’est un processus en deux étapes.) Lorsqu'une application utilise un lien symbolique, elle accède immédiatement à l’objet de données référencé par le lien symbolique (c’est-à-dire qu’il s’agit d’un processus en une étape). "

Source: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html

2
ariefcfa

Parfois, il est bon d'avoir un exemple fonctionnel, si mal expliquer comment j'utilise cette fonction.

J'utilise google drive pour sauvegarder des fichiers, mais je souhaite parfois sauvegarder des fichiers dans un dossier spécifique (je ne peux pas les déplacer vers ../google drive). Surtout avec les applications universelles Windows 10, les fichiers de configuration, etc. sont stockés dans appdata, et la plupart du temps, je ne peux pas changer cet emplacement.

J'utilise l'application Windows native stikynot et je voulais sauvegarder mes notes. J'ai donc utilisé un lien symbolique ici. Le lecteur Google reconnaît le lien en tant que fichier et synchronise parfaitement les fichiers, le fichier se trouvant toujours dans le dossier appdata.

Lorsque j'ai des fichiers comme des dossiers de projets localement que je ne souhaite pas synchroniser avec le nuage, j'utilise des raccourcis (copier, coller, coller>).

0
sommmen