Les liens physiques sont-ils équivalents aux raccourcis Windows?


52

Wikipedia définit un lien dur comme:

une entrée de répertoire qui associe un nom à un fichier sur un système de fichiers. (Un répertoire est lui-même un type de fichier spécial contenant une liste de telles entrées.) Ce terme est utilisé dans les systèmes de fichiers permettant de créer plusieurs liens physiques pour le même fichier.

Je me demande si le concept de lien physique est équivalent au concept Windows de raccourci .

Si les liens physiques ne sont pas équivalents à des raccourcis, quelle est la fonctionnalité Windows la plus proche des liens matériels?


1
Il existe en fait de très bonnes références sur cette page wiki que vous avez partagée.
excentricSam

8
Microsoft NTFS prend en charge les liaisons physiques et elles sont très similaires à la liaison fixe unix. Je pense que les raccourcis sont des objets spéciaux dans l'environnement Windows, mais ils ne sont pas liés à l'organisation du système de fichiers contrairement aux vrais
liens en dur

Le lien suivant donne une bonne explication: comptb.cects.com/…

3
Je pense que le parallèle est trompeur, les raccourcis sont des liens "d'interface" uniquement des fichiers contenant des informations textuelles sur la cible qui sont interprétées par l'interface et non par le système de fichiers. A partir d'une ligne de commande, ils ne désignent pas vraiment quelque chose au sens du système de fichiers. Windows (ou mieux NTFS) a des liens symboliques appropriés en.wikipedia.org/wiki/NTFS_symbolic_link qui ne sont ni des raccourcis ni des liens durs. En fait, je les utilise dans Windows pour placer les dossiers Dropbox n’importe où, ce n’est pas possible avec des raccourcis.
alfC

5
Les fichiers de raccourci Windows ressemblent beaucoup aux fichiers .desktop de Linux. Les liens symboliques Linux et les liens physiques sont une chose complètement différente qui sert parfois le même objectif.
mikebabcock

Réponses:


113

Non, un lien dur est complètement différent. Un lien symbolique est plus proche d'un raccourci Windows (bien qu'il existe des différences importantes, les liens symboliques ressemblent davantage aux raccourcis Windows que ne le sont les liens physiques). Un lien dur est une chose différente et une dont vous n’a presque jamais besoin.

En bref, un lien symbolique est créé avec cette commande:

ln -s foo bar

Si vous courez ensuite ls -l, vous verrez:

lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo

Le ->moyen qui barest un lien vers foo. Ainsi, l'ouverture bar, avec un éditeur de texte par exemple, ouvrira le fichier séparé foo. Cependant, la suppression barne fera que supprimer le raccourci, cela n'affectera pas le fichier foo.

Les liens durs, en revanche, sont créés avec cette commande:

ln foo bar

Si vous exécutez maintenant ls -l, il n'y a aucune indication de relation entre les fichiers:

-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo

Mais — et c’est très important — c’est en fait le même fichier . Les fichiers sur les systèmes de fichiers Unix sont stockés à l'aide d' inodes ; Un inode est essentiellement la façon dont le système de fichiers mappe un nom de fichier sur un emplacement particulier du disque dur physique. Ainsi, les liens physiques sont des fichiers qui pointent sur le même inode que leur cible. Une autre façon de le dire est que tous les fichiers sont en fait des liens durs pointant vers leurs inodes. Faire un lien physique vers un fichier crée simplement un nouveau pointeur (fichier) sur le système de fichiers qui pointe vers le même inode. Chaque inode peut avoir plusieurs fichiers pointant vers lui, un seul ou aucun.

Pour mieux comprendre cela, utilisez ls -il’affichage qui montre l’inode associé à un fichier. Créons un lien symbolique et un lien dur et voyons ce qui se passe:

ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo

Maintenant, vérifiez leurs inodes:

entrez la description de l'image ici

Comme vous pouvez le voir ci-dessus, les deux fooet HardLinkToFooont le même inode (16648029) alors que SoftLinkToFoo en a un différent (16648036).

Que se passe-t-il si nous renommons fooavec mv foo bar?

entrez la description de l'image ici

