cp는 소스와 동일한 이름을 가진 디렉토리에 심볼릭 링크된 디렉토리로 재귀합니다.

cp는 소스와 동일한 이름을 가진 디렉토리에 심볼릭 링크된 디렉토리로 재귀합니다.
cp -r src/* dest/

src/& dest/둘 모두에 디렉터리가 포함되어 있으면 foo내용이 src/foo/에 복사됩니다 dest/foo/. 이는 필수입니다.

dest/대신 다른 디렉토리에 대한 심볼릭 링크가 포함되어 있으면 foo -> /sym/foo명령에서 오류가 발생합니다.

cp: 디렉터리가 아닌 'dest/foo'를 'src/foo' 디렉터리로 덮어쓸 수 없습니다.

다음을 복사해도 되나요?표적GNU를 사용한 심볼릭 링크 cp? 내가 아는 한 다음 옵션에는 하나의 옵션( -L/ )만 있습니다.--dereference원천심볼릭 링크.

답변1

이 동작을 수행하려면 rsync' 옵션을 사용할 수 있습니다 .--keep-dirlinks

에서 man rsync (1):

-K, --keep-dirlinks

이 옵션을 사용하면 수신자는 디렉터리에 대한 심볼릭 링크를 실제 디렉터리로 처리하지만 보낸 사람의 실제 디렉터리와 일치하는 경우에만 해당됩니다. 이 옵션이 없으면 수신자의 심볼릭 링크가 제거되고 실제 디렉터리로 대체됩니다.

예를 들어 "file" 파일이 포함된 "foo" 디렉터리를 전송했지만 "foo"는 싱크의 "bar" 디렉터리에 대한 심볼릭 링크라고 가정해 보겠습니다. 그렇지 않은 경우 --keep-dirlinks수신자는 심볼릭 링크 "foo"를 삭제하고 이를 디렉터리로 다시 만든 다음 새 디렉터리에 파일을 받습니다. 를 사용하면 --keep-dirlinks수신자는 심볼릭 링크를 유지하고 "file"은 "bar"로 끝납니다.

예:

rsync -av --keep-dirlinks src/ dest

관련 정보