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

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

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



답변

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

  • 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, “호스트 스토리지 라운드 업”

해킹 / 모두 /


답변

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

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

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

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

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

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

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

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


답변

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

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

행운을 빕니다


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


답변

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

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

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


답변

일반적인 홈 폴더를 NFS 마운트하여 더 나은 것을 얻을 수 있다고 생각합니다. 이 기사를 확인하십시오 http://www.linuxjournal.com/article/4880


답변

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

파일을 재 동기화하기 위해 매번 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/*


답변

lsyncd를 확인하십시오

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

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

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