여러 클라이언트 간에 파일을 동기화하기 위해 Unison을 사용하고 있습니다. 각 클라이언트는 동일합니다. 즉, 한 클라이언트가 파일을 업데이트할 때마다 다른 모든 클라이언트도 이를 업데이트해야 함을 의미합니다.
파일은 중앙 집중식 클라우드 서버에 저장됩니다. 각 클라이언트는 루트가 아닌 SSH를 통해 중앙 집중식 클라우드 서버에 액세스할 수 있습니다. 클라이언트 사이에는 링크가 없습니다.
파일의 소유권을 유지하는 것이 중요합니다. 이러한 이유로 저는 --rsync-path="rsync --fake-super"
아래를 사용합니다. 이렇게 하면 확장된 파일 속성에 소유자/그룹이 저장되므로 후속 동기화 중에 클라이언트에서 소유권을 복원할 수 있습니다. 하지만 소유권을 유지하는 더 좋은 방법이 있다면 알려 주시기 바랍니다. 그렇게 하면 아래 문제가 해결될 수도 있습니다.
구성의 관련 조각은 다음과 같습니다.
copythreshold = 0
copyprog = /usr/bin/rsync -avzX --rsync-path="rsync --fake-super" --inplace -e ssh
copyprogrest = /usr/bin/rsync -avzX --rsync-path="rsync --fake-super" --inplace --partial -e ssh
나는 다음과 같은 행동을 관찰했습니다.
파일이 있을 때만들어진
copyprog
, 파일 전송을 위해 rsync에서 구성됩니다 .user.rsync.%stat
이제 새로 생성된 파일에 클라우드 서버에 속성 집합(소유자/그룹 포함)이 있으므로 이는 매우 좋습니다 . 다른 클라이언트의 지속적인 동기화는 소유권을 유지합니다.그러나 파일이고쳐 쓰다
copyprog
, 에서 구성된 rsync를 사용하지 않습니다. 나는 Unison이 사용자 정의 내장 전송 논리를 수행한다고 믿습니다.user.rsync.%stat
이제 클라우드 서버에서 속성이 손실되므로 이는 좋지 않습니다 . 이제 다른 클라이언트의 지속적인 동기화는 소유권을 잃습니다.
copyprog
업데이트에도 항상 사용되도록 Unison을 구성할 수 있나요 ? 문서에는 다음이 언급되어 있습니다.
copythreshold가 0으로 설정되면 Unison은 모든 작업에 외부 복사 유틸리티를 사용합니다.전체 파일옮기다.
아쉽게도 업데이트에 대한 언급은 없습니다.