Quels sont les avantages des liens symboliques par rapport aux liens durs et vice versa?

10

Je comprends les différences entre les liens symboliques et durs, mais je n'ai jamais compris pourquoi choisir l'un ou l'autre.

Javier
la source
2
Voir les réponses à "Quelle est la différence entre un lien symbolique et un lien dur?" sur StackOverflow: stackoverflow.com/questions/185899/…
pelms

Réponses:

10

Cela a été discuté en détail sur ServerFault.

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

  • Les liens physiques doivent être sur le même système de fichiers, les liens logiciels peuvent traverser des systèmes de fichiers.
  • Les fichiers liés en dur restent liés même si vous déplacez l'un d'eux (sauf si vous en déplacez un vers un autre système de fichiers déclenchant le mécanisme de copie et de suppression). Les fichiers liés par lien logiciel se cassent si vous déplacez la cible (d'origine) et parfois lorsque vous déplacez le lien (avez-vous utilisé un chemin absolu ou relatif? Est-il toujours valide?).
  • Les fichiers liés en dur sont co-égaux, tandis que l'original est spécial dans les liens souples, et la suppression de l'original supprime les données. Les données ne disparaissent pas tant que tous les liens physiques n'ont pas été supprimés.
  • Les liens logiciels peuvent pointer vers n'importe quelle cible, mais la plupart des systèmes d'exploitation / fichiers interdisent les répertoires de liens fixes pour empêcher les cycles dans le graphique du système de fichiers (à l'exception des entrées .et ..dans les répertoires Unix qui sont des liens durs).
  • Les liens logiciels peuvent nécessiter une prise en charge spéciale des outils de marche du système de fichiers. Lisez sur readlink (2) .

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

dmckee --- chaton ex-modérateur
la source
10

Ronald a écrit qu'un lien dur peut avoir différentes autorisations à deux endroits. Ça n'est pas correct. Les deux endroits partagent le même inode. Les autorisations sont liées à l'inode, pas au nom de fichier. Ainsi, les liens physiques à deux endroits ont exactement les mêmes autorisations, temps d'accès, ...

hurikhan77
la source
1

les liens symboliques peuvent traverser des systèmes de fichiers, pas les liens durs. Si vous supprimez le fichier d'origine, le lien dur le maintient toujours en vie, pas un lien symbolique.

bobmcn
la source
0

Un lien dur signifie essentiellement que le fichier vit à deux endroits, il peut avoir des autorisations différentes, vous pouvez le supprimer sur place mais pas à l'autre.

Un lien logiciel n'est qu'un pointeur vers la réalité.

Un lien dur est constitué de deux (ou plusieurs) entrées de répertoire pointant vers le même fichier. Un lien logiciel est une entrée de répertoire pointant vers une autre entrée de répertoire.

Ronald Pottol
la source