여러 컴퓨터간에 홈 폴더를 동기화하는 방법


117

집에 세 대의 컴퓨터가 있고 세 대의 /home/폴더 트리를 동기화 하고 싶습니다 .
세 컴퓨터 중 하나에서 수정 / 추가 / 제거 된 모든 파일 / 폴더 (숨겨진 파일 제외)는 다른 두 컴퓨터에서 업데이트됩니다.

rsync이 작업을 수행하기에 충분? 그리고 어떻게?


9
대부분의 '동기화'도구의 문제점 (정확히 기억하면 rsync 포함)은 사용자 조치에 대한 개념이 없다는 것입니다. 따라서 컴퓨터 X에서 파일을 삭제하면이 도구는 (a) 컴퓨터 X에서 실제로 파일을 삭제했는지 또는 (b) 컴퓨터 Y에서 해당 파일을 추가했는지 여부를 알 수 없습니다. 대부분의 도구는 (b), 동기화 할 때 컴퓨터 Y에서 파일을 삭제하는 대신 컴퓨터 X에서 파일을 다시 추가합니다.
Rabarberski

5
@Rabarberski 많은 동기화 도구 (Unison 또는 Syncthing 포함)는 기존 데이터를 참조하여 데이터베이스를 유지합니다 (이 때문에). 새 폴더를 처음 동기화 할 때는 도움이되지 않지만 파일을 자동으로 삭제할 수 있습니다. 대부분의 동기화 도구의 실제 문제는 다음 동기화가 발생하기 전에 파일이 두 위치에서 변경된 경우입니다.이 충돌의 경우 일반적으로 수동 병합을 수행하거나 최신 버전으로 바꿔야합니다.
Chris

2
변경 사항을 다른 컴퓨터에서 즉시 복사 할 수없는 경우 동기화하는 것은 정말 까다 롭고 어떤 프로그램도 완벽하게 수행하는 것을 본 적이 없으므로 몇 가지 버그, 충돌, 다시 나타나는 파일에 대비하십시오. 동기화 프로그램에서 관리 할 수있는 특정 폴더 만 동기화하는 것이 좋습니다.
Elzo

답변:


90

