Quelles sont les utilisations typiques des liens durs?

9

Tous ceux qui étaient habitués à Windows peuvent imaginer ce que sont les liens symboliques et comment ils sont utilisés. En revanche, le concept de lien dur est étranger à Windows (ai-je raison?).

Je voudrais savoir quelles sont les utilisations typiques des liens durs sous Linux. J'ai déjà vu différents articles décrivant la différence dans leur fonctionnement. Ce que je demande, c'est quelles sont les situations typiques où un utilisateur serait mieux d'utiliser des liens durs au lieu de liens symboliques?

Faire
la source
3
Cette question a été posée sur stackixchange Unix et Linux: Pourquoi existe-t-il des liens matériels?
Flimm

Réponses:

9

J'utilise un lien dur où j'ai besoin d'un seul fichier à deux endroits ou plus, je prédis qu'un jour je voudrai supprimer l'un des emplacements, et j'oublierai peut-être que j'ai un lien vers le fichier. Cela m'empêche de me retrouver avec un lien symbolique vers un fichier qui n'existe plus.

Clarification:

Un nom de fichier est en fait un lien dur vers le fichier. Ainsi, chaque fichier a au moins un lien dur, ce que nous considérons normalement comme "le" nom de fichier. Lorsque vous supprimez un fichier, vous supprimez en fait son lien dur (d'où le nom "supprimer", c'est rm-à- dire plutôt que "supprimer"). Lorsqu'un fichier a son dernier lien dur supprimé, le système supprime également le fichier.

Paddy Landau
la source
7

Les liens durs permettent ...

  • un seul exécutable pour avoir plus d'un nom.

    Exemple:

    ls -l /bin | grep -v ' 1 ' | sorténumérera ceux /binpour vous. Résultat ...

    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 gunzip
    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 uncompress
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bunzip2
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzcat
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzip2
    

    Au lieu de 3 fichiers, bunzip2 bzcat et bzip2 utilisent le même fichier et à l'intérieur du fichier, la distinction est faite à quoi faire. Enregistre le code et moins de code signifie moins de bogues possibles et une maintenance plus facile.

  • un seul fichier accessible par plusieurs chemins.

    Prenons par exemple un gestionnaire de packages, qui crée un répertoire / usr / share / doc / $ packagename pour chaque package installé et à l'intérieur de ce répertoire un fichier appelé LICENSE avec les informations de licence du package. De nombreux packages sur un système Linux typique sont sous licence GPL, donc au lieu d'avoir 200 copies de la GPL sur le système de fichiers, il ne peut y avoir qu'une seule copie et 199 liens. ptman @ Serverfault

La raison pour laquelle les liens durs fonctionnent ici (et ceux qui ne le sont pas): la suppression d'un seul des liens durs ne supprime pas le fichier lui-même.

Rinzwind
la source
2
"Exemple: un move ( mv) est un copy ( cp) + un remove ( rm)." Cela n'est vrai que lorsque la source et la destination se trouvent sur des supports différents. Sinon, a mvdéplace uniquement le nom, pas le fichier.
Paddy Landau
1
Si vous voulez devenir technique: mv change l'inode et non le nom. Mais vous avez raison: on dirait que cet exemple est un peu vieux de nos jours et j'aurais dû utiliser gzip comme exemple;)
Rinzwind
3
Nous devenons un peu hors sujet, mais je viens de le tester. Tant que le fichier reste sur le même montage, mvchange uniquement le nom; l'inode reste le même.
Paddy Landau
Cela n'explique pas vraiment pourquoi vous ne pouvez pas simplement utiliser des liens symboliques - que vous pouvez enregistrer pour quelques octets de données supplémentaires. Ceci est correctement traité dans cette réponse .
Ken Sharp