who texto para mac lineas hacer for entrar ejemplos ejecutar directorios directorio crear como comandos comando basicos archivos archivo macos bash filesystems unix ln

macos - texto - ¿Cuál es el comando de Unix para crear un enlace fijo a un directorio en OS X?



lineas de comando linux (13)

Del artículo vinculado a, obtendrá ese error si intenta crear el enlace fijo en el mismo directorio que el original. Tienes que crearlo en otro lado.

¿Cómo se crea un enlace fijo (a diferencia de un enlace simbólico o un alias de Mac OS) en OS X que apunta a un directorio? Ya conozco el comando "En el destino de destino", pero eso solo funciona cuando el objetivo es un archivo. Sé que el sistema operativo Mac, a diferencia de otros entornos Unix, permite enlaces rígidos a las carpetas (esto se utiliza para Time Machine, por ejemplo), pero no sé cómo hacerlo yo mismo.


Disparate. El 10.5, te dice en la página man para ln :

-d, -F, --directory allow the superuser to attempt to hard link directories (note: will probably fail due to system restrictions, even for the superuser)

Entonces sí:

sudo ln -d existing_dir new_hard_link

Dale tu contraseña y aún no has terminado . Usted no lo documentó, ¿verdad? Debe documentar directorios vinculados duros; incluso si es una máquina de un solo usuario.

Eliminar es una historia diferente: si lo hace de la manera habitual para eliminar directorios, eliminará los contenidos. Entonces debes "desvincular" el directorio:

unlink new_hard_link

Ahí. ¡Espero que no arruines tu sistema de archivos!


En Linux puede usar bind mount para simular directorios de enlaces duros. No estoy seguro acerca de OSX

sudo mount --bind /some/existing_real_contents /else/dummy_but_existing_directory sudo umount /else/dummy_but_existing_directory


Esto también se puede hacer con Perl incorporado (desde Terminal) sin compilar nada. Mi caso de uso específico es para Google Drive (que no admite enlaces simbólicos), por lo que los ejemplos a continuación reflejan el caso de uso.

Para vincular la carpeta "Documentos" a Google Drive para que se sincronice:

perl -e ''link "/Users/me/Documents", "/Users/me/Google Drive/Documents"''

Para eliminar el enlace a su carpeta "Documentos" de Google Drive:

sudo perl -U -e ''unlink "/Users/me/Google Drive/Documents"''

Necesita "raíz" para desvincular (consulte "desvincular" perldoc).


Estoy de acuerdo con que las carpetas / directorios con enlaces duros pueden causar problemas si no se tienen cuidados, pero tienen una ventaja muy definitiva: Time Machine es un ejemplo perfecto. Sin ellos, simplemente no sería práctico ya que la duplicación de versiones redundantes de archivos consumiría muy rápidamente incluso el disco más grande.

Snow Leopard puede crear enlaces duros a directorios siempre que sigas las seis reglas de Amit Singh:

  1. El sistema de archivos se debe registrar HFS + por diario.
  2. Los directorios principales de la fuente y el destino deben ser diferentes.
  3. El padre de la fuente no debe ser el directorio raíz.
  4. El destino no debe estar en el directorio raíz.
  5. El destino no debe ser un descendiente de la fuente.
  6. El destino no debe tener ningún ancestro que sea un enlace fijo de directorio.

Por lo tanto, no es correcto que Snow Leopard haya perdido la capacidad de crear enlaces duros a carpetas.

Acabo de verificar que el enlace / desvinculación funcione en Snow Leopard, siempre y cuando siga las seis reglas. Lo probé y funciona bien en mi sistema Snow Leopard 10.6.6. Lo probé en el volumen de arranque y en un volumen externo USB separado y funcionó bien en ambos casos.

Aquí está el programa "hunlink.c":

#include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { if (argc != 2) return 1; int ret = unlink(argv[1]); if (ret != 0) perror("unlink"); return ret; } gcc -o hunlink hunlink.c

