Syncthing

Syncthing은 피어 투 피어 파일 동기화 유틸리티로, 근거리 통신망 상의 장치 간 또는 인터넷을 통한 원격 장치 간에 파일을 동기화하도록 설계되었다. 윈도우, macOS, 리눅스, 안드로이드, iOS, *BSD 및 일루모스에서 실행된다. 이 소프트웨어는 자유 오픈 소스 소프트웨어이며, 5년간의 베타 테스트를 거쳐 2019년에 버전 1.0이 출시되었다.

Syncthing 서버는 백그라운드에서 데몬으로 실행되며, 사용자에게 공유 폴더와 장치를 설정할 수 있는 그래픽 사용자 인터페이스를 제공한다. 이 인터페이스는 웹 브라우저에서 로컬호스트 주소인 http://127.0.0.1:8384를 사용하여 접속할 수 있다. 데이터 보안과 안전은 설계 단계부터 고려되었으며, 모든 Syncthing 데이터 전송은 TLS를 사용하여 암호화된다.

 기술 

Syncthing은 Go로 작성되었으며, 자체적인 자유 소프트웨어 블록 교환 프로토콜(Block Exchange Protocol)을 구현한다.

Syncthing은 사용자가 제공한 하드웨어에서 실행되는 BYO 클라우드 컴퓨팅 모델이다. IPv6를 지원하며, IPv4 네트워크 사용자를 위해 NAT 홀 펀칭(Hole punching)과 릴레이를 지원한다. 장치를 연결하려면 명시적인 승인이 필요하며(Introducer 기능이 사용되는 경우 제외), 이는 메시 망의 보안을 강화한다. 장치 간에 직접 전송되거나 릴레이를 통해 전송되는 모든 데이터는 TLS를 사용하여 암호화된다.

충돌이 발생하면 이전 파일의 이름 뒤에 "sync-conflict" 접미사(타임스탬프 포함)를 붙여 이름을 변경함으로써, 사용자가 동기화 사이에 변경된 동일한 이름의 두 개 이상의 파일을 관리하는 방법을 결정할 수 있게 한다. GUI 래퍼(wrapper) 프로그램은 이러한 파일을 사용하여 사용자가 수동으로 파일을 처리하지 않고도 충돌을 해결할 수 있는 방법을 제공할 수 있다.

효율적인 동기화는 메타데이터와 모든 전송 데이터의 압축, 블록 재사용, 그리고 전체 해시가 계산 및 저장된 후 변경된 파일에 대한 경량 스캐닝을 통해 이루어진다. Syncthing은 원격 장치의 업데이트를 처리하지 않는 송신 전용 및 수신 전용 폴더 유형을 제공하며, 다양한 유형의 파일 버전 관리(휴지통, 단순 또는 단계적 버전 관리, 외부 프로그램이나 스크립트에 버전 관리 위임), 그리고 파일/경로 무시 패턴을 지원한다. 현재 두 가지 서로 다른 SHA256 해시 구현이 지원되며, 시작 시 짧은 벤치마크를 거쳐 더 빠른 방식이 동적으로 사용된다. 파일 및 폴더의 이동 및 이름 변경은 기존 데이터를 다시 다운로드하지 않고 효율적으로 처리된다.

 인프라 

장치 검색은 프로젝트 개발자가 운영하는 공개적으로 접속 가능한 검색 서버, 브로드캐스트 메시지를 통한 LAN 검색, 장치 기록 및 정적 호스트 이름/주소 지정을 통해 이루어진다. 이 프로젝트는 또한 자체 검색 서버를 운영할 수 있는 Syncthing Discovery Server 프로그램을 제공하며, 이는 공개 서버와 병행하거나 대체하여 사용할 수 있다.

커뮤니티가 기여한 릴레이 서버 네트워크를 통해 서로 다른 IPv4 NAT 방화벽 뒤에 있는 장치들이 제3자를 통해 암호화된 데이터를 중계함으로써 통신할 수 있다. 릴레이 방식은 TURN 프로토콜과 유사하며, 트래픽은 장치 간에 종단간 TLS 암호화가 적용된다(따라서 릴레이 서버조차 데이터를 볼 수 없으며 암호화된 스트림만 볼 수 있다). 원하는 경우 공개 릴레이와 함께 또는 단독으로 사설 릴레이를 설정하고 구성할 수도 있다. Syncthing은 직접 연결이 가능해지면 릴레이 방식에서 직접 장치 간 연결로 자동 전환한다.

