fstab에서 확장 파일 속성이 활성화된 ext4에 Debian과 Ubuntu라는 두 대의 컴퓨터가 있습니다. getfattr 및 setfattr은 두 시스템 모두에 로컬로 설치되어 완벽하게 실행됩니다. 그러나 unison(버전 2.40.102)은 기본적으로 확장 파일 속성을 동기화하지 않습니다.
구글링해서 찾았어요이것확장된 특성 동기화를 활성화해야 하는 프로필 설정이 포함된 블로그 게시물입니다. 그래서 프로필을 변경했는데 지금은 다음과 같습니다.
root=/path/to/dir
root=ssh://[email protected]//path/to/dir2
auto=true
batch=true
perms=0
rsync=true
maxthreads=1
retry=3
confirmbigdeletes=false
copythreshold=0
copyprog = rsync -aX --rsh='ssh -p 22' --inplace --compress
copyprogrest = rsync -aX --rsh='ssh -p 22' --partial --inplace --compress
copyquoterem = true
copymax = 1
이 프로필은 새 파일의 확장 속성을 동기화하지만 이미 동기화된 파일의 확장 속성을 변경하고 일관되게 수행하면 다음과 같은 결과가 나타납니다.
Nothing to do: replicas have not changed since last sync.
다른 모든 것은 완벽하게 동기화되지만 일관성은 확장 속성의 변경 사항을 인식하지 못합니다. 또한 파일을 더 자세히 검사할 수 있기를 바라면서 fastcheck를 비활성화해 보았습니다. 한 방향으로 rsync를 시도했는데 완벽하게 작동했습니다. 하지만 양방향 동기화가 필요하므로 일관성만 유지할 수 있습니다.
공식 매뉴얼을 쭉 봤는데, 지나가다 확장 파일 속성만 언급되어 있습니다. 그래서 제 질문은 이렇습니다. 이 작업을 일관되게 수행할 수 있습니까? 여기서 간단한 것을 놓치고 있습니까? 또는 이를 달성할 수 있는 다른 오픈 소스 도구가 있습니까? (저는 bsync와 bitpocket에 대해 알고 있지만 예비 테스트에서는 확장 파일 속성의 변경 사항도 발견하지 못했습니다.)
답변1
나중에 나와 같은 문제가 발생하는 경우를 대비해 unison은 확장 파일 속성에서 작동하지 않습니다. 이를 해결하는 한 가지 방법은 copyprog + copythreshold=0 해킹(원래 질문의 구성 파일 참조)이지만 xattr의 변경 사항을 지속적으로 인식하지 못하는 문제는 해결되지 않습니다. 댓글 중 하나에서 언급했듯이 파일 수정 시간을 변경해도 수정된 xattr이 일관되게 동기화되지 않습니다. 그뿐만 아니라 심지어삭제다음에 파일 내용이 변경될 때.
양방향 동기화를 위해 확장된 파일 속성을 사용할 수 있는 유일한 방법은 다음을 사용하는 것입니다.동기화, rsync 매개변수에 -X 플래그를 추가하고 파일 수정 시간을 변경하여 변경하세요.
이는 파일 수정 시간 변경, Windows 지원 없음, Python 3 종속성, 마지막 커밋이 작년인 등 이상적인 솔루션과는 거리가 멀지만 제가 찾은 이 작업을 수행할 수 있는 유일한 소프트웨어입니다.
답변2
아마도 매뉴얼에서 본 내용일 것입니다.2.27 이후 변경 사항그것은 말한다
파일이 변경되지 않은 경우에도 Unison이 파일 전송에 실패하여 "동기화 중에 대상이 업데이트되었습니다"라는 도움이 되지 않는 메시지가 표시되는 경우가 있습니다. 절차 변경으로 인한 것일 수도 있습니다.파일 확장 속성수정 시간을 변경하지 않고. 최선의 해결책이 무엇인지는 불분명합니다. Unison의 잘못은 아니지만 Unison의 행동을 당혹스럽게 만듭니다.
그래서 Unison은 주로 파일 수정 시점에만 초점을 맞추고 그 외에는 아무 것도 없는 것 같습니다. 내가 시도한 해결 방법은 확장 속성이 변경되자마자 파일의 수정 시간을 업데이트하는 것이었습니다. 그러면 Unison이 변경 사항을 인식하고 파일을 동기화하게 됩니다. 그러나 이것이 가능한지 여부는 확장 속성을 변경하는 방법에 따라 달라집니다.
inotifytools
파일 확장자 속성의 변화를 감지하기 위해 무언가를 사용하는 것이 가능하다고 생각합니다 . inotifytoos
Unison이 동기화할 모든 파일을 모니터링 하는 스크립트를 작성한 다음 touch
변경 사항이 감지되면 파일을 모니터링할 수 있습니다.