
심볼릭 링크가 포함된 폴더를 복사하고 대상 폴더에 심볼릭 링크를 유지하려면 어떻게 해야 합니까? 나는 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 * 대상/ )