Syncthing은 프로젝트나 커뮤니티 서버에 연결하지 않고도 사용할 수 있다. 업그레이드, 선택적 사용 데이터 전송, 검색 및 릴레이 기능을 모두 비활성화하거나 독립적으로 구성할 수 있으므로, 프라이버시나 기밀 유지를 위해 폐쇄된 시스템에서 메시 망과 인프라를 운영할 수 있다.

 설정 및 관리 
Syncthing은 로컬(로컬호스트 기본 포트 8384) 또는 원격에서 웹 브라우저를 통해 상태를 구성하고 모니터링할 수 있는 웹 기반 인터페이스를 제공하며, 프록시 서버를 통한 접속도 지원한다. 사용자는 인터페이스를 통해 공유할 폴더를 선택 및 관리하고 동기화에 참여할 장치를 관리할 수 있다. Syncthing의 모든 컴퓨터에는 고유한 장치 ID(Device ID)가 있으며, 승인을 통해 동기화 네트워크에 새 장치를 추가하는 데 사용된다.
섬네일|250x250px|안드로이드 휴대전화에서의 Syncthing-Fork 인터페이스
Syncthing은 현재 윈도우, macOS, 리눅스, FreeBSD, OpenBSD 및 일루모스 플랫폼에서 직접 사용할 수 있다. 일부 플랫폼은 더 이상 미리 빌드된 버전을 제공하지 않으며 직접 컴파일해야 한다. 윈도우용 SyncTrayzor(작업 표시줄 트레이 유틸리티로 실행), 안드로이드용 Syncthing-Fork, iOS용 Möbius Sync와 같이 커뮤니티에서 기여한 Syncthing 래퍼 프로그램도 존재한다. 공식 안드로이드 클라이언트는 2024년까지 구글 플레이 스토어에서 사용할 수 있었다.

고급 사용자의 경우, 인터페이스를 사용하지 않고 Syncthing 구성 파일을 직접 편집하거나 명령줄 인터페이스를 통해 Syncthing을 사용할 수도 있다. 커뮤니티 기여 페이지에는 Docker 이미지 링크와 함께 Puppet, Ansible 등 지원되는 구성 관리 솔루션에 대한 링크도 제공된다.

 평가 
Security Now의 456회 에피소드(2014년 녹음)에서 호스트 스티브 깁슨은 Syncthing을 BitTorrent Sync를 대체할 잠재적인 오픈 소스 도구로 극찬했으며, 이후 603회, 698회, 727회, 그리고 734회와 781회에서 더 자세히 언급했다.

LWN.net의 한 리뷰어는 2021년에 다음과 같이 썼다. "Syncthing은 호의적인 인상을 남긴다. 개발자들은 유능하고 신뢰할 수 있으며 안전하고 성능이 상당히 우수한 시스템을 만들기 위해 노력한 것으로 보인다. 또한 많은 자유 소프트웨어 프로젝트들이 실패하는 지점인 설치와 사용의 편의성을 높이는 작업도 해냈다. 자신의 데이터 동기화 및 복제 요구사항을 스스로 통제하려는 누구에게나 매력적인 도구이다."

 버전 역사 
