Ok, ça me fait me cogner la tête. Sous OS X, pour créer un lien dur, dans une fenêtre de terminal, vous êtes censé pouvoir simplement taper ceci ...
ln a.txt b.txt
... et cela devrait créer un lien dur de a.txt
à b.txt
. Simple et direct.
Lorsque j'exécute cette déclaration, bien sûr, dans le Finder b.txt
apparaît juste à côté a.txt
. Cependant, même après l'édition à l' a.txt
aide de TextEdit, b.txt
les données d'origine sont toujours conservées ! En d'autres termes, il semble qu'il ait effectué une copie, pas un lien, dur ou autre.
Cela n'a aucun sens pour moi! Alors, quelqu'un peut-il me dire ce que je fais mal ici?
osx-snow-leopard
hardlink
Mark A. Donohoe
la source
la source
Réponses:
La raison de ce comportement est assez simple et concerne la façon dont les fichiers sont enregistrés dans la plupart des applications Mac OS X: atomiquement.
Ce qui se passe, c'est qu'une copie du fichier est écrite dans une zone de transit temporaire, puis déplacée pour remplacer le fichier d'origine.
Cela, tout naturellement, brise les liens durs.
la source
vi
- il ne suffit pas de définir des autorisations d'écriture sur le fichier, vous avez également besoin du dossier!Si apparaît, voyez cette entrée du superutilisateur , qu'il s'agit d'une fonctionnalité de TextEdit. Ainsi, la méthode normale pour créer des liens durs est correcte, mais TextEdit se comporte de manière à rompre cela. (Le lien indique qu'il crée un nouveau fichier, puis le déplace sur l'ancien fichier après modification.)
la source
Notez qu'emacs présente également ce comportement (surprenant!) Par défaut (dans tous les Unix), pensant que la cause est légèrement différente (c'est la chose "sûre" à faire dans des situations d'espace disque très faible). Cependant, il peut être configuré de plusieurs manières.
Voir la documentation pour
make-backup-files
(utilisationC-h v make-backup-files
) et pourbackup-by-coping
backup-by-coping-when-linked
backup-by-coping-when-mismatch
backup-by-coping-when-privileged-mismatch
la source