Comment créez-vous un Hard Link fonctionnel dans OSX?

8

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.txtapparaît juste à côté a.txt. Cependant, même après l'édition à l' a.txtaide de TextEdit, b.txtles 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?

Mark A. Donohoe
la source
Comment l'éditez-vous?
user151019
Je viens d'ouvrir le fichier dans TextEdit et d'ajouter du texte. Je viens de couper et de copier un bloc encore et encore et encore. Dans le Finder, 'A.txt' a maintenant une taille différente de 'b.txt', ce qui signifie qu'ils pointent en fait vers deux fichiers (de données) différents sur le disque.
Mark A. Donohoe
Curieuse. J'ai juste essayé ceci en utilisant vi pour éditer les fichiers et le lien a persisté. Avec TextEdit, comme vous le constatez, ça casse.
borrible le
2
Pensez à modifier votre question, étant donné que vos hypothèses étaient erronées.
Daniel Beck
Les réponses montrent clairement que les liens physiques fonctionnent, en fait; le titre suggère le contraire. C'est juste le comportement de remplacement de fichiers des applications OS X qui se débarrasse de vos liens durs, ce qui est un tout autre problème.
Daniel Beck

Réponses:

14

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.

Williham Totland
la source
Ouais ... semble être n'importe quelle application OS X qui utilise l'approche documentaire de Cocoa. Ça pue vraiment! Je vais voir si je peux à la place utiliser des liens logiciels (alias) à la place. Pas sûr cependant car j'édite un DefaultKeyBinding.dict que le système utilise. J'espère que c'est assez intelligent pour suivre le lien. Nous verrons!
Mark A. Donohoe
Tellement vrai. C'est aussi pourquoi l'édition des fichiers de configuration du système Unix-y est pénible dans les éditeurs de l'interface graphique OS X et beaucoup plus facile à réaliser vi- il ne suffit pas de définir des autorisations d'écriture sur le fichier, vous avez également besoin du dossier!
Daniel Beck
BTW, les liens logiciels ne fonctionnent pas, donc je suppose que je suis de retour aux scripts de copie de fichiers après une sauvegarde à tous les endroits dont j'ai besoin. Stinx!
Mark A. Donohoe
@MarqueIV: les liens symboliques peuvent fonctionner.
Williham Totland
c'est ce que je voulais dire. Vous avez mal utilisé le terme. Plus précisément, c'est pour les raccourcis clavier d'OS X. Il s'attend à ce que le fichier réel se trouve dans un emplacement spécifique et ne fonctionne pas avec les liens symboliques. Il fonctionne cependant avec des liens durs, mais comme indiqué, puisque l'éditeur est basé sur Cocoa, je ne peux pas modifier le fichier sans rompre les liens, il semble donc que je doive recourir à la copie manuelle (ou à la réinitialisation) les liens durs) après avoir édité le document. Pas optimal, mais rien qu'un script rapide ne résoudra.
Mark A. Donohoe
3

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.)

Borrible
la source
Ouais ... je viens de voir ça sur SU juste quand tu as posté ça. Ce n'est pas seulement TextEdit non plus. Il semble que ce soit toutes les applications basées sur des documents. Pue parce que cela signifie que je ne peux pas utiliser d'outils basés sur des documents pour modifier des fichiers liés en dur.
Mark A. Donohoe
ce n'est pas seulement TextEdit, mais toutes les applications basées sur Cocoa qui utilisent l'architecture de document, ce que la plupart font.
Mark A. Donohoe
2

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(utilisation C-h v make-backup-files) et pour

  • backup-by-coping
  • backup-by-coping-when-linked
  • backup-by-coping-when-mismatch
  • backup-by-coping-when-privileged-mismatch
dmckee --- chaton ex-modérateur
la source