La couleur rouge indique un lien brisé cassé, celui dont la cible ne peut plus être trouvée. Cela est dû au fait que les liens symboliques renvoient au nom du fichier, pas à son inode. Notez qu'en dépit du changement de nom, l'inode reste le même, donc le lien dur fonctionne bien, il fonctionne toujours.

En résumé, les liens physiques sont en réalité deux manifestations du même fichier; Ce sont des pointeurs sur la même section du disque. Les liens symboliques ne sont que des raccourcis. Pour prendre une analogie avec le monde réel, les liens physiques ressemblent à deux numéros de téléphone différents pour la même ligne téléphonique et les liens symboliques, c'est comme avoir deux lignes téléphoniques différentes dans la même maison.


6
@ Kiwy C'est l'inverse: les liens symboliques absolus échouent de différentes manières (dès que vous déplacez des données, montez-les à un endroit différent, sauvegardez-les,…) et il vaut mieux les éviter.
Gilles, arrête de faire le mal.

3
Il convient également de noter que la suppression (via rmou unlink()) d'un lien physique ne décrémente que le nombre de liens jusqu'à ce que le nombre de liens atteigne zéro, lorsque les blocs occupés par le contenu du fichier sont libérés. Je ne suis pas sûr que dire «les liens durs sont en réalité deux instances du même fichier» est strictement correct, car les deux noms pointent vers le même inode, et donc le même contenu, plutôt que s'il existe deux instances du fichier lui-même aucun sens.
Emmet

7
Notez qu'un raccourci Windows est un fichier utilisé par le shell et peut donc faire des choses que le shell connaît, mais pas le système de fichiers. Par exemple, vous pouvez créer des raccourcis dans l'espace de noms du shell (par exemple, Panneau de configuration, Ordinateur, etc.) ou des applications à installer (qui seront installées lors de la première utilisation). Ces choses n'ont pas d'équivalent direct dans le monde du système de fichiers.
Joey

2
J'aime cette réponse, mais sa compréhension de ce qu'est un raccourci Windows est en fait assez médiocre. @Shaakunthala ci-dessous a une meilleure réponse car le raccourci Windows ressemble plus à un fichier .desktop Linux qu’à un lien symbolique.
mikebabcock

18

Il existe une bonne explication sur les liens physiques et symboliques, mais une chose doit être clarifiée.

Windows raccourcis sont équivalents ou similaires à ni liens souples ni liens durs . Au niveau du système de fichiers, ce ne sont que des fichiers. C'est la coque qui comprend leur structure et les interprète comme des liens. Les raccourcis Windows peuvent également pointer vers des objets d'espaces de noms de shell non liés au système de fichiers (imprimantes, éléments du panneau de configuration, dossiers virtuels).

Les raccourcis Windows, en plus du nom de l'objet du système de fichiers, contiennent les informations suivantes: PIDL ("chemin" binaire opaque dans l'espace de noms du shell), description, raccourci clavier, icône, répertoire de travail. Windows ajoute également des identificateurs d'objet NTFS si le système de fichiers NTFS est utilisé, afin de corriger les raccourcis cassés.

L'équivalent approximatif d'un raccourci Windows est un fichier .desktop . Voir cette question sur SuperUser: Existe - t-il un équivalent de .lnk sous Linux?


6

Non, sous Linux, les choses fonctionnent différemment.

Chaque fichier est représenté par un objet appelé 'inode'. Chaque inode est associé à un numéro (ID).

