Каков самый простой способ копирования символических ссылок на Mac?
Было бы предпочтительным решение python или perl, но любое решение было бы полезным.
Я копирую фреймворки для установочного пакета и нуждаюсь в поддерживаемых ссылках
Каков самый простой способ копирования символических ссылок на Mac?
Было бы предпочтительным решение python или perl, но любое решение было бы полезным.
Я копирую фреймворки для установочного пакета и нуждаюсь в поддерживаемых ссылках
Как отметил Дэвид, OS X отсутствует удобный вариант -a, который имеет gnu cp.
Однако, если вы используете -R для рекурсивной копии, тогда она будет копировать символические ссылки по умолчанию, поэтому
cp -R source destination
должен работать.
В python вы можете использовать os.readlink и os.symlink, чтобы выполнить это действие. Вы должны проверить, действительно ли то, что вы используете, на самом деле символическая ссылка с os.lstat и stat.S_ISLNK
import os, stat
if stat.S_ISLNK(os.lstat('foo').st_mode):
src = os.readlink('source')
os.symlink(src, 'destination')
Вы можете сделать это с помощью - R опции cp. Это работает, потому что cp по умолчанию не следует за символическими ссылками, но лает при копировании нефайлов без указания -R, что означает рекурсию.
cp -R source destination
В python, который будет с subprocess.call
from subprocess import call
call(['cp', '-R', 'source', 'destination'])
Обратите внимание, что a alias macosx не является символической ссылкой, и поэтому символическая ссылка на конкретное обращение не удастся на нем.
Решение @brian d foy было правильным. Новые версии macOS поддерживают
cp -a
Как вы отметили python, я предполагаю, что вы имеете в виду что-то вроде copytree (src, dst [, symlinks]). Реальные символические ссылки (созданные ln -s) будут скопированы как в любой системе unix. Но если вы создаете псевдоним с поисковым устройством, вы не получите символическую ссылку, а псевдоним. MacOS предлагает два типа ссылок: символические ссылки и псевдонимы типа unix (см. http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/Articles/Aliases.html). Эти псевдонимы не рассматриваются как ссылки по многим инструментам - ни копий, как я знаю.