Por lo tanto, ten cuidado si lo intentas. Recuerda seguir las reglas y usa hlink para crear estos enlaces duros y utiliza hunlink para eliminar el enlace duro después. Y no olvide documentar lo que ha hecho para más adelante o para otra persona que pueda necesitar saber esto.

Otro "gotcha" que acabo de aprender sobre estos "enlaces duros" a las carpetas. Cuando los creas, hay mucho que sucede "detrás de la cortina" de Mac OS X. Un problema realmente importante es que la carpeta a la que creas el enlace se mueve realmente a una carpeta súper oculta súper mágica llamada /.HFS+ Datos de directorio privado% 000d / dir_xxx donde xxx es el número de inodo de "carpeta_origen": recuerde que el formato del comando es

hlink source_folder target_folder

Así que debido a esto, debes tener cuidado de no tener ningún archivo abierto en la carpeta "source_folder" porque si lo haces, simplemente se mueven a la carpeta supermágica y es probable que tengas un problema si intentas guardar cualquier cambio a esos archivos que estaban abiertos en la "carpeta_origen". Esto me pasó un par de veces hasta que caí en la cuenta de lo que estaba sucediendo y la solución es bastante simple. Noté que no podías hacer un comando "ls -la" por más tiempo sin obtener errores graciosos para todas las carpetas / directorios que estaban en la "carpeta_origen original", pero podías hacer un comando "ls" y todos se veían bien.

Si ejecuta "Verificar disco" en el programa "Utilidad de disco", notará que probablemente se queje y le da un "Mapa de bits de volumen que necesita reparación menor para bloques huérfanos", que es lo que acaba de suceder con la creación de la carpeta supermágica y el movimiento de la "carpeta_fuente" a ella.

Si se encuentra en esta situación con "bloques huérfanos", primero guarde los archivos modificados en alguna otra ubicación temporal que no esté en el volumen que contiene el árbol "carpeta_fuente", luego use "Utilidad de disco" para desmontar y volver a montar el volumen que contiene "source_folder" o simplemente reinicia la computadora. Luego, copie los archivos que guardó en las ubicaciones temporales de nuevo en sus ubicaciones originales y debe volver a estar en el negocio. Esto es lo que funcionó para mí, por lo que no puedo garantizar que esto también funcione para usted. Así que podría ser una buena idea probar esto en un volumen que tenga una buena copia de seguridad por si acaso.

Parece muy raro que toda esta sobrecarga ocurra solo por la simple tarea de crear un enlace fijo a una carpeta. ¿Alguien tiene alguna idea de por qué Mac OS X hace todo este esfuerzo para crear este enlace rígido en las carpetas? ¿Tiene algo que ver con el hecho de que este es un sistema de archivos "diario"?

Descubrí la información sobre la ubicación supermágica y supercubierta leyendo la explicación de Amit Singh de su utilidad "hfsdebug". Si desea obtener más información, consulte su sitio web en la utilidad hfsdebug de Amit Singh . Es una pieza de software muy interesante y le dirá muchos detalles sobre los sistemas de archivos HFS +. Es gratis y te animo a que lo descargues y lo pruebes. Ya no es compatible, pero funciona tanto en Snow Leopard como en Leopard, básicamente cualquier sistema compatible con HFS +. No se puede hacer ningún daño con él, ya que es una herramienta de "solo lectura", por lo que es genial usarlo para ver algunos detalles del sistema de archivos.

Un problema más acerca de estos "enlaces duros a las carpetas": una vez que se crea uno y se crea la carpeta supermágica supersecreta oculta, está ahí para siempre. Incluso si desenlaza la carpeta que provocó que se cree en primer lugar, esta carpeta mágica se queda. No estoy seguro por qué, pero definitivamente sí. Puede usar "hfsdebug" para averiguar esto si desea probarlo. También puede usar "hfsdebug" para averiguar cuántos de estos "enlaces duros a carpetas" existen en una unidad. Para estos detalles, consulte el artículo de Amit sobre la utilidad "hfsdebug".

