내 파일은 서버 없이 모든 기기에서 동기화되며, 마치 마법처럼 느껴진다
파일 동기화는 제가 없어서는 안 될 서비스이며, 동기화를 처리하는 모든 도구를 비판적으로 평가합니다. 수년 동안 여러 도구를 사용했지만, 저는 처음 사용해본 동기화 도구 중 하나인 유니손(Unison)으로 계속 돌아갑니다. 유니손은 최신 앱들조차 제공하지 못하는 방식으로 동기화를 제공합니다. Syncthing과 같은 도구만큼 세련되지는 않지만, 여전히 매끄럽게 작동합니다. 유니손은 과장되지 않습니다. 한 번 동기화를 하면 클라우드 라우팅, 대기열, 제3자 업로드로 인한 지연 없이 모든 것이 최신 상태로 업데이트됩니다.
내 노트북과 데스크탑이 이제 모든 것에 다 동의해
그들 중 누구도 단 한 개의 파일도 업로드하지 않은 채
저는 여러 장치에서 파일을 보관하기 위해 주로 구글 드라이브와 드롭박스를 사용하는 클라우드를 이용했습니다. 사실, 한때 저는 원드라이브를 제가 필요로 하는 방식으로 동기화되도록 조정하는 모든 방법을 알아냈습니다. 하지만 최선의 노력에도 불구하고 파일 이용 가능성에 문제가 생기기도 했고, 네트워크가 느리면 동기화에 매우 긴 대기 시간이 발생했습니다.
Unison을 사용해서 노트북과 데스크탑에 동일한 폴더를 설정했고, 동기화는 거의 즉시 이루어졌습니다. 모든 것이 최신 상태라는 메시지를 받았고, 너무 빨라서 스캔, 업로드, 확인을 완전히 건너뛴 것 같은 느낌이었습니다.
유니슨(Unison)이 내부적으로 어떻게 작동하는지를 이해할 때에야 비로소 그 속도가 이해가 됩니다. 유니슨은 동일한 디렉토리의 두 복제본을 비교하고 그 상태를 추적합니다. 처음 실행하면 디렉토리의 상태를 기록하고, 이후에는 변경된 부분만 신경 씁니다. 따라서 모든 파일을 다시 읽고 다시 업로드하는 대신, 가벼운 아카이브 기록을 비교하는 것입니다.
이 도구는 손쉽게 동기화됩니다. CLI 버전을 사용하면 활동을 시각화하는 진행 표시줄이나 대시보드가 제거되며, 디렉토리에 아무 것도 변경되지 않았다면 조용히 종료됩니다.
전체 과정은 어떤 데이터도 서버에 업로드하지 않는 방식을 사용합니다. 서버 대신, 장치들은 SSH를 통해 직접 서로 통신하거나 로컬 동기화를 통해 연결됩니다. 제가 노트북에서 데스크탑으로 전환할 때, Unison을 실행하면 모든 데이터를 조정합니다. 파일은 각 기기에 로컬로 저장됩니다.
파일이 일치하지 않을 때만 일이 흥미로워진다
대부분의 도구는 승자를 선택하지만, 이 도구는 당신을 결정 과정의 일부로 만듭니다
파일이 동일할 때 동기화 도구는 일반적으로 잘 작동합니다. 그래서 저는 두 장치의 같은 동기화 폴더를 편집하여 두 폴더 사이에 충돌과 비대칭을 만들었습니다. 데스크톱에서는 파일을 삭제했고, 노트북에서는 몇 개의 추가 파일을 넣었습니다. Unison을 실행했을 때 어떤 결과가 나올지 확신할 수 없었지만, 도구는 가장 안전한 방법을 선택하여 변경된 내용을 보여주고 무엇을 해야 할지 결정할 수 있게 해주었습니다.
이것은 Unison과 내가 사용해본 대부분의 동기화 도구들 사이의 중요한 차이점입니다. 다른 도구들은 종종 사용자 대신 중요한 결정을 내려서 보이지 않게 하려고 합니다. 이로 인해 사용자에게 최적인 방식이 아닌 덮어쓰기가 발생하거나 데이터 구조를 지저분하고 혼란스럽게 만드는 중복이 생깁니다. 파일이 두 가지 다른 방식으로 편집되면 Unison은 이를 충돌로 표시하고 주요 작업에 대한 제어를 다시 사용자에게 돌려줍니다.
이러한 종류의 제어는 도구에 대한 신뢰를 쌓습니다. 나는 최종 결정을 내리기 때문에 내 파일의 최선 버전이 있는지 항상 걱정하지 않습니다. 아래는 일부 일반적인 상황에서 Unison이 어떻게 작동하는지입니다.
상황 | 유니슨이 하는 일 | 왜 중요한가 |
|---|---|---|
두 장치 모두에서 동일하지 않은 편집 | 충돌을 표시하다 | 어떤 버전을 유지할지 결정하세요 |
한쪽에서 삭제 | 동기화 전에 프롬프트 | 우발적인 데이터 손실 없음 |
|
새 파일 추가 | 전파를 권장하며 확인을 기다립니다 | 중복이나 혼동 없음 |
유니슨은 당신의 주의가 필요한 것이 무엇인지 보여줍니다. 변경 사항이 충돌하지 않더라도, 유니슨은 어떤 작업을 수행하기 전에 계획을 알려줍니다.
주요 서비스가 필요 없이 내 모든 기기에 확장되었습니다
한 가지 간단한 패턴이 모든 것을 동기화되게 만들었다
Unison은 두 장치 간 동기화에서 잘 작동했습니다. 그럼 질문이 생겼습니다: 세 개 또는 네 개는 어떨까요? 이 설계는 복제 쌍에 대해 훌륭하게 작동합니다. 그러나 올바른 패턴을 갖추면 확장은 쉽습니다.
단순한 허브 앤 스포크 설정이 가장 신뢰할 수 있는 확장 아키텍처임이 밝혀졌습니다. 제 데스크탑이 허브 역할을 하며, 다른 장치들은 개별적으로 그것과 동기화됩니다. 이 설계는 모든 장치가 서로 동기화될 수 있는 클러스터형 웹을 없애줍니다.
실제로, 이것이 의미하는 바는 다음과 같습니다:
- 나는 장치를 바꾸기 전에 내 노트북을 데스크탑과 동기화한다.
- 내가 하는 모든 변경 사항은 허브를 통해 다시 반영됩니다.
- 모든 장치는 결국 동일한 상태에 수렴한다.
허브는 단순히 또 다른 기계일 뿐이며, 전체 구성은 이를 조정할 중앙 서버를 필요로 하지 않습니다. 자동으로 변경 사항을 모니터링하는 반복 모드가 있음에도 불구하고 저는 여전히 수동으로 Unison을 실행합니다. 수동으로 실행하는 데는 단 몇 초밖에 걸리지 않으며 조정이 언제 일어나는지 알 수 있습니다. 이 시스템은 NAS 구성, 임대 서버, 또는 외부 서비스에 대한 신뢰를 필요로 하지 않습니다.
설치하는 동안 거의 포기할 뻔했어요 — 그리고 그게 바로 대가입니다
Unison은 가장 세련된 동기화 도구는 아니며, 설치 과정에서 그 점이 드러납니다. 명령줄 버전을 사용하는 경우, 경로와 디렉터리에 익숙해야 하고, 여러 기기 간 동기화를 할 경우 SSH를 이해하고 있어야 합니다.
그 점을 제외하면, 그것은 단순히 내 다른 동기화 도구와 설정을 대체하는 것이 아니라, 동기화가 무엇일 수 있는지에 대한 새로운 관점을 제시합니다. 내 파일은 서비스 를 거칠 필요가 없습니다.







