Копировать папку с символическими ссылками

Копировать папку с символическими ссылками

Как скопировать папку, содержащую символические ссылки, и сохранить символические ссылки в папке назначения? Я делаю что-то вроде этого с помощью 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 * назначение/ )

Связанный контент