rsync를 루트로 실행하지만 대상 소유자는 유지합니다.

rsync를 루트로 실행하지만 대상 소유자는 유지합니다.

이 주제에 대한 많은 스레드를 확인하고 다양한 플래그 조합을 시도했지만 문제를 해결할 수 없습니다.

시나리오: 저는 사용자 A로 작업하고 소스 파일은 A가 소유하고 대상 파일은 사용자 B가 소유합니다. sudo에서 rsync를 사용하여 소스 파일을 대상에 복사하고 대상 파일이 계속 소유되기를 바랍니다. 복사 후 B로.

sudo rsync -ar src/ dst/

결과:A:A

sudo rsync -ar --no-o src/ dst/

결과: ( B:A파일 내용이 동일한 경우) 또는 root:A(파일 내용이 다른 경우)

B:B대상 파일을 보존하는 방법은 무엇입니까 ?

예를 들어 단순성이 sudo cp -r src/ dst/이를 수행할 수 있습니다.

답변1

사용--chown=B:B

rsync매뉴얼 에서 :

--chown=USER:GROUP

USER이 옵션을 사용하면 모든 파일을 그룹 이 소유하게 됩니다 GROUP. [...] 또는가 비어 있으면 USER생략 GROUP 된 사용자/그룹 매핑이 발생하지 않습니다. 비어 있는 경우 GROUP후행 콜론을 생략할 수 있지만, USER 비어 있는 경우 선행 콜론을 제공해야 합니다. [...]

대상 측에서 기존 파일의 소유권을 유지하려는 경우 가장 쉬운 방법은 두 가지를 모두 사용한 --no-group다음 --no-user루트가 소유한 모든 항목을 다른 사용자가 소유하도록 대상 파일과 디렉터리를 사후 처리하는 것입니다.

이 작업은 다음을 통해 수행할 수 있습니다.

rsync -a --no-group --no-user src/ dst

(참고/ -r암시), 그러면-a--archive

find dst -user  root -exec chown B {} +
find dst -group root -exec chgrp B {} +

dst그러면 루트 사용자나 그룹이 소유한 모든 항목을 찾고(이 파일은 rsync대상 위치에 추가된 새 파일이 됩니다) 해당 파일의 소유자와 그룹을 로 변경합니다 B.

관련 정보