다음은이 문제를 잠재적으로 해결할 수있는 사항을 나열한 것입니다. 각각은 서로 다르게 균형을 조정해야하므로 스스로 선택하고 스스로 시도해야합니다.

  • Unison- 다른 사람들이 언급했듯이 수동으로 실행되지만 매우 빠르고 안정적이며 효과적입니다. 두 머신의 동기화가 동일해야합니다. 거의 필연적 인 충돌을 처리하고 삭제를 올바르게 추적하고 전파 할 수있는 멋진 사용자 인터페이스가 있습니다. 그래픽 앱 / 패키지를 unison-gtk라고합니다.

  • OwnCloud- 클라우드 스토리지는 자체 서버에서 실행됩니다. 그대로 두려면 기계가 필요합니다. 합리적인 양의 설정이 필요합니다. 서버에서 전체 Apache 2 웹 서버와 SqlLite 또는 MySQL 데이터베이스를 실행합니다. 데스크톱 클라이언트에서 Dropbox와 유사하게 작동하지만 서버를 제어 할 수 있습니다. 편집 : OwnCloud는 최근 프로젝트 실행 방식에 일부 변경 사항을 적용했으며 이제 NextCloud를 따라 완전히 새로운 오픈 소스 (예 : 비공개 소스 '엔터프라이즈'에디션 없음)를 보유 하고 있습니다 ( OwnCloud 개발자와의 YouTube 인터뷰 참조). 상세 사항은).

  • SparkleShare -git을 사용하여 파일을 동기화 상태로 유지합니다. 홈페이지에 따르면 : 많은 작은 파일에는 적합하지만 음악이나 사진 모음과 같은 많은 큰 파일에는 적합하지 않습니다.

  • Seafile- 로컬 컴퓨터에 설치할 수있는 서버 구성 요소를 제공합니다. Seafile은 변경 사항을 추적 하기 위해 git과 유사한 데이터 모델을 사용합니다 . 데스크톱, 태블릿 및 스마트 폰에 동기화 클라이언트를 제공합니다. 설정을 설명하는 블로그 게시물은 http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/ 에서 찾을 수 있습니다.

  • Osync- "... bash로 작성되고 rsync를 기반으로하는 양방향 파일 동기화 도구입니다. ssh 터널을 통해 로컬 및 / 또는 원격 디렉토리에서 작동합니다. 주로 cron 작업으로 시작됩니다 (웹 사이트의 텍스트).

  • PowerFolder -Java 기반 GPL v2 프로젝트. 기본 웹 사이트는 상용 제품을 제공하므로 제공된 .jar 파일을 사용하는 방법이 명확하지 않습니다.

  • Rsync- 빠르고 효과적이며 수십 년 동안 사용되었지만 기록을 유지하지 않으므로 파일이 새 파일인지 삭제 파일인지를 결정하는 방향을 선택해야합니다. gwRsync 와 같은 그래픽 도구를 사용할 수 있습니다 .

  • Lsyncd- 폴더 / 파일을 모니터링하여 rsync 복제를 트리거합니다

  • dvcs-autosync- 파이썬으로 작성되었으며 git을 사용하여 컴퓨터간에 변경 사항을 저장하고 공유하고 XMPP는 변경 사항을 전달합니다.

  • git-annex-git을 기반으로 파일을 분류하는 명령 줄 도구입니다. 여기에 설명이 있습니다 : http://git-annex.branchable.com/walkthrough/

  • 토니도 -프리웨어. 파일을 다른 장치와 공유 할 데스크톱 앱을 제공합니다. 상업용 클라우드 제품 및 TonidoPlug 플러그 컴퓨터도 제공합니다.

  • BitTorrent Sync (프리웨어)-BitTorrent를 기반으로하는 피어 투 피어 파일 동기화. 오픈 소스가 아니고 LAN 내 데이터를 유지하기 위해 신뢰할 수 없기 때문에 사용하지 않을 것이므로이 정보에 대해 잘 모릅니다. 더 나은 정보 / 실제 경험 으로이 답변을 자유롭게 편집하십시오.

  • SyncThing -BitTorrent Sync의 오픈 소스 대안으로 개발되었습니다. 현재 신뢰할 수없는 피어와 같은 BitTorrent Sync의 일부 고급 기능이 부족합니다. 현재 개발 중입니다.

  • dropbox, ubuntu one, google drive, apple iCloud와 같은 상업용 호스팅 서비스는 모두 빠르고 저렴하지만 모든 데이터를 갖춘 회사를 신뢰해야하며 인터넷 연결이 합리적으로 필요합니다.

  • 힘내 / Subversion- 소스 제어 시스템을 직접 사용하십시오. 완전히 수동적이며 이러한 시스템에 익숙한 일부 사용자가 프로그래밍 도구로 사용함으로써 약간 복잡하지만 널리 사용되는 접근 방식이 될 수 있습니다.

  • CloudFS- 전체 파일 시스템, 클러스터 기술 기반 동기화

  • NFS 마운트-기본적으로 집은 한 대의 컴퓨터에 있고 네트워크를 통해 액세스하므로 랩톱에는 적합하지 않습니다. 추가 정보 : http://www.linuxjournal.com/article/4880


