![심볼릭 링크를 사용하여 폴더 복사](https://linux55.com/image/96926/%EC%8B%AC%EB%B3%BC%EB%A6%AD%20%EB%A7%81%ED%81%AC%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8F%B4%EB%8D%94%20%EB%B3%B5%EC%82%AC.png)
심볼릭 링크가 포함된 폴더를 복사하고 대상 폴더에 심볼릭 링크를 유지하는 방법은 무엇입니까? 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 * 대상/)