Como você cria um Hard Link funcional no OSX?

8

Ok, isso me deixa batendo na cabeça. No OS X, para criar um link físico, em uma janela do terminal, você deve apenas digitar isso ...

ln a.txt b.txt

... e isso deve criar um link físico de a.txtpara b.txt. Simples e direto.

Quando executo essa instrução, com certeza, no Finder b.txtaparece ao lado a.txt. No entanto, mesmo após a edição a.txtusando o TextEdit, b.txtainda há os dados originais! Em outras palavras, parece que ele executou uma cópia, não um link, físico ou não.

Não faz nenhum sentido para mim! Então, alguém pode me dizer o que estou fazendo de errado aqui?

Mark A. Donohoe
fonte
Como você o edita?
user151019
Acabei de abrir o arquivo no TextEdit e adicionar um pouco de texto. Acabei de cortar e copiar um bloco repetidamente. No Finder, 'A.txt' agora tem um tamanho diferente de 'b.txt', o que significa que na verdade estão apontando para dois arquivos (dados) diferentes no disco.
Mark A. Donohoe
Curioso. Eu apenas tentei isso usando o vi para editar os arquivos e o link persistiu. Com o TextEdit, como você observa, ele quebra.
emprestável 25/06
2
Considere editar sua pergunta, considerando que suas suposições estavam erradas.
Daniel Beck
As respostas mostram claramente que os links físicos estão, de fato, funcionando; o título sugere o contrário. É apenas o comportamento de substituição de arquivos dos aplicativos OS X que elimina seus links físicos, o que é uma questão totalmente diferente.
Daniel Beck

Respostas:

14

A razão para esse comportamento é bastante direta e está relacionada à maneira como os arquivos são salvos na maioria dos aplicativos Mac OS X: Atomically.

O que acontece é que uma cópia do arquivo é gravada em uma área temporária e, em seguida, movida para substituir o arquivo original.

Isso, naturalmente, quebra os links físicos.

Williham Totland
fonte
Sim ... parece ser qualquer aplicativo do OS X que use a abordagem baseada em documentos do Cocoa. Isso realmente fede! Vou ver se consigo me safar usando links flexíveis (aliases). Não tenho certeza, porque estou editando um DefaultKeyBinding.dict que o sistema usa. Espero que seja inteligente o suficiente para seguir o link. Veremos!
Mark A. Donohoe
Tão verdade. É também por isso que editar os arquivos de configuração do sistema Unix-y é um problema para os editores da OSI GUI e muito mais fácil de realizar vi- não é suficiente definir permissões de gravação no arquivo, você também precisa da pasta!
Daniel Beck
Aliás, os links não funcionam, então acho que estou de volta ao script de cópias de arquivos depois de salvar em todos os locais em que preciso disso. Stinx!
MarkDonohoe
@MarqueIV: links simbólicos podem funcionar.
Williham Totland
foi isso que eu quis dizer. Entendi errado o termo. Especificamente, é para as combinações de teclas do OS X. Ele espera que o arquivo real esteja em um local específico e não funcione com links simbólicos. No entanto, ele funciona com links físicos, no entanto, como indicado, uma vez que o editor é baseado em documentos do Cocoa, não posso editar o arquivo sem quebrar os links; portanto, parece que preciso recorrer à cópia manual (ou redefinição) os links físicos) depois de editar o documento. Não é o ideal, mas nada que um script rápido não conserte.
Mark A. Donohoe
3

Se aparecer, consulte esta entrada do superusuário , que esse é um recurso do TextEdit. Portanto, o método normal para criar links físicos está correto, mas o TextEdit se comporta de maneira a quebrar isso. (O link diz que ele cria um novo arquivo e o move sobre o arquivo antigo após a edição.)

emprestado
fonte
Sim ... só vi isso no SU quando você postou isso. Também não é apenas o TextEdit. Parece ser todos os aplicativos baseados em documentos. Fede porque isso significa que não posso usar ferramentas baseadas em documentos para editar arquivos com links físicos.
precisa
não é apenas o TextEdit, mas todos os aplicativos baseados em cacau que usam a arquitetura de documentos, o que a maioria faz.
MarkDonohoe
2

Observe que o emacs também exibe esse comportamento (surpreendente!) Por padrão (em todos os unixes), embora a causa seja um pouco diferente (é a coisa "segura" a fazer em situações de espaço em disco muito baixo). No entanto, ele pode ser configurado de várias maneiras.

Consulte a documentação para make-backup-files(uso C-h v make-backup-files) e para

  • backup-by-coping
  • backup-by-coping-when-linked
  • backup-by-coping-when-mismatch
  • backup-by-coping-when-privileged-mismatch
dmckee --- gatinho ex-moderador
fonte