디스코드 솔루션

CasaOS의 Syncthing은 파일을 동기화하지만 삭제하거나 수정할 수 없음

A CasaOS Syncthing user could sync data into Documents, Downloads, Gallery and Media, but remote edits and deletions repeatedly pushed the folders out of sync.

핵심 결론: Syncthing이 폴더를 읽을 수는 있지만 삭제 또는 수정 사항을 전파하지 못한다면 Syncthing 컨테이너 내부에서 쓰기 권한을 테스트하세요. 읽을 수 있는 바인드 마운트라고 해서 자동으로 쓸 수 있는 것은 아닙니다.

먼저 폴더 모드 확인

양방향 폴더는 변경 사항을 수신하는 데 적합한 Syncthing 폴더 모드를 사용해야 합니다. Send Only는 Send & Receive처럼 작동하지 않습니다.

컨테이너가 쓸 수 있음을 확인

docker exec -it syncthing sh
touch /DATA/Gallery/.write-test
rm /DATA/Gallery/.write-test

명령 중 하나라도 실패하면 Syncthing 설정을 변경하기 전에 저장소 권한을 수정하세요.

한 폴더는 실패하고 인접한 폴더는 작동하는 모습을 보여 주는 CasaOS Syncthing 폴더 오류 스크린샷
한 폴더만 실패하고 인접한 폴더는 작동한다면 정확한 경로와 소유권을 비교하세요.
Syncthing 폴더 매핑 비교에 사용된 CasaOS 저장소 경로 스크린샷
마운트 경로를 비교할 때 정상 작동하는 폴더를 기준으로 사용하세요.

PUID 및 PGID 일치시키기

공식 CasaOS Syncthing compose는 PUID/PGID를 전달하고 /DATA를 컨테이너에 바인드합니다. LinuxServer는 호스트 볼륨의 PUID/PGID 소유권을 설명합니다.

docker exec syncthing id
stat -c '%u:%g %a %n' /DATA/Gallery

숫자로 된 ID를 비교하세요. 컨테이너가 다른 UID/GID로 실행된다면 소유자를 사용자 이름으로 변경하는 것만으로는 충분하지 않습니다.

삭제에는 상위 디렉터리 권한이 필요합니다

파일을 삭제하거나 이름을 변경하려면 상위 디렉터리에 쓰기 및 실행 권한이 필요합니다. 따라서 읽기/동기화는 부분적으로 작동하는 것처럼 보이지만 원격 삭제는 실패할 수 있습니다.

Syncthing 문제 해결을 위해 강조 표시한 CasaOS 애플리케이션 로그 위치
로그를 직접적인 파일 시스템 테스트와 함께 사용하세요.
CasaOS 호스트에서 원격 장치가 파일을 수정한 후 Syncthing에 동기화되지 않는 상태가 발생함
원격 편집 후 동기화되지 않는 상태라면 수신 측의 쓰기 경로를 확인하세요.

정상 작동하는 폴더 비교

비교 docker inspect syncthing 마운트, stat mode/UID/GID, ACL 확인 getfacl, 파일 시스템 읽기 전용 상태 및 무시 패턴. 다음으로 넘어가지 마세요 chmod 777.

CasaOS Syncthing 설정은 깔끔한 기준 구성을 제공합니다. ZimaOS 앱 플랫폼에서는 대안을 비교할 수 있으며, ZimaCube 2는 여러 드라이브를 사용하는 스토리지 작업에 적합합니다.

Unix 모드 비트가 올바르게 보일 때 ACL 확인

기존 방식 chmod 출력은 정상으로 보이더라도 ACL이 유효 권한을 변경할 수 있습니다. 정상 작동하는 디렉터리와 실패하는 디렉터리를 비교하세요.

getfacl /DATA/Gallery
getfacl /DATA/Documents

한 경로에 추가 ACL 항목이 있다면 모든 곳의 권한을 재귀적으로 개방하기보다 해당 항목을 의도적으로 수정하세요.

파일 시스템이 읽기 전용인지 확인

findmnt -no TARGET,SOURCE,FSTYPE,OPTIONS /DATA/Gallery

디스크가 마운트된 상태 ro, 파일 시스템 오류나 성능이 저하된 외장 드라이브도 동일한 “읽을 수는 있지만 변경할 수 없음” 증상을 일으킬 수 있습니다. 마운트 자체가 읽기 전용이라면 Syncthing 설정을 변경해도 해결할 수 없습니다.

“동기화되지 않음” 뒤에 있는 Syncthing 오류 읽기

Syncthing 웹 UI를 열어 폴더 오류를 확인한 다음 컨테이너 로그와 비교하세요.

docker logs --tail 200 syncthing

다음을 확인하세요 권한 거부, 작업이 허용되지 않음, 경로를 찾을 수 없음 오류 또는 이름 변경/삭제 작업 실패가 발생할 수 있습니다. “동기화되지 않음”은 상태일 뿐이며, 로그에는 대개 하위 수준의 파일 시스템 원인이 포함되어 있습니다.

Ignore Permissions를 만능 해결책으로 사용하지 마세요

권한 메타데이터 무시는 두 파일 시스템이 Unix 모드 비트를 서로 다르게 표현할 때 도움이 될 수 있지만, 프로세스에 쓰기 권한을 부여하지는 않습니다. 컨테이너가 테스트 파일을 삭제할 수 없다면 Syncthing의 권한 메타데이터 동작을 변경해도 호스트 디렉터리를 쓰기 가능하게 만들 수 없습니다.

제어된 쓰기 테스트 사용

작고 일회용인 디렉터리를 만들고 Syncthing에 매핑한 다음, 두 장치에서 생성 → 편집 → 이름 변경 → 삭제를 확인하세요. 정상적으로 작동하면 실제 폴더에도 동일한 소유권과 마운트 패턴을 적용하세요. 이렇게 하면 복잡한 기존 디렉터리 트리에서 동기화 동작을 분리할 수 있습니다.

FAQ

Syncthing은 추가할 수 있는데 삭제할 수 없는 이유는 무엇인가요?

상위 디렉터리 권한으로 읽기는 허용하면서 이름 변경이나 삭제 작업은 차단할 수 있습니다.

chmod 777을 사용해야 하나요?

아니요. 먼저 실패 경로와 컨테이너 ID를 입증하세요.