Syncthing

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

Syncthing 서버는 백그라운드에서 데몬으로 실행되며, 사용자에게 공유 폴더와 장치를 설정할 수 있는 그래픽 사용자 인터페이스를 제공한다. 이 인터페이스는 웹 브라우저에서 로컬호스트 주소인 ``를 사용하여 접속할 수 있다. 데이터 보안과 안전은 설계 단계부터 고려되었으며, 모든 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은 호의적인 인상을 남긴다. 개발자들은 유능하고 신뢰할 수 있으며 안전하고 성능이 상당히 우수한 시스템을 만들기 위해 노력한 것으로 보인다. 또한 많은 자유 소프트웨어 프로젝트들이 실패하는 지점인 설치와 사용의 편의성을 높이는 작업도 해냈다. 자신의 데이터 동기화 및 복제 요구사항을 스스로 통제하려는 누구에게나 매력적인 도구이다."

## 버전 역사

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

## 각주

## 외부 링크
* 

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