결정시 고려해야 할 요소 :

  • 중앙 서버-일부 솔루션을 사용하려면 다른 시스템과 동기화하기 위해 항상 시스템이 있어야합니다 (또는 적어도 동기화해야하는 경우). 기존 머신 중 하나이거나 NAS와 같은 별도의 머신 일 수 있습니다. 전력 청구서 증가에주의하십시오.

  • 자동 / 수동 / 스케줄-기계 이상으로 변경되는 경우 충돌을 해결하지 않는 가장 좋은 방법은 모든 기계에 변경 사항을 감시하고 즉시 동기화하는 프로그램을 설치하는 것입니다. 버전. 수동 프로세스에서는 항상 동기화를 실행해야합니다.

  • 원격 액세스-LAN (일명 홈)에서 동기화하려는 경우 보안의 의미를 생각하십시오.

  • 보안-데이터가 네트워크를 암호화 된 상태로 유지합니까, 기계 간 전송이 얼마나 안전한가요? 누군가가 이동 중에 데이터를 캡처하고 나중에 암호화에 결함이있는 경우 어떻게해야합니까? 데이터를 보관하는 서버를 누가 제어하고, 데이터를 암호화하며, 타사를 신뢰할 수 있습니까? 원격 액세스를 위해 라우터에 구멍을 뚫어야합니다. '삭제 된'파일 및 관련 메타 데이터가 동기화 된 장치 및 중앙 서버에서 얼마나 오래 지속됩니까? 암호화 된 저장소와 암호화되지 않은 저장소를 동기화하고 있습니까?

  • 큰 폴더 이동-내가 시도한 솔루션에는 파일이나 폴더를 이동 / 이름 바꾸기 할 때 동기화가이를 이해하지 못하고 새 파일로 다시 업로드 한 다음 이전 사본을 삭제하는 문제가 있습니다. 위의 문제를 해결할 수있는 위의 솔루션을 표시하여 도움을주십시오 (사용하는 콘텐츠 기반 주소 지정으로 인해 git 이이 문제를 겪지 않기 때문에 git 기반 솔루션이 수행한다고 생각하지만 확실하지 않습니다. 사용하지 않았습니다).

  • 디스크 용량

  • 백업-동기화가 백업되지 않습니다. 실수로 중요한 파일을 삭제하면 위의 많은 부분이 다른 모든 사본을 삭제합니다. 내가 읽어 보시기 바랍니다 해킹에 매트 호난의 조각을 말하자면, 당신은 하나 개의 디지털 바구니에 모든 디지털 계란을 넣을 경우 발생할 수있는의 좋은 계정.


나는 전체 홈 폴더를 동기화, 대신 같은 동기화 특정 폴더를 따기하지 않는 것이 좋습니다 Documents/, Pictures/이 자동으로 모든 것을 동기화 속도 / 성능 / 디스크 공간 문제를 처리하기 위해 강제의 고통을 피할 것 등. 또한 제외 목록을 유지 관리하지 않아도됩니다.

계속해서 개인적으로 나에게 맞는 것을 찾으려고 노력하면서 유용한 정보로이 답변을 최신 상태로 유지하려고 노력할 것입니다. 다른 모든 답변의 정보를 하나의 완전한 답변으로 집계했습니다.

참고 문헌 :

  • LinuxFormat-2014 년 2 월 LXF180 p31, "호스트 스토리지 라운드 업"

해킹 / 모두 /


루트 액세스 권한이없는 서버가 있습니다 (예 : 단일 설치에 필요). 클라이언트 컴퓨터에 서버에 설치할 필요가없는 스크립트가 있습니까?
Ben Kushigian

freefilesync ( sourceforge.net/projects/freefilesync ) 라는 소프트웨어가 여기저기서 언급 된 것을 보았습니다 . 목록에서 언급 할 가치가 있습니까?
YoungFrog

28

유니슨 은 좋은 후보가 될 수 있습니다.

Unison은 Unix 및 Windows 용 파일 동기화 도구입니다. 파일 및 디렉토리 모음의 두 복제본을 다른 호스트 (또는 동일한 호스트의 다른 디스크)에 저장하고 개별적으로 수정 한 다음 각 복제본의 변경 사항을 다른 복제본으로 전파하여 최신 상태로 유지할 수 있습니다.

이미 양방향 동기화를 수행합니다. 다음 업데이트를 참조하십시오.

rsync가 할 수없는 일이 거의 없으며, 동일하거나 더 나은 솔루션을 제공 할 수 있지만 rsync 전문가가 해당 솔루션을 시작할 때까지 기다려야합니다.

업데이트 : 예. Unison은 두 대 이상의 컴퓨터를 동기화 할 수 있습니다. 자신의 사용 설명서 :

Unison을 사용하여 두 대 이상의 컴퓨터 동기화

Unison은 복제 쌍을 동기화하도록 설계되었습니다. 그러나 여러 쌍의 동기화를 수행하여 더 큰 시스템 그룹을 동기화하는 데 사용할 수 있습니다.

