Ok, esto me tiene golpeando mi cabeza. En OS X, para crear un enlace duro, en una ventana de terminal, se supone que puedes escribir esto ...
ln a.txt b.txt
... y esto debería crear un enlace duro de a.txt
a b.txt
. Simple y directo.
Cuando ejecuto esa declaración, efectivamente, en Finder b.txt
aparece justo al lado a.txt
. Sin embargo, incluso después de editar a.txt
usando TextEdit, ¡ b.txt
todavía tiene los datos originales! En otras palabras, parece que realizó una copia, no un enlace, de forma física o no.
¡No tiene ningún sentido para mí! Entonces, ¿alguien puede decirme qué estoy haciendo mal aquí?
osx-snow-leopard
hardlink
Mark A. Donohoe
fuente
fuente
Respuestas:
La razón de este comportamiento es bastante sencilla y se relaciona con la forma en que se guardan los archivos en la mayoría de las aplicaciones de Mac OS X: Atómicamente.
Lo que sucede es que una copia del archivo se escribe en un área de almacenamiento temporal y luego se mueve para reemplazar el archivo original.
Esto, naturalmente, rompe los enlaces duros.
fuente
vi
: no es suficiente establecer permisos de escritura en el archivo, ¡también necesita la carpeta!Si aparece, vea esta entrada del superusuario , que esta es una característica de TextEdit. Por lo tanto, el método normal para crear enlaces duros es correcto, pero TextEdit se comporta de manera que se rompa esto. (El enlace dice que crea un nuevo archivo y luego lo mueve sobre el archivo anterior después de editarlo).
fuente
Tenga en cuenta que emacs también exhibe este comportamiento (¡sorprendente!) De forma predeterminada (en todos los unixes), aunque la causa es ligeramente diferente (es lo "seguro" en situaciones de muy poco espacio en disco). Sin embargo, se puede configurar de varias maneras.
Consulte la documentación para
make-backup-files
(usoC-h v make-backup-files
) y parabackup-by-coping
backup-by-coping-when-linked
backup-by-coping-when-mismatch
backup-by-coping-when-privileged-mismatch
fuente