BitTorrentSync

BitTorrentSync란?

BitTorrentSync(이하 Sync)는 OSX, Windows, 리눅스, iOS, Android 등 대부분 플랫폼에서 동작하는 동기화 프로그램이다.

리눅스의 rsync와 비슷하지만, P2P로 양방향으로 동기화가 가능하다. 그리고 중앙 서버가 필요 없고, 폐쇄된 환경에서 내부 네트워크만 연결되어 있으면 동기화할 수 있다.

제품 설명 페이지에 따르면 클라우드 서버를 거치지 않기 때문에 클라우드 서비스보다 16배 빠르다고 한다.

기능

  • 크로스플랫폼 장치간 파일 전송
  • 인텔리전트 동기화
  • 모바일 데이터 백업

무료, Pro 버전 비교

설치 후 30일 동안 Pro 버전을 사용할 수 있고, 그 이후부터 무료 버전으로 사용할 수 있다.

두 가지 기능에 대해 약간 더 알아볼 필요가 있었다.

처음으로 폴더 수 무제한 기능이다. 무료 버전에서 10개까지만 사용할 수 있다. 만약 10개를 사용하고 있는데, 1개 폴더를 더 공유하고 싶다면 Pro로 업그레이드하거나 1개 폴더를 제거해야 한다.

다음은 데스크탑에서의 온디맨드 액세스 기능이다. 전체 파일을 동기화하는 것이 아니고, 필요할 때 동기화하는 방식이다. 개인적으로 이 기능은 유용한 상황이 없었다. 이 기능은 iOS, 안드로이드 앱에서 무료로 사용할 수 있다.

설치하고 사용하기

설치와 설정 등 기본적인 사용법은 간단하다. 다운로드 후 실행하면 된다.

설정할 때 수신받는 포트를 지정하는 것이 좋다. 수신받는 포트는 TCP와 UDP가 함께 열리게 된다. 보통 55555번 포트를 많이 사용하는 것 같다.

장치 간 최소한 이 포트에 접근할 수 있어야 공유할 수 있다. 또는 Sync에서 제공하는 릴레이 서버에 대한 접근이 막혀있지 않다면, 이 서버가 중계해주는 역할을 해줄 수 있다.

다음은 트래커 서버와 릴레이 서버가 접근 가능한지 확인할 수 있는 명령이다. 아쉽게도 현재 사용 중인 호스팅에서 중계 서버에 접속이 안 돼서 중계 서버는 사용할 수 없었다.

윈도와 맥은 트레이에 아이콘이 나타나고 백그라운드로 동작한다. 여기서 설정이나 상태 등을 확인할 수 있다. 이와는 달리 리눅스 버전은 웹 UI가 제공된다. 웹 UI는 TCP 포트를 사용하고 기본적으로 8888번을 사용한다.

어쨌거나 Sync를 통해서 폴더를 추가하고, 해당 폴더를 공유할 수 있다. 또는 전체 폴더를 동기화 시킬 수도 있다.

처음에 공유하고 싶은 폴더를 QR코드나 링크를 통해서 대상 컴퓨터나 모바일에서 사진을 찍거나 코드를 입력하면 공유할 수 있게 된다.

간단하게 기본적인 사용법은 알아봤고, 실제 어떤 식으로 사용했는지 사례를 알아보겠다.

장비 구성은 서버, 회사 PC, 집 PC, 랩탑으로 되어 있다. 실제로 여기에 아이폰, 아이패드 같은 장비를 추가로 사용한다.

서버에서는 매일 DB 데이터를 덤프해서 특정 폴더에 보관하고 있다. 그리고 nginx를 사용해서 특정 폴더에 대한 웹서비스를 하고 있다.

폴더 공유 목적
데이터베이스 백업 폴더 서버에 있는 데이터베이스 백업을 하고 집 PC에도 저장시켜 이중화시킨다.
웹서비스 폴더 블로그의 이미지나 테스트 페이지 작성을 위해서 집 PC, 랩탑, 회사 PC 등 모든 장비에서 공유한다.

데이터베이스 백업 폴더는 개인적인 데이터이기 때문에 회사 PC에서는 필요 없다. 그리고 웹서비스 폴더의 경우 아무 장비에서나 공유된 폴더에 이미지를 올리거나 페이지를 만들면 동기화되면서 서버에서 바로 서비스가 된다. 예를 들어 랩탑에서 블로그에 쓸 이미지를 10개를 공유 폴더에 위치시키면 바로 nginx를 통해서 10개 이미지를 웹서비스를 할 수 있는 것이다. html, javascript 파일도 서비스 할 수 있다. 물론 jsfiddle로 할 수 있지만, PC에서 내가 좋아하는 에디터를 사용해서 코드를 작성하고 페이지를 바로 공유할 수 있는 것이 다른 점이다.

문제점

동기화가 이상하게 되는 문제

이 외에도 사진이나 개인적으로 보관하고 있는 파일들도 지워질 것에 대비해서 집 안에 있는 PC끼리 서로 백업시키는 용도로 쓰고 싶었다. 그래서 맥(OSX)과 미니 PC(윈도7)에 Sync를 설치하고, 백업 폴더를 공유시켰다. 그리고 공유시킨 폴더 안에 있는 구조를 변경하고, 파일 이름들도 바꾸는 등 작업을 했는데 미니 PC에서 작업한 대로 정상적으로 변경되지 않고, 파일도 삭제되는 문제가 있었다. 이 문제는 너무 치명적이라서 맥과 윈도 간 동기화를 통한 이중화는 하지 않았다. 아마 맥 버전이 문제일 것으로 보인다.

파일 변경이 바로 반응하지 않는 문제(해결)

이 문제는 우분투에서 문제가 발생했었는데, 우분투에서 파일을 삭제하거나 내용을 변경했는데 동기화가 전혀 되지 않았었다. 디버그 모드를 체크한 후 확인해 보니 전혀 이벤트가 발생하지 않는 것으로 보였다. 포럼을 찾아봐도 해결방법을 찾을 수 없었다. 아마 i386(glibc 2.3) 버전을 설치했었는데, i386으로 다시 다운로드 후 다시 설치하니 이벤트가 정상적으로 발생했다.(또는 그 반대로)

백신 프로그램 때문에 막힌 경우

회사 윈도 PC의 경우 백신으로 시만텍이 설치되어 있는데, Sync를 악성 프로그램으로 보고, Sync에서 사용하는 포트를 전부 막아버린다. 그래서 윈도에서는 사용할 수 없었다.

결론

중앙서버를 거치지 않고, 폐쇄된 환경에서도 P2P 방식으로 폴더를 공유하고, 양방향으로 동기화되는 것은 아주 매력적이다. 이러한 기능을 구현하기 위해서 rsync를 사용하고, 구조를 생각하고 스크립트를 만들었어야 했을 텐데, Sync를 사용하게 되면 데몬만 띄우고 폴더만 지정해서 간단하게 구현할 수 있었다.

그러나 백신 프로그램이나 맥과 윈도 간 동기화할 때 문제점은 치명적이었다. 특히 동기화가 이상하게 되는 안정성에 관한 문제들은 앞으로 개선되었으면 좋겠다.

References