Canvas 1 Layer 1

싱크띵(Syncthing), 여러 기기간 파일 동기화 애플리케이션
드롭박스 대신 무료로 사용 가능한 오픈소스 프로젝트

두 줄 요약

요구사항

얼마 전 개인용 랩톱을 구입했더니, 회사에서 작업하던 내용을 집에 가서도 확인해보고 싶어졌습니다. 이를 위해 어떤 도구를 사용할까 고민했는데요. 요구 사항은 크게 두 가지였습니다.

  1. 내가 신경 쓰지 않아도 동기화되면 좋겠다. (이왕이면 동기화 속도도 빨랐으면)
  2. 동기화하지 않을 파일 패턴을 지정할 수 있으면 좋겠다.

드롭박스 등 여러 유료 도구를 찾아보았지만 딱히 마음에 들지 않았는데, 싱크띵Syncthing을 발견하여 정착했습니다. 여기서는 싱크띵Syncthing의 사용법을 간단히 알아보겠습니다.

싱크띵(Syncthing)

싱크띵은 오픈소스 동기화 프로그램입니다. 두 대 이상의 컴퓨터를 별도 서버 없이 동기화할 수 있습니다.

오픈소스 동기화 도구 싱크띵(Syncthing)
오픈소스 동기화 도구 싱크띵(Syncthing)

특징

장점으로 내세우는 부분은 개인 전용(중앙 서버 없음), 보안, 클라이언트별 인증이지만 제게는 별로 중요하진 않았고, 리눅스 명령어에 익숙하지 않은터라 GUI를 제공한다는 점은 꽤 매력적이었습니다.

싱크띵 GUI
싱크띵 GUI

설치하기

맥OS에서는 brew로 설치하기를 권합니다.

brew install syncthing

재부팅 후에도 계속 작동하게 하고 싶다면 다음 명령을 실행합니다.

brew services start syncthing

내장 GUI에 접근하려면 웹 브라우저에서 http://127.0.0.01:8384에 접근하면 됩니다.

맥OS에서 웹 GUI 대신 메뉴바로 관리할 수 있는 syncthing 앱도 있습니다.

brew cask install syncthing

(저는 딱히 필요하지 않아서 설치하지 않았습니다.)

동기화할 클라이언트 추가하기

여기서는 랩톱 office랩톱 private이 있다고 가정하겠습니다. 랩톱 office에서 메뉴의 Actions -> Show ID를 선택합니다.

Actions -> Show ID를 선택합니다
Actions -> Show ID를 선택합니다

다음과 같은 화면에서 ID를 복사해둡니다. (모바일 기기에서 랩톱 office를 추가한다면 ID 아래의 QR 코드를 찍어도 됩니다.)

ID를 복사합니다.
ID를 복사합니다.

이제 랩톱 private에서 오른쪽 아래의 Add Remote Device를 선택합니다.

Add Remote Device를 선택합니다
Add Remote Device를 선택합니다

랩톱 office에서 복사한 ID를 Device ID란에 입력하고, Device Nane에는 랩톱 office를 가리킬 이름을 넣습니다.

디바이스 추가(Add Device)
디바이스 추가(Add Device)

동기화할 디렉터리 추가하기

이제 동기화할 디렉터리를 추가할 차례입니다. Add Folder 버튼을 누릅니다.

Add Folder 버튼을 누릅니다
Add Folder 버튼을 누릅니다

Folder Path에 동기화할 디렉터리의 절대 경로를 넣습니다. Folder Label에는 설명 문구를 넣습니다. Folder ID는 자동으로 생성됩니다.

Add Folder 설정하기
Add Folder 설정하기

디렉터리 동기화하기

같은 창에서 Sharing 탭을 열면 어떤 기기와 동기화할지를 선택할 수 있습니다. 동기화할 기기가 많다면 여러 대를 추가할 수 있습니다.

Share 탭의 설정
Share 탭의 설정

동기화시 파일 버저닝하기

제겐 필요 없다고 생각해서 아직 사용하지 않는 기능이지만 소개해봅니다.

파일의 바뀐 내용을 모두 추적하는 버저닝 기능을 사용할 수도 있습니다. Simple File Versioning에서는 몇 단계 이전 버전까지 저장할지를 설정할 수 있고, Staggered File Versioning에서는 파일을 저장할 최장 기간을 선택할 수 있습니다. External File Versioning에서는 다른 도구를 사용해 버저닝을 할 수 있습니다. 자세한 설정법은 File Versioning 문서를 참고하시기 바랍니다.

이전 버전 파일들은 기본으로 동기화할 디렉터리 루트의 .stversions 디렉터리로 이동됩니다. (별도 지정할 수도 있습니다.)

파일 버저닝 설정
파일 버저닝 설정

동기화하지 않을 파일들을 걸러내기

공유하려는 디렉터리 루트 위치에 .stignore 파일을 만들면, 동기화하지 않을 파일을 패턴으로 지정할 수 있습니다. 다음을 보면 아시겠지만 .stignore 파일의 패턴 규칙은 .gitignore와 흡사합니다.

(?d).DS_Store  # 맥OS에 생성되는 .DS_Store를 걸러냅니다
foo            # foo 디렉터리를 걸러냅니다
*2             # 2로 끝나는 이름의 디렉터리/파일을 걸러냅니다
qu*            # qu로 시작하는 이름의 디렉터리/파일을 걸러냅니다
(?i)my pictures   # 대소문자를 구별하지 않고 my pictures와 일치하는
                  # 디렉터리/파일을 걸러냅니다

.stignore 파일을 수동으로 만들어도 되지만, GUI에서 만들 수도 있습니다.

동기화 대상 디렉터리의 Edit -> Ignore Patterns에서도 .stignore 파일을 편집할 수 있습니다
동기화 대상 디렉터리의 Edit -> Ignore Patterns에서도 .stignore 파일을 편집할 수 있습니다

이 외에 Advanced 탭에서 동기화 방향(주고받기, 받기 전용, 보내기 전용) 등의 옵션도 설정할 수 있습니다.

설정이 끝나면 디렉터리가 동기화되기 시작합니다. 기본 속도는 네트워크가 제공하는 대역폭 만큼이며 Settings -> Connections에서 속도를 제한할 수도 있습니다.

결론

직장과 집의 네트워크 대역폭을 그대로 활용할 수 있고, 제외할 파일 패턴도 지정할 수 있어서 제 요구사항엔 아주 잘 맞는 도구였습니다.