如何复制包含符号链接的文件夹并将符号链接保留在目标文件夹中?我正在用 PHP/Bash 做这样的事情:
system("cp -r production-clone-target production-sites/{$instanceName}");
但符号链接不会出现在目标文件夹中。
答案1
尝试将--preserve=links
开关添加到您的cp
命令中。
从man cp
:
--preserve[=ATTR_LIST]
preserve the specified attributes (default: mode,ownership,timestamps),
if possible additional attributes: context, links,xattr, all
编辑:如果在 OS X 下;使用cp -a
。
答案2
您还可以使用 rsync:
-l, --links copy symlinks as symlinks
我喜欢-a
复制子目录等,其中也包括这个。
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
因此,在您的代码示例中,您可以这样做:
system("rsync -a production-clone-target production-sites/{$instanceName}");
答案3
system()
抛开有关在 PHP 程序中使用的合理担忧:
cp
可能没有 Linux 和 BSD 通用的标准化选项来执行此操作,但pax
确实有。
( cd 源 && pax -pp -r -w * 目标/ )