similitudes simbólicos simbolico qué links hay fisico entre enlaces enlace duros directorios diferencias crear carpeta archivo acceso macos hardlink

macos - simbolico - links simbólicos



¿Crear enlaces duros de directorio en MacOS X? (4)

En respuesta a la pregunta de the_undefined sobre cómo eliminar un enlace fijo a un directorio sin eliminar los contenidos de otros directorios a los que está vinculado: Por lo que puedo decir, no se puede hacer desde la línea de comandos utilizando comandos integrados. Sin embargo, este pequeño programa (inspirado en la publicación de Freeman) lo hará:

#include <unistd.h> #include <stdio.h> int main(int argc, char* argv[]) { if (argc != 2) { fprintf(stderr,"Use: hunlink <dir>/n"); return 1; } int ret = unlink(argv[1]); if (ret != 0) perror("unlink"); return ret; }

Para seguir con el ejemplo de Freeman,

$ gcc hunlink.c -o hunlink $ echo "foo bar" > child1/baz.txt $ ./hunlink parent/clone2

Eliminará el enlace fijo en parent / clone2, pero dejará el directorio child1 y el archivo child1 / baz.txt solo.

Esta pregunta ya tiene una respuesta aquí:

¿Cómo puedo crear un enlace fijo a un directorio en OSX?

Esta característica se ha agregado a su sistema de archivos en 10.5 (para la máquina del tiempo), pero no pude encontrar ninguna información sobre su uso desde la línea de comandos.


He incluido la respuesta sugerida en un representante de git si alguien está interesado: https://github.com/selkhateeb/hardlink

Una vez instalado, crea un enlace fijo con:

hln source destination

También noté que el comando de unlink no funciona en el leopardo de las nieves, por lo que agregué una opción para desvincularme:

hln -u destination

Para instalar Hardlink, use homebrew y ejecute:

brew install hardlink-osx


Otra solución es usar bindfs https://code.google.com/p/bindfs/ que se puede instalar a través del puerto:

sudo port install bindfs sudo bindfs ~/source_dir ~/target_dir


Desafortunadamente, Apple ha paralizado el comando ln . Puede usar el siguiente programa para crear un enlace fijo a un directorio:

#include <unistd.h> #include <stdio.h> int main(int argc, char* argv[]) { if (argc != 3) { fprintf(stderr,"Use: hlink <src_dir> <target_dir>/n"); return 1; } int ret = link(argv[1],argv[2]); if (ret != 0) perror("link"); return ret; }

Tenga en cuenta que los directorios vinculados no pueden estar en el mismo directorio principal, por lo que puede hacer esto:

$ gcc hlink.c -o hlink $ mkdir child1 $ mkdir parent $ ./hlink child1 parent/clone2