이 주제에 대한 많은 스레드를 확인하고 다양한 플래그 조합을 시도했지만 문제를 해결할 수 없습니다.
시나리오: 저는 사용자 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
.