싱크띵(Syncthing), 여러 기기간 파일 동기화 애플리케이션
드롭박스 대신 무료로 사용 가능한 오픈소스 프로젝트
두 줄 요약
-
.gitignore
처럼 동기화하지 않을 파일/패턴 지정 가능 - 무료
요구사항
얼마 전 개인용 랩톱을 구입했더니, 회사에서 작업하던 내용을 집에 가서도 확인해보고 싶어졌습니다. 이를 위해 어떤 도구를 사용할까 고민했는데요. 요구 사항은 크게 두 가지였습니다.
- 내가 신경 쓰지 않아도 동기화되면 좋겠다. (이왕이면 동기화 속도도 빨랐으면)
- 동기화하지 않을 파일 패턴을 지정할 수 있으면 좋겠다.
드롭박스 등 여러 유료 도구를 찾아보았지만 딱히 마음에 들지 않았는데, 싱크띵Syncthing을 발견하여 정착했습니다. 여기서는 싱크띵Syncthing의 사용법을 간단히 알아보겠습니다.
싱크띵(Syncthing)
싱크띵은 오픈소스 동기화 프로그램입니다. 두 대 이상의 컴퓨터를 별도 서버 없이 동기화할 수 있습니다.
![오픈소스 동기화 도구 싱크띵(Syncthing)](https://d2uleea4buiacg.cloudfront.net/files/da1/da10f8b3319254de607653858bfd37060796e6248e0bcc270ecfffc3c69e79f6.m.png)
특징
장점으로 내세우는 부분은 개인 전용(중앙 서버 없음), 보안, 클라이언트별 인증이지만 제게는 별로 중요하진 않았고, 리눅스 명령어에 익숙하지 않은터라 GUI를 제공한다는 점은 꽤 매력적이었습니다.
![싱크띵 GUI](https://d2uleea4buiacg.cloudfront.net/files/d65/d654102581c0d1e107e24c7709c5aeadc1ae5b1c5b3619392b36231c060971d8.m.png)
설치하기
맥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를 선택합니다](https://d2uleea4buiacg.cloudfront.net/files/c05/c05ecec36a341604cb5ce128fe9faf090f9e9799947a9f0aade6a77a03cb1bd7.m.png)
다음과 같은 화면에서 ID를 복사해둡니다. (모바일 기기에서 랩톱 office를 추가한다면 ID 아래의 QR 코드를 찍어도 됩니다.)
![ID를 복사합니다.](https://d2uleea4buiacg.cloudfront.net/files/530/5303ce7c05d1f314b54424e1c5f044abc483e1cfc52c598dffbbed373784557a.m.png)
이제 랩톱 private에서 오른쪽 아래의 Add Remote Device를 선택합니다.
![Add Remote Device를 선택합니다](https://d2uleea4buiacg.cloudfront.net/files/81b/81bd0624ff3a890aa5e58528ba93ccca9a04a4a2537819b36352b76043861419.m.png)
랩톱 office에서 복사한 ID를 Device ID란에 입력하고, Device Nane에는 랩톱 office를 가리킬 이름을 넣습니다.
![디바이스 추가(Add Device)](https://d2uleea4buiacg.cloudfront.net/files/1d8/1d811563ee8e6f0d564338f2bf652ce52764ad548b901ef0b3b623d378fe8b66.m.png)
동기화할 디렉터리 추가하기
이제 동기화할 디렉터리를 추가할 차례입니다. Add Folder 버튼을 누릅니다.
![Add Folder 버튼을 누릅니다](https://d2uleea4buiacg.cloudfront.net/files/88a/88a3ed9a6f9f28c46345ed40ec3cbc29dda2847d5dfd5bbf7d27824df0b5764c.m.png)
Folder Path에 동기화할 디렉터리의 절대 경로를 넣습니다. Folder Label에는 설명 문구를 넣습니다. Folder ID는 자동으로 생성됩니다.
![Add Folder 설정하기](https://d2uleea4buiacg.cloudfront.net/files/236/2364a44f9a14888095197530ab5a89dff9417367ed2edea1d8a663c064daf750.m.png)
디렉터리 동기화하기
같은 창에서 Sharing 탭을 열면 어떤 기기와 동기화할지를 선택할 수 있습니다. 동기화할 기기가 많다면 여러 대를 추가할 수 있습니다.
![Share 탭의 설정](https://d2uleea4buiacg.cloudfront.net/files/b27/b27b14936a748bc6d8ee7a68262da5b181f2f30bc4c676d5b762f63fb998ce9e.m.png)
동기화시 파일 버저닝하기
제겐 필요 없다고 생각해서 아직 사용하지 않는 기능이지만 소개해봅니다.
파일의 바뀐 내용을 모두 추적하는 버저닝 기능을 사용할 수도 있습니다. Simple File Versioning에서는 몇 단계 이전 버전까지 저장할지를 설정할 수 있고, Staggered File Versioning에서는 파일을 저장할 최장 기간을 선택할 수 있습니다. External File Versioning에서는 다른 도구를 사용해 버저닝을 할 수 있습니다. 자세한 설정법은 File Versioning 문서를 참고하시기 바랍니다.
이전 버전 파일들은 기본으로 동기화할 디렉터리 루트의 .stversions
디렉터리로 이동됩니다. (별도 지정할 수도 있습니다.)
![파일 버저닝 설정](https://d2uleea4buiacg.cloudfront.net/files/3cf/3cf3fbf7a878eec65b95cb278747e970776e74594a077c21a3d78014bb6af003.m.png)
동기화하지 않을 파일들을 걸러내기
공유하려는 디렉터리 루트 위치에 .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 파일을 편집할 수 있습니다](https://d2uleea4buiacg.cloudfront.net/files/b13/b13358de2ec04b912fd10483afd24cb472e310763ac57508d9d55eebdbf7ae48.m.png)
이 외에 Advanced 탭에서 동기화 방향(주고받기, 받기 전용, 보내기 전용) 등의 옵션도 설정할 수 있습니다.
설정이 끝나면 디렉터리가 동기화되기 시작합니다. 기본 속도는 네트워크가 제공하는 대역폭 만큼이며 Settings -> Connections에서 속도를 제한할 수도 있습니다.
결론
직장과 집의 네트워크 대역폭을 그대로 활용할 수 있고, 제외할 파일 패턴도 지정할 수 있어서 제 요구사항엔 아주 잘 맞는 도구였습니다.