이 작업을 수행해야하는 가장 안정적인 방법은 컴퓨터를 "스타 토폴로지"로 구성하는 것입니다. 한 컴퓨터는 "허브"로 지정하고 나머지는 "스포크"로 지정하고 각 스포크 컴퓨터를 동기화합니다. 허브 만 사용하십시오. 스타 토폴로지의 가장 큰 장점은 Unison이 동기화하는 모든 호스트 쌍에 대해 별도의 아카이브를 유지 관리한다는 사실로 인해 "스퓨리어스 충돌"을 혼동 할 가능성이 없다는 것입니다.


다른 컴퓨터에서 새 파일을 추가하는 대신 때때로 어떤 이유로 든 unison에 대한 나쁜 경험이 있습니다. 다른 시간에는 정상적으로 작동했습니다.
jhcaiced 님이

1
루프를 만들지 않도록 매뉴얼의 권장 사항에 따라 a / b / c 예제를 편집하는 것이 좋습니다.
Tim Abell

rsync에 대한 참조와 관련하여. 양방향 동기화를 안정적으로 수행 할 수 없습니다. 다음 답변을 통해 unison이 rsync로 처리 할 수없는 경우를 처리 할 수있는 이유를 확인하십시오. stackoverflow.com/questions/4504357/…
ndemou

19

SubVersion 또는 git과 같은 버전 제어 시스템에 파일을 넣는 것은 어떻습니까?

나는 내 집 전체 디렉토리를 버전 화하지 않지만 중요한 것들이있는 소수의 하위 디렉토리 만 버전 화합니다. 그러나이 유형의 작업에 더 나은 것처럼 보이기 때문에 git으로 변환하는 것에 대해 생각하고 있습니다. ( 빠른 검색으로 올바른 방향으로 보내드립니다 ).

행운을 빕니다


업데이트 : git의 좋은 부작용은 컴퓨터 특정 파일을 쉽게 가질 수 있다는 것입니다. 해당 컴퓨터에는 분기가 필요하기 때문입니다 (git에서는 기본적으로 가져옵니다). 따라서 모든 컴퓨터에서 정확히 동일한 파일을 가질 필요는 없으며, 서로 유사해야하며 다른 모든 컴퓨터에서 원하는 항목이있는 공통 "주"분기가 있어야합니다.


Yikes. 파일 동기화에 버전 제어를 사용한다는 아이디어는 실제로 피부를 크롤링합니다.
JohnD

예, 아이디어는 이상하지만 실제로 유용합니다. 개인 도우미 스크립트의 경우 ~ / bin /과 같은 디렉토리를 생각해보십시오.이 디렉토리는 버전 제어 시스템에서 훌륭합니다. .kde와 같은 디렉토리는 아마도 버전 제어 시스템에서 잘못 작동하고 처리되지 않은 파일에 대한 무시 목록에 배치됩니다.
요한

이것은 파일을 동기화 된 상태로 유지하는 좋은 방법입니다. "git add"및 "git rm"을 사용하여 파일을 추가 / 제거하는 아이디어에 익숙해 져야하지만 매우 잘 작동합니다.
jhcaiced 님이

집에있는 쓰레기 내 파일의 어떤 부분을 공유 할 것인지 통제하고 있기 때문에이 아이디어가 마음에 듭니다. 유일한 질문은 커밋을 관리하는 방법입니다. 즉, 일부 파일은 초기 커밋으로 이동 한 다음 변경 사항을 반영하여 시스템 / etc / skel을 기반으로한다는 것을 보여줍니다.
ony

디렉토리를 동기화하려고 할 때 파일과 함께 별도의 분기를 유지하는 것이 정말 편리합니까? 물론 작동하지만이 작업에는 권장하지 않습니다. 일반적으로 대부분의 동기화 도구 (이름, 폴더 등)에서 파일을 제외 할 수 있으며 설명하는 내용 (일부 중요한 하위 디렉토리에만 사용)에 대해서는 원래 질문과 관련하여 실제로 유용하지 않습니다.
Chris

6

