versiones sistemas operativos mojave mac historia hay escobar desafio cuántas osx

osx - sistemas - Copia de enlaces simbólicos en Mac OS X



sistemas operativos mac versiones (4)

¿Cuál es la forma más simple de copiar enlaces simbólicos en la Mac?

Sería preferible una solución python o perl, pero cualquier solución sería de ayuda.

Copio marcos para un paquete de instalación y necesito que se mantengan los enlaces


Como etiquetó a Python, supongo que quiere decir algo como copytree (src, dst [, symlinks]). Los enlaces simbólicos reales (creados por ln -s) se copiarán como en cualquier sistema Unix. Pero si crea un alias con el buscador, no obtendrá un enlace simbólico, sino un alias. MacOS ofrece dos tipos de enlaces: enlaces simbólicos y alias de tipo de Unix (consulte http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/Articles/Aliases.html ). Estos alias no son tratados como enlaces por muchas herramientas, ni copytree, como sé.


Como mencionó David, a OS X le falta la práctica, una opción que tiene gnu cp.

Sin embargo, si usa -R para hacer una copia recursiva, entonces copiará enlaces simbólicos por defecto, por lo que

cp -R source destination

debería funcionar


En python puede usar os.readlink y os.symlink para realizar esta acción. Debería verificar si lo que opera es en realidad un enlace simbólico con os.lstat y stat.S_ISLNK

import os, stat if stat.S_ISLNK(os.lstat(''foo'').st_mode): src = os.readlink(''source'') os.symlink(src, ''destination'')

Podrías hacerlo con la opción -R de cp . Esto funciona porque cp de forma predeterminada no sigue los enlaces simbólicos, pero ladra al copiar no archivos sin especificar -R, lo que significa recursividad.

cp -R source destination

En python eso sería con el subproceso.llamado

from subprocess import call call([''cp'', ''-R'', ''source'', ''destination''])

Tenga en cuenta que un alias macosx no es un enlace simbólico y, por lo tanto, el tratamiento específico del enlace simbólico fallará en él.


La solución de @brian d foy solía ser correcta. Las versiones más nuevas de macOS son compatibles

cp -a