También tiene otra utilidad más nueva que es compatible pero cuesta. Se llama fileXray y cuesta $ 79 para una persona en cualquier cantidad de computadoras en el mismo hogar para una licencia personal de tipo no comercial. Tiene una extensa Guía del usuario de 173 páginas que puede descargar para ver qué puede hacer antes de comprar. Desafortunadamente no hay una versión de prueba, así que lea el manual y revise el sitio web para obtener más detalles para ver si puede ayudarlo a salir de un aprieto. Conozca todos los detalles al respecto en su sitio web; consulte el sitio web fileXray para obtener más información.

Hay un par de cuestiones que debe tener en cuenta al usar estos enlaces duros a las carpetas. Si el volumen en el que se crearon está montado en un cliente remoto, puede haber problemas importantes, dependiendo de cómo estén montados. Si usa AFP para montar el volumen en un cliente remoto, hay grandes problemas ya que cualquier carpeta que actualmente tenga un enlace rígido o que alguna vez haya tenido una pero que luego se elimine, no podrá ser utilizada como todas las carpetas de nivel inferior ( pero no archivos) serán inaccesibles desde el Finder o una ventana de Terminal. Si intenta hacer un simple comando "ls -lR", fallará y le dará los mensajes de error "ls: xxx: No existe tal archivo o directorio" para todas las carpetas de nivel inferior. Si utiliza una ventana del Buscador para recorrer el árbol de directorios del volumen remoto, las carpetas que están en la carpeta que tenía o tiene un enlace fijo simplemente desaparecerán sin ningún error cuando haga clic por primera vez en el nombre de la carpeta.

Estos problemas no parecen ocurrir (a excepción del mensaje de error) si usa NFS para montar el cliente remoto (y suponiendo que tiene un servidor NFS en el sistema que tiene el volumen como un sistema de archivos local HFS +). Los detalles sobre cómo utilizar NFS para montar volúmenes no se proporcionan aquí. Usé un buen programa del Dr. Marcel Bresink llamado "NFS Manager" para ayudar con los montajes NFS en el servidor y el cliente. Puede obtenerlo desde su sitio web: simplemente busque "Bresink NFS Manager" en su motor de búsqueda favorito, pero tiene una versión de prueba gratuita para que pueda probar antes de comprar. No es tan importante si quieres aprender a montar NFS, pero el "Administrador de NFS" hace que sea más fácil configurar las cosas y ajustar todas las configuraciones para ayudar a optimizarlo. También tiene otras utilidades ordenadas de Mac OS X que tienen un precio muy razonable: una llamada "Monitor de Hardware" que le permite monitorear y graficar todo tipo de cosas como el uso de energía, la temperatura de la CPU, la velocidad de los ventiladores y muchas otras variables para ambos los sistemas Mac locales y remotos durante largos períodos de tiempo (de minutos a días). Definitivamente vale la pena echarle un vistazo si está en útiles utilidades.

Una cosa que noté es que las transferencias de archivos NFS fueron aproximadamente un 20% más lentas que hacerlo a través de AFP, pero su "kilometraje puede variar", por lo que no hay garantías de una manera u otra, pero preferiría tener algo que funcione incluso si tengo pagar un 20% de acierto de rendimiento en comparación con no tener nada de trabajo en absoluto.

Apple es consciente de los problemas con los enlaces duros y los sistemas remotos de archivos AFP, y se refieren a esto como una "limitación de implementación" del cliente AFP. Prefiero llamarlo como realmente me parece: ¡¡UN ERROR !!! Solo espero que el próximo lanzamiento de Mac OS X resuelva el problema, ya que realmente me gusta tener la capacidad de usar enlaces duros a las carpetas cuando tenga sentido.

