
如何複製包含符號連結的資料夾並將符號連結保留在目標資料夾中?我正在用 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 * 目標/ )