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

59

J'ai entendu dire que vous pouvez maintenant créer des liens symboliques dans Vista également . Alors, quelle est la différence entre un lien symbolique et un lien physique sous UNIX / Linux / Vista?

Y a-t-il des avantages à utiliser l'un par rapport à l'autre? Ou servent-ils simplement deux objectifs distincts?

Aaron K
la source
En termes pratiques, la réponse est que vous voulez presque toujours utiliser un lien symbolique. D'après ce que j'ai compris, les liens physiques servent principalement à préserver l'espace, en particulier dans les cas d'instantanés et de sauvegardes incrémentielles, où des instantanés successifs contiennent de nombreux fichiers identiques qui ne risquent pas de changer à l'avenir.
Ryan Thompson
Cela devrait-il être migré vers Unix et Linux? Voir unix.stackexchange.com/questions/9575/…
ripper234
2
Non, il ne devrait pas être migré. La question initiale n'étant pas spécifique à Unix, Windows prend en charge les liens physiques et les liens physiques.
Richard West
1
certaines applications vont casser (et parfois mal) si vous utilisez un lien symbolique - spécialement pour les répertoires: le lien symbolique sera déréférencé, et quand il le sera et que l'application compare, disons /var/opt/log/appname(sa configuration) à la valeur déréférencée, par exemple /apps/appname/logs, elle se plaindra ce n'est pas un match. Le correctif consiste à utiliser mount --bind(sous Linux) pour remonter le répertoire d'origine dans le nouvel emplacement.
Warren
1
Juste pour éclaircir quelques points inclus dans d’autres réponses ... Windows peut créer des liens durs (même si je pense qu’ils se comportent légèrement différemment que sous Unix). Examinez la commande mklink et l'argument h. (Si vous tapez mklink dans la ligne de commande, le fichier d'aide contenant la syntaxe de base

Réponses:

68

Un lien physique partage généralement les mêmes structures de système de fichiers (inode dans unixspeak), tandis qu'un lien symbolique est une redirection de chemin d'accès.

  • Les liens durs doivent être sur le même système de fichiers, les liens symboliques pouvant croiser des systèmes de fichiers.
  • Les fichiers liés durement restent liés même si vous déplacez l'un d'entre eux (sauf si vous déplacez l'un vers un autre système de fichiers déclenchant le mécanisme de copie et de suppression). Les fichiers à liens symboliques sont interrompus si vous déplacez la cible (originale) et parfois lorsque vous déplacez le lien (avez-vous utilisé un chemin absolu ou relatif? Est-il toujours valide?).
  • Les fichiers liés durement sont co-égaux, alors que l'original est spécial dans les liens symboliques, et la suppression de l'original supprime les données. Les données ne disparaissent pas tant que tous les liens durs ne sont pas supprimés.
  • Les liens symboliques peuvent pointer sur n’importe quelle cible, mais la plupart des systèmes d’exploitation / systèmes de fichiers interdisent les répertoires de liaison permanente pour empêcher les cycles dans le graphe du système de fichiers (à l’exception des entrées .et des ..répertoires unix qui sont des liens fixes).
  • Les liens symboliques peuvent nécessiter un soutien particulier de la part des outils de marche du système de fichiers. Lire sur readlink (2) .

(Quelques détails rappelés par mat1t . Merci.)

dmckee
la source
Beau résumé. Tous les utilisateurs de Linux devraient le savoir (même si les liens physiques sont très rares).
Artem Russakovskii
La réponse de dmckee contient des détails assez précis sur la sémantique. Le seul détail que je voudrais ajouter est une explication de ce qui se passe à un niveau supérieur: un lien symbolique est un fichier lui-même, tandis qu'un lien physique est une entrée de répertoire pointant vers des données existantes. Wikipedia a plus de détails sur les liens durs et soft .
M. Shiny et New
beau résumé, très utile
Razique 8/08
9
Il convient également de noter que les liens matériels partagent des autorisations ainsi que des informations sur la propriété.
Corey S.
6
S'il vous plaît ajouter que 2 liens durs sont automatiquement créés avec le nom. et .. chaque fois que vous créez un dossier. Sous Linux, ce sont les seuls liens physiques valides vers un dossier.
Mircea Vutcovici
10

Le résumé est qu'un lien symbolique / court agit comme un raccourci vers l'emplacement du premier fichier, alors qu'un lien dur est un raccourci vers le fichier sur le disque.

Si vous supprimez la cible d'un lien symbolique, celui-ci cessera de fonctionner, mais si vous supprimez une copie d'un lien physique, le fichier reste sur le disque jusqu'à ce que tous les liens physiques qui lui sont supprimés soient supprimés. En effet, tous les noms de fichiers sont des liens en dur vers le fichier sur le disque.

Il existe également certaines restrictions, par exemple, je ne pense pas que vous puissiez créer des liens physiques de dossiers, mais vous pouvez en créer des liens souples. Les liens symboliques peuvent également pointer vers des fichiers / dossiers situés sur différents lecteurs et partitions, contrairement aux liens physiques.

Matthew Steeples
la source
-1

Le système MS Windows utilise toujours des liens symboliques (raccourcis). En d'autres termes, le lien agit simplement comme un raccourci pointant vers l'emplacement du fichier. Si l'emplacement de l'original est déplacé, le lien est rompu. De plus, ce que vous faites avec le raccourci (comme changer des autorisations ou changer le nom du raccourci) n'affecte pas le fichier réel.

Donc, la question a commencé avec une hypothèse incorrecte. Oui, Vista utilise des liens symboliques, mais ce n’est pas nouveau, c’est ce qu’est un raccourci MS.

Reginald Kincaid
la source
3
Non, NTFS prend en charge les liens physiques et existe depuis NTFS 3.1 (la version actuelle depuis XP / 2003).
Chris S