rsync -p <args>
파일을 복사하는 데 사용하면 "디스크 할당량 초과(122)" 오류가 발생합니다.
rsync -rlptD --chown username:org1 -- local/ /project/org1/
파일과 디렉터리에서 소스 읽기 및 실행 비트를 유지하고 싶지만 대상이 g+s
디렉터리에 그룹 setuid를 갖도록 강제하고 싶습니다.
디렉토리가 필요한 이유는 g+s
새 파일이 프로젝트의 그룹 소유권을 상속하기 때문입니다. 내 환경에서는 /project/foo/
프로젝트 폴더의 파일(예:)이 내 개인 그룹(그룹 이름 == 사용자 이름)의 소유인 경우 할당량 오류가 발생합니다.
전체적으로 그룹을 사용하도록 --chown username:org1
강제하기 위해 rsync에 대한 주장을 제시했지만 그것만으로는 충분하지 않습니다. org1
rsync 앱에 user:group
소유권이 필요한 경쟁 조건이 있는 것 같습니다.뒤쪽에임시 파일의 이름은 최종 위치로 변경됩니다.
rsync 플래그를 제거하면 -p
오류 없이 전송할 수 있지만 소스의 권한 비트가 손실됩니다. 그렇지 않은 경우 -p
대상 폴더에서 rsync에 의해 생성된 모든 임시 파일은 루트 폴더에서 프로젝트 그룹을 올바르게 상속하고 하위 폴더는 setuid 그룹을 상속합니다.
rsync에 예약된 권한 마스크를 제공하는 방법이 있습니까? 소스에는 비트마스크 777이 필요하지만 g+s
원격 디렉터리에는 (무조건) 설정됩니다.
답변1
--chmod RULE[,RULE]*
이 옵션이 도움이 될 것이라고 생각합니다 .
~에서manrsync(1):
--chmod
이 옵션은 rsync가 전송 중인 파일의 권한에 하나 이상의 쉼표로 구분된 "chmod" 패턴을 적용하도록 지시합니다. 결과 값은 보낸 사람이 파일에 대해 제공한 권한으로 처리됩니다. 즉, --perms가 활성화되지 않은 경우 이 옵션은 기존 파일에 아무런 영향을 주지 않는 것으로 나타납니다.
--chmod Dg+s
원격 디렉터리에서 디렉터리에 setuid를 설정하도록 강제 해 보세요 .