在Mac上复制符号链接的最简单方法是什么?
最好使用Python或Perl解决方案,但任何解决方案都会有所帮助。
我正在为一个安装包复制框架,并需要保持链接。
在Mac上复制符号链接的最简单方法是什么?
最好使用Python或Perl解决方案,但任何解决方案都会有所帮助。
我正在为一个安装包复制框架,并需要保持链接。
正如 David 所提到的,OS X 缺少 gnu cp 中有用的 -a 选项。
但是,如果您使用 -R 进行递归复制,则默认情况下它将复制符号链接,因此
cp -R source destination
应该正常工作。
@brian d foy 的解决方案曾经是正确的。较新版本的 macOS 确实支持。
cp -a
cp -a
不会保留硬链接,只能保留符号链接。 - mscimport os, stat
if stat.S_ISLNK(os.lstat('foo').st_mode):
src = os.readlink('source')
os.symlink(src, 'destination')
cp -R source destination
from subprocess import call
call(['cp', '-R', 'source', 'destination'])
由于你标记了Python,我假设你的意思是类似于copytree(src, dst[, symlinks])。在任何Unix系统上,真正的符号链接(通过ln -s创建)将被复制。但是如果你使用Finder创建别名,你得到的不是一个符号链接,而是一个别名。MacOS提供了两种链接类型:Unix类型符号链接和别名(参见http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/Articles/Aliases.html)。许多工具都不会将这些别名视为链接,包括我所知道的copytree。