+Syncthing 버전 역사 (일부) 버전 날짜  비고2.0.02025-08-12LevelDB 데이터베이스가 SQLite로 교체되었다.1.28.02024-10-04 안드로이드를 지원하는 마지막 버전. 이 릴리스 이후 개발자는 구글 플레이 스토어와 오픈 소스 저장소인 F-Droid에서 안드로이드 버전을 철수시켰다. 비공식 포크 버전들은 계속 사용 가능하다.1.25.02023-09-251.23.72023-07-31윈도우 7을 공식적으로 지원하는 Syncthing의 마지막 버전. 단, Syncthing 1.27.0도 비공식적으로는 윈도우 7에서 작동하는 것으로 알려져 있다.1.20.02022-05-041.15.02021-04-061.10.02020-09-15LAN IP를 글로벌 검색 네트워크에 브로드캐스트할지 여부를 사용자가 선택할 수 있는 기능을 추가했다.1.9.02020-08-28새로 추가된 대소문자 구분 없는 파일 시스템 처리를 비활성화할 수 있는 caseSensitiveFS 옵션을 도입했다.1.8.02020-08-07카피 온 라이트 파일 시스템에서 파일 변경 사항을 저장하는 방식을 지정할 수 있는 실험적 폴더 옵션을 추가하고, TCP hole punching 지원을 추가했다.1.5.02020-04-21 1.3.02019-10-01 데이터베이스 크기 조정을 위한 새로운 매개변수가 추가되었다. 1.2.02019-07-09 새로운 전송 프로토콜(QUIC) 지원을 도입하고, 자동 크래시 리포팅을 수행할 수 있으며, 작고 고정된 블록 방식을 폐지했다. 1.2.0 버전부터는 0.14.45 이하 버전을 실행 중인 Syncthing 클라이언트와의 통신 지원이 중단되었다. 1.1.3 2019-05-09 윈도우에서의 패닉 버그 수정을 위한 핫픽스 릴리스.1.1.12019-04-02TLS 1.3 지원을 추가했다.1.1.02019-04-22Syncthing이 Go 1.12를 채택함에 따라 윈도우 XP 및 윈도우 서버 2003과의 호환성이 상실되었다. 해싱 성능이 수정되었으며, 사용자/그룹 소유권이 상위 디렉터리를 따르게 되었다.1.0.0 "Erbium Earthworm"2019-01-01첫 번째 "안정" 릴리스로, 주요 변경 사항은 거의 없었으나(수석 개발자는 0.14.55-rc.2와 사실상 동일하다고 밝혔다), 프로그램의 광범위한 사용과 거의 5년 동안 개발되어 온 사실을 반영한 것이다. 최대 동시 스캔 수 제한 및 수신 전용 폴더에 대해 로컬에서 변경된 파일의 표시 제한 등이 변경되었다.
1.0.0 릴리스와 함께 팀은 다음과 같은 기준의 새로운 유사 유의적 버전 시스템을 도입했다.
 이전 버전과 프로토콜 호환성이 없는 새 버전은 메이저(major) 버전이 된다.
 REST API가 변경되거나 다운그레이드를 허용하지 않는 데이터베이스 또는 구성 변경이 있는 새 버전은 마이너(minor) 버전이 된다.
 위와 같은 특정 우려 사항이 없는 경우 패치(patch) 버전이 된다. 0.14 "Dysprosium Dragonfly" 2016-06-19 확장 가능한 새로운 동기화 프로토콜 도입. 0.13 "Copper Cockroach" 2016-05-17 0.13.x 버전에서는 폴더 ID와 폴더 라벨이 분리되었다. 또한 다운로드 중에도 이미 다운로드된 파일의 일부를 다른 클라이언트에 제공할 수 있는 기능이 추가되었다. 0.13.0은 이전의 많은 릴리스와 마찬가지로 0.12.x 이하 버전을 실행하는 클라이언트와 호환되지 않는다. 0.12 "Beryllium Bedbug" 2015-11-05 연결 릴레이 및 HTTPS를 통한 장치 검색 기능이 도입되었다.0.112015-04-22충돌 처리, UI 언어 선택, CPU 사용량 및 동기화 속도 개선, 윈도우에서의 긴 파일 이름 지원, 드라이브 접근 불가 등의 문제 발생 시 자동 재시작, 외부 버전 관리 소프트웨어 지원 등이 도입되었다. 0.11 버전은 이전 버전의 Syncthing과 하위 호환되지 않는다. REST API의 변경으로 인해 0.10.x 버전을 사용하던 클라이언트들은 출시 당시 많은 서드파티 통합 기능과 호환되지 않았기 때문에 0.11로 자동 업데이트되지 않았다.0.22013-12-30최초의 공개 바이너리 배포.

 같이 보기 
 파일 동기화 소프트웨어 비교
 백업 소프트웨어 목록
 백업 소프트웨어 비교

 각주 

 외부 링크 


분류:솔라리스 소프트웨어
분류:자유 백업 소프트웨어
분류:크로스 플랫폼 자유 소프트웨어
분류:2013년 소프트웨어
분류:모질라 라이선스 소프트웨어
분류:Go로 작성된 자유 소프트웨어