シンボリックリンクを使用したフォルダのコピー

シンボリックリンクを使用したフォルダのコピー

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

関連情報