이 작업을 수행 할 때 가장 큰 문제는 변경 사항을 병합하고 삭제 전파 및 충돌 해결 방법을 결정하는 것입니다. 특히 여러 사람이 사용하는 3 대의 컴퓨터 설정이있는 경우 완전히 자동화 된 방식으로 수행하기가 어렵습니다.

사용자를 분리하면 훨씬 간단 해집니다. 한 명의 사용자가 한 번에 두 위치에있을 수 없으므로 (따라서 충돌이 발생 함) 로그인시 "변경 사항 가져 오기"및 "로그인 변경"으로 로그 아웃하도록 rsync 작업을 설정할 수 있습니다. 이 세분성 수준에서 전체 / home /이 아닌 매번 / home / myuser를 동기화하게됩니다. 짧은 시간 동안 활동이 없으면 추가 수정 (로그 아웃하지 않은 경우)이 푸시 스크립트를 실행합니다.

다른 잠재적 인 솔루션이 많이 있지만, 내가 아는 한이 문제를 마술처럼 해결하는 것은 없습니다. 첫 번째 단계는 아마도 기계를 어떻게 사용하고 사용자의 행동에 맞는 동기화 정책을 생각해내는 것입니다.



4

이것은 완전히 해결책을 제공하지는 않지만 시작을 제공합니다.

파일을 재 동기화하기 위해 매번 cron 작업을 설정하십시오. 다음과 같은 명령을 사용합니다.

rsync -alhz --stats --progress --exclude-from '/etc/rsync_backup_excludes.conf' / -e ssh user@10.10.0.1:/path/to/home/

rsync를 사용하여 필요한 변경 사항 만 복사하고 명령을 실행할 때마다 모든 것을 다시 복사하지는 않습니다.

--stats 및 --progress는 선택 사항이므로 스크립트에서 제외해야합니다.

내 rsync_backup_excludes.conf 파일의 내용은 다음과 같습니다.

