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

Réponses:

57

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 correspond 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.

Phoshi
la source
6
Commandes de marche des arbres (tout comme les services publics unix find, tar, du, etc.) ne doivent savoir au sujet des liens symboliques ou ils peuvent faire des choses très stupides. Par exemple, l'aveuglement des liens symboliques suivants peut créer des cycles dans le système de fichiers, ce qui est une mauvaise chose .
dmckee
9
@dmckee; Très bon point, bien qu'aucune application n'ait besoin d'un support spécifique pour les suivre, elle a toutefois besoin d'un support spécifique pour ne pas les suivre!
Phoshi
Oui, vous n'avez pas besoin d'aide pour les utiliser , mais vous devez les connaître .
dmckee
@Phoshi Ce que vous entendez exactement par "et ils ont besoin d'une application pour prendre en charge ce type de fichier afin de pouvoir être utilisée". Pouvez-vous s'il vous plaît expliquer avec un exemple?
Geek
7
@ Geek: Un "raccourci" est en réalité un fichier qui contient le chemin d'accès à un autre fichier. Lorsque vous le lisez, vous lisez un fichier spécialement formaté qui vous indique où regarder ensuite. Si votre application n'écoute pas et lit simplement le fichier, vous ne la suivez pas. Un lien symbolique est au niveau du système de fichiers, c'est le système de fichiers lui-même qui contient le "vrai" chemin d'accès aux données et lorsque vous essayez d'y accéder, vous récupérez les données pointées.
Phoshi
20

Un "lien symbolique" peut en réalité se substituer à un répertoire ou à un fichier de manière fonctionnelle. Il 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 Nom de fichier est rempli avec le nom de fichier de ce raccourci et agit comme un sous-répertoire. Dans Unix / Linux, l'interface graphique traite un lien symbolique sous forme de chemin (sans modifier le champ du nom de fichier).

Randolf Richardson
la source
Sous Unix / Linux, il existe également des "liens physiques" qui ne sont appliqués qu'aux fichiers (pas aux répertoires). Ce sont des entrées de nom de fichier naturelles dans le système de fichiers qui pointent simplement sur les mêmes données de fichier qu'une autre entrée de nom de fichier ailleurs (il n'est pas nécessaire qu'elles soient dans le même répertoire).
Randolf Richardson
4
@Randolf: 1) Les liens physiques existent également dans Windows. 2) Une fonctionnalité des raccourcis shell est le suivi automatique de la cible - si la cible est déplacée, la plupart des raccourcis de temps continueront à fonctionner. (Dans un domaine AD, il est même possible de suivre les fichiers sur des ordinateurs; par exemple, si vous déplacez un disque dur ailleurs.) 3) Une utilisation des liens symboliques consiste à rediriger un fichier ou un répertoire vers un autre emplacement - ils peuvent pointer vers des fichiers (contrairement aux jonctions). ) et des répertoires (contrairement aux liens physiques), des systèmes de fichiers croisés (contrairement aux liens physiques) et, autant que je sache, peuvent même pointer vers des emplacements réseau.
Grawity
Commentaire tardif, et je ne sais pas si je ne sais pas ce que je fais avec les raccourcis, mais je devais créer un lien symbolique au lieu d’un raccourci pour mon fichier vimrc (je fais référence à un projet dotfiles que j’utilise dans un répertoire séparé).
making3
11

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 (en particulier la section "Jonctions extérieures / Liens symboliques de recadrage / épissage / épissure"). Et l'outil y est joli 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'enregistrement 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, comme cette console et la plupart des applications, vous permettra de naviguer "dans" ce sous-répertoire apparent, plutôt que de (a) rediriger "à 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, 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 le Bloc-notes. Parmi les appels suivants de notepad.exe, 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. (Parce que 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. "

Jon Coombs
la source
2

"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), il faut quelque chose pour lire et interpréter le contenu du fichier de raccourci, puis ouvrir le fichier qu’il référence ( il s’agit d’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

ariefcfa
la source
0

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 Windows 10, les applications universelles, 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 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 pendant que le fichier est 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>).

sommmen
la source