심볼릭 링크를 사용하여 폴더 복사

심볼릭 링크를 사용하여 폴더 복사

심볼릭 링크가 포함된 폴더를 복사하고 대상 폴더에 심볼릭 링크를 유지하는 방법은 무엇입니까? 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 * 대상/)

관련 정보