Estas notas son mi opinión personal y no hago ninguna garantía sobre su corrección, así que úsalas bajo tu propio riesgo. Haga una buena copia de seguridad antes de jugar con estos "enlaces duros a las carpetas" en caso de que ocurra algo imprevisto. Pero espero que te diviertas si decides mirar un poco más en este interesante aspecto de Mac OS X.


La respuesta corta es que no puedes. :) (excepto posiblemente como raíz, cuando sería más exacto decir que no debería).

Los Unix solo permiten un número determinado de enlaces a directorios: "..." desde todos sus elementos secundarios y "." desde dentro de si mismo Cualquier otra cosa es potencialmente una receta para un árbol de directorios muy confuso. Esta es / fue aparentemente una decisión de diseño de Ken Thompson.

(Dicho esto, al parecer, Time Machine de Apple hace esto :))


La versión OSX de ln no puede hacerlo, pero, como se menciona en la otra respuesta por rich , es posible con la versión GNU de ln que está disponible en homebrew como gln como parte de la fórmula coreutils . man gln enumera la opción -d con la advertencia específica de OSX proporcionada en la respuesta de rich . En otras palabras, no funciona en todos los casos. Lo que determina exactamente si funciona o no no parece estar documentado en ninguna parte.

Como prerrequisito, instale coreutils :

brew install coreutils

Ahora puedes hacer:

sudo gln -d /original_folder /mirror_folder

IMPORTANTE : para eliminar el enlace duro, debes utilizar gunlink :

sudo gunlink /mirror_folder

El uso de rm o Finder también eliminará la carpeta original.

FYI: La fórmula coreutils homebrew proporciona las versiones compatibles con GNU de las herramientas genéricas de Unix. Use brew list coreutils para ver la lista completa.


Mi caso fue que descubrí que, desde una máquina virtual de Windows, no puedo seguir los enlaces simbólicos. (quería probar algunas páginas HTML en Internet Explorer). Y mi estructura de directorios tenía enlaces simbólicos para CSS y carpetas de imágenes.

Mi solución para resolver el problema fue un enfoque diferente de las otras respuestas implícitas. rsync para crear una copia de la carpeta. Rsync puede resolver los enlaces simbólicos y copiar los archivos vinculados en lugar.

Esto resolvió mi problema sin usar enlaces duros a directorios. Y en realidad es una solución fácil si solo estás trabajando en un pequeño conjunto de archivos.

rsync -av --copy-dirlinks --delete ../htmlguide ~/src/


No puedes hacerlo directamente en BASH entonces. Sin embargo ... Encontré un artículo aquí que trata sobre cómo hacerlo de forma indirecta: http://www.mactech.com/articles/mactech/Vol.23/23.11/ExploringLeopardwithDTrace/index.html compilando un pequeño programa C simple:

#include <unistd.h> #include <stdio.h> int main(int argc, char *argv[]) { if (argc != 3) return 1; int ret = link(argv[1], argv[2]); if (ret != 0) perror("link"); return ret; }

... y compilar en Terminal.app con:

$ gcc -o hlink hlink.c -Wall


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


Sí, es compatible con el kernel y el sistema de archivos, pero dado que no está destinado para uso general, no está expuesto al shell.

Probablemente puedas averiguar qué API utiliza Time Machine y envolverlas en una herramienta de línea de comandos, pero sería mejor tomar la pista y la dirección bien claras.


en caso de que no haya una subcarpeta, puedes intentar

En folder_path / * . * target_folder

funcionó para mí en OSX 10.9


Publicación cruzada de esta gran herramienta que resuelve perfectamente el problema, originalmente publicado por Sam :

Para instalar Hardlink, asegúrese de haber instalado homebrew , luego ejecute:

brew install hardlink-osx

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

El código está disponible en Github para quienes estén interesados: https://github.com/selkhateeb/hardlink