Comme nous le savons, les humains ne savent pas retenir les chiffres, mais les noms. (C'est comme ça que les annuaires ont évolué)

Par conséquent, le nom de fichier est entré dans l'image pour donner à chaque inode un nom lisible par l'homme. Fondamentalement, un lien physique lie un nom de fichier à un inode. Un inode peut avoir plusieurs liens durs. S'il n'y a aucun lien physique présent pour un inode particulier, l'espace disque utilisé par l'inode peut être réaffecté à de nouveaux fichiers. Ce qui signifie qu’au moins un lien matériel doit être présent pour chaque fichier. Le nom de fichier (visualisé sous le nom de fichier / icône que vous voyez dans le navigateur de fichiers) lui-même est un lien dur.

Sous Windows, le raccourci est un fichier séparé (fichier * .lnk). Il contient des informations sur le fichier d'origine (naturellement le chemin du fichier). Selon Linux, un raccourci Windows serait un autre inode lié à un nom de fichier se terminant par '.lnk'.


3
NTFS fonctionne réellement comme ceci. Un fichier est une entrée dans la MFT et les entrées de répertoire mappent simplement les noms de fichiers sur les ID de fichiers. Il supporte les liens durs et, depuis 2008/7 / Vista (?), Même les liens symboliques. À ce stade, la plus grande différence est culturelle.
cHao

2

Sous Windows, vous pouvez également créer des liens physiques si vous avez un système de fichiers NTFS.

fsutil hardlink create target_file source_file

Les fichiers doivent être sur le même lecteur logique.


C'est exact - NTFS prend également en charge les liens durs. Souvent, les outils nécessitent que vous ayez des privilèges d’administrateur pour les créer. À propos du "même lecteur logique" - il serait plus précis de dire qu'ils doivent être sur le même système de fichiers. Un lecteur logique peut être n'importe quoi, y compris une lettre de lecteur créée par la substcommande. Un outil peut ne pas savoir / s'en préoccuper et donc refuser de créer un lien dur, cependant. L’ extension Link Shell, qui permet à l’explorateur de les créer , est très utile .
Tobias

1

Une grosse différence, un lien physique ne peut être créé pour des dossiers, mais pour des fichiers.

Des raccourcis peuvent être créés pour les dossiers, vous ne pouvez donc pas dire qu'ils sont équivalents.

Votre question devrait faire la différence entre un lien symbolique ou un lien virtuel et un raccourci .

comme suit:

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.

Un "raccourci" est juste un fichier ordinaire qui fait référence au fichier ou au répertoire de destination.

Ainsi, lorsque vous cliquez sur un raccourci, votre répertoire est remplacé par le fichier réel, tandis que soft-link renvoie à son emplacement comme si c'était le fichier réel. Pour cela, sous Linux, vous pouvez utiliser terminal et cd pour créer des liens symboliques alors que vous ne pouvez pas créer de raccourcis. .

Un raccourci Windows et un lanceur Linux (pointant vers un emplacement) seraient identiques.


2
Quelle? Les liens symboliques ne sont que des fichiers, même s'ils sont étranges, ils prennent également des inodes, par exemple. Ils ne sont pas traités comme l'original (c'est des liens durs). S'il est vrai que les liens physiques ne sont pas autorisés pour les répertoires dans la plupart des systèmes d'exploitation, il ne s'agit que d'une fonctionnalité de sécurité et il existe des exceptions à cela (machine à l'heure OSX par exemple). Et bien sûr, vous pouvez cd à des raccourcis (je suppose que vous entendez des raccourcis Windows puisque vous dites que vous pouvez cd à des soflinks).
terdon

1
Êtes-vous sûr que vous pouvez utiliser cmd to cd pour créer un raccourci.
Nux

1
Je viens de lancer ma machine virtuelle Windows et de créer un raccourci vers un dossier de mon bureau. Les raccourcis Windows sont très similaires (voire identiques) aux liens symboliques. Bien que vous ne puissiez pas les utiliser avec cmd.exe pour une raison quelconque, vous pouvez créer un fichier .lnk dans un répertoire et l’utiliser via l’explorateur.
terdon

1
les électeurs doivent donner une raison de voter
nux

5
Désolé, toujours pas correct. Les liens symboliques sont des fichiers contenant leur cible en texte brut (voir ici ), les liens symboliques ne sont pas traités comme des originaux, c'est toute la différence entre les liens symboliques et les liens physiques. Les lanceurs Linux (je suppose que vous voulez dire des fichiers .desktop) n’ont absolument rien à voir avec cela, ils sont complètement différents. Comme vous le dites vous-même, les raccourcis Windows peuvent pointer vers des fichiers (y compris des programmes) et des dossiers (mac et windows ont des dossiers, Linux a des répertoires). Les fichiers .desktop vous permettent simplement de lancer un programme. Ils ne sont liés nulle part.
terdon
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.