
Como posso copiar uma pasta que contém links simbólicos e reter os links simbólicos na pasta de destino? Estou fazendo algo assim com PHP/Bash:
system("cp -r production-clone-target production-sites/{$instanceName}");
mas os links simbólicos não aparecem na pasta de destino.
Responder1
Tente adicionar a --preserve=links
opção ao seu cp
comando.
De man cp
:
--preserve[=ATTR_LIST]
preserve the specified attributes (default: mode,ownership,timestamps),
if possible additional attributes: context, links,xattr, all
Editar: se estiver no OS X; usar cp -a
.
Responder2
Você também pode usar o rsync:
-l, --links copy symlinks as symlinks
Eu gosto -a
, que também inclui este, de copiar também subdiretórios, etc.
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
Então, no seu exemplo de código você poderia fazer isso:
system("rsync -a production-clone-target production-sites/{$instanceName}");
Responder3
Deixando de lado as preocupações válidas sobre o uso system()
em seu programa PHP:
cp
pode não ter opções padronizadas para fazer isso que são comuns ao Linux e aos BSDs, mas pax
tem.
( fonte do cd && pax -pp -r -w * destino/ )