dev/*
proc/*
lost+found/*
mnt/*
sys/*

기기가 켜져있을 때 Anacron은 동기화되어 가동 중지 시간으로 인한 슬롯 누락을 방지합니다.
Tim Abell

전체 로컬 루트가 원격 홈 폴더에 복사됩니다. 그것은 OP가 요구 한 것이 아니며, 왜 누군가가 그것을 원할지 상상할 수 없다 ...
Cerin

4

lsyncd를 확인하십시오

Lsyncd는 로컬 디렉토리 트리 이벤트 모니터 인터페이스 (inotify 또는 fsevents)를 감시합니다. 몇 초 동안 이벤트를 집계 및 결합한 다음 하나 이상의 프로세스를 생성하여 변경 내용을 동기화합니다. 기본적으로 이것은 rsync입니다. 따라서 Lsyncd는 새로운 파일 시스템이나 블록 장치를 필요로하지 않고 비교적 쉽게 설치할 수 있으며 로컬 파일 시스템 성능을 저해하지 않는 경량 라이브 미러 솔루션입니다.

Rsync + ssh는 SSH를 사용하여 와이어를 통해 이동 대상을 재전송하지 않고 대상에서 직접 파일 및 디렉토리 이동을 수행하는 고급 조치 구성입니다.

구성 파일을 통해 세밀한 사용자 정의를 수행 할 수 있습니다. 쉘 스크립트부터 Lua 언어로 작성된 코드에 이르는 계단식 레이어에서 사용자 정의 동작 구성을 처음부터 작성할 수 있습니다. 쉘 스크립트에서 Lua 언어로 작성된 코드에 이르는 레이어입니다.


2

dropbox http://www.getdropbox.com/ 크로스 플랫폼 Win / Linux / Mac 살펴보기


3
고마워요 이미 시도했습니다. 내가 찾고있는 것이 아닙니다.
lamcro

Dropbox는 훌륭하며 집, 직장 및 랩톱간에 링크, 사진 및 기타 중요하지 않은 중요한 데이터를 저장하기 위해 무료 2GB를 사용합니다. 이 상황에서 필요한 것은 아니지만 제 생각에 Dropbox는 분명히 그 자리를 차지합니다.
매트 코퍼

2

/home한 컴퓨터에서 다른 컴퓨터로 마운트 하십시오. 자동 마운트는이 작업에 매우 적합합니다.


1

우분투 하나 는 당신이 찾고있는 것일 수 있습니다. 불행히도 아직 베타 단계에 있으며 경험이 없기 때문에 효과가 있는지 잘 모르겠습니다.


우분투 팀이 문제를 해결함에 따라 며칠마다 업데이트가 있습니다. 작동하지만 Dropbox보다 권장하지 않습니다.
nagul

1

구성을 동기화하려는 경우 위에서 언급 한 도구는 전혀 도움이되지 않습니다. 구성이 자주 변경되고 많은 로그 파일이 충돌하여 병합 할 수 없습니다.
내 속임수는 간단하고 바보입니다. :) 마스터 워크 스테이션이 있고 "~"의 모든 파일이 두 번째 "Slave"파일로 복사됩니다. 내가 무언가를 수정해야한다는 것을 깨닫는 순간-마스터에서 수행하고 슬레이브는 동기화에서 이러한 변경 사항을 포착합니다.

또한 일부 bash 스크립트는이 컴퓨터에서 다르게 실행되어야하므로 /etc/bash.bashrc를 편집했습니다.

수출 OOHOST = 마스터

이제 스크립트는 그들이 어떤 호스트를 제공하는지 알고 있습니다.)


1

dvcs-autosync를 시도하십시오 .

이것은 git을 기반으로하며 XMPP를 사용하여 합의 된 클라이언트에게 파일 변경 사항을 알리고 inode 변경을 통해 파일 변경 이벤트에 반응합니다. 따라서 파일 변경 직후에 항상 정보를 얻습니다. 충돌이 발생하면 입증 된 git 메소드에 의존합니다.

SSH 공개 키를 통한 Dropbox 교체로 지금까지 오랫동안 사용해 왔으며 실제로 작동합니다.


0

PowerFolder- 파일 동기화, 폴더 동기화, 원격 스토리지, 백업 및 개인 파일 공유. 집과 사무실 PC를 동기화하고 휴가 사진을 공유하거나 문서 작업을 함께 할 수 있습니다. PowerFolder의 안전한 P2P 기술은 인터넷 또는 LAN을 통해 작동합니다.


0

고려할 해결 방법 :

  • 드롭 박스.
    주요 결점 : 합리적인 양의 데이터는 무료가 아닙니다. 그렇지 않으면 그것은 완벽하게 작동합니다 IMHO

  • NAS 서버. 파일을 NAS 서버에 넣으면 요즘 (150 $ 정도) 합리적으로 저렴 해졌으며 좋은 파일은 많은 에너지를 소비하지 않습니다. 동기화 문제가 없습니다.
    주요 단점 : 로컬 사본보다 느리다


NAS를 사용하면 여전히 동기화 방법을 다루지 않습니다. NAS와 두 대의 컴퓨터를 갖는 것은 원칙적으로 OP가 요구하는 세 대의 컴퓨터를 갖는 것과 다르지 않습니다. 동기화해야 할 모든 것이 NAS에 저장되어 있다고 제안하는 경우 일반적으로 불가능합니다-예를 들어 구성 파일의 동기화를 고려하십시오-각 시스템에 있어야합니다.
KBA

0

내가 사용 SyncTwoFolders Mac과에 대한 Syncback을 PC 용 - 집에서 내 세 개의 맥에 대한 첫 번째 (포함 노트북), 직장에서 내 PC를위한 두 번째. 두 프로그램 모두 다양한 백업 및 동기화 옵션을 갖추고있어 사전 설정이 완료되면이 기능을 쉽게 사용할 수 있습니다. 쉬워요! Linux 및 Ubuntu에 사용할 수있는 다른 유사한 소프트웨어 버전이 있다고 확신합니다.


0

삭제 된 파일을 전파하고 수정 된 파일 만 업데이트 할 수있는 osync와 같은 동기화 스크립트를 사용할 수 있습니다. http://www.netpower.fr/osync osync는 rsync 기반이지만 로컬 폴더 또는 ssh를 통한 원격 폴더 간의 많은 동기화 시나리오를 처리 할 수 ​​있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.