シンボリックリンクを含むフォルダをコピーし、ターゲットフォルダにシンボリックリンクを維持する方法は? 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 *ターゲット/)