중앙 서버없이 Dropbox와 같은 파일 동기화 [닫기]

인터넷을 통해 두 Mac의 보조 드라이브를 동기화하는 방법을 찾고 있습니다. 두 Mac간에 일관된 VPN 연결이 있으며 마치 서로 옆에 앉아있는 것처럼 액세스 할 수 있습니다.

한 Mac에서 파일을 수정하면 파일이 다른 Mac으로 푸시되고 그 반대의 경우 Dropbox와 같은 환경을 구현하는 방법을 찾고 있습니다. 또한 대역폭을 조절할 수있는 기능이 필요합니다 (따라서 1 메가 비트 업로드 파이프에 과부하가 걸리지 않습니다). 어떤 제안?

아, 그리고 내 드라이브가 500GB이므로 드롭 박스를 사용하는 것은 현재 문제가 아닙니다. 감사!



답변

Bittorrent Sync를 확인하십시오 . Dropbox와 같은 동기화 기능이 있지만 클라우드는 없습니다.


답변

하드 코어로 가고 싶다면 * nix staff와 같이 OsX 에서 기본적으로 rsync 명령을 사용할 수 있습니다 .

무엇보다 먼저 ssh로 원격 호스트에 액세스 할 수있는 권한이 있어야합니다. OpenSSH 서버 는 Mac OsX에 사전 설치되어 있으므로 추가 패키지를 설치할 필요가 없습니다. 일부 시스템 설정 만하면됩니다. Mac OS X에서 OpenSSH 서버를 활성화하려면 시스템 환경 설정 을 열고 공유를 클릭하십시오. 그리고, 원격 로그인 상자를 체크하여 SSH를 활성화 한 다음 액세스 허용 섹션 에서 모든 사용자 라고 표시된 라디오 버튼을 선택 하십시오.

이제 ssh를 통해 원격 호스트에 액세스 할 수 있습니다.

이제 ssh를 통해 로컬 게스트 시스템에서 원격 호스트로 암호없이 액세스 할 수있는 공개 액세스 키를 작성해야합니다. 이를 위해서는 손이 약간 더러워 져야합니다. 🙂

먼저 인증 키가 있는지 확인하십시오. 에서 터미널 을 실행합니다 :

sudo ls -la /var/root/.ssh

“id_dsa”및 id_dsa.pub가 표시 되면이 섹션의 나머지 부분을 건너 뛸 수 있습니다.

클라이언트 시스템의 터미널에서 다음을 실행하십시오.

sudo ssh-keygen -t dsa -f /private/var/root/.ssh/id_dsa -C "comment about this key"

로컬 게스트 컴퓨터에서 액세스 키를 만든 후에는 게스트의 공개 키를 호스트의 authorized_keys 파일로 복사해야합니다. 인증 된 키 목록에 공개 키를 추가하는 간단한 터미널 명령으로이를 수행 할 수 있습니다.

sudo cat /private/var/root/.ssh/id_dsa.pub | ssh root@remote_host_address 'cat - >> ~/.ssh/authorized_keys'

아래 명령은 로컬 게스트 시스템의 루트 파일 시스템을 원격 호스트에 증분 백업합니다.

/usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine

변경 동기화 동작을 위해 rsync의 매개 변수를 변경할 수 있습니다. 이 명령을 crontab에 추가하면 모든 시간주기에서 동기화를 실행할 수 있습니다. 예를 들면 다음과 같습니다.

sudo crontab -e

crontab에 아래 행을 추가하십시오.

*/30 * * * * /usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine

30 분마다 동기화가 실행됩니다.

다음은 샘플 Python 스크립트입니다.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Cron automated synchronization script.

Desc: Synchronize remote folder into local machine. Duplicate processes
      are disallowed until running process finished.

Usage:
    :: Change required variables as _user, _password, _domain etc.
    :: Edit crontab
    # crontab -e

    :: Append line below.
    */30 * * * * python synchronizator.py 2>&1 &

Author: Sencer HAMARAT (RecNes)
E-Mail: sencerhamarat@gmail.com
"""

import shlex
from subprocess import Popen, PIPE
import logging as log
import sys

__author__ = "Sencer HAMARAT"

_user = 'username'
_password = 'password'
_domain = 'example.com'

_expectation = "Enter passphrase for key \'/home/%s/.ssh/id_rsa\':" % _user
_rsync = '/usr/bin/rsync --partial --progress -avvz -e'
_pub_key = '/home/%s/.ssh/id_rsa.pub' % _user
_ssh = '/usr/bin/ssh -i %s' % _pub_key
_remoteDir = '/home/%s/backup/' % _user
_localDir = '/home/%s/backup/' % _user
_command = '%s %s %s@%s:%s %s' % (_rsync, _ssh, _user, _domain, _remoteDir, _localDir)
run_command = shlex.split(_command)

_logFile = "logfile.log"
_logFormat = "%(asctime)s %(levelname)s %(name)s %(process)d %(threadName)s %(module)s:%(lineno)d %(funcName)s() " \
             "%(message)s\n"
log.basicConfig(filename=_logFile, level=log.DEBUG, format=_logFormat)

log.debug(u'Command will run: %s' % _command)

try:
    running_command = Popen(run_command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
    if running_command.poll():
        log.debug(repr(running_command.poll()))
        sys.exit()
    if _expectation in running_command.communicate():
        running_command.communicate(_password)
    print running_command.communicate()
except Exception as e:
    log.debug(repr(e))
finally:
    sys.exit()


답변

웹 기반 액세스를 원하는 경우 Owncloud 가 가능한 솔루션입니다.

Owncloud를 호스팅하려면 자체 서버가 필요하지만 2 명의 클라이언트가 원하는대로 액세스 할 수있는 서버 기반 솔루션이 더 많지만 해당 파일의 사본은 1 개뿐입니다. Owncloud 서버


답변

나는 최근에 동기화를 우연히 발견했다. 멋진 기능들.

http://syncthing.net/


답변

Windows의 경우 3 단계로 수행 하는 SyncToy 도구가 있습니다. Mac의 경우 ChronSync 도구 또는 트라이 백업 도구에 관한 것입니다


답변

유니슨을 고려하십시오. 양방향 파일 동기화를 처리합니다. 일정 cron또는 다른 일정 예약 앱 으로 일정을 설정할 수 있습니다 .

http://www.cis.upenn.edu/~bcpierce/unison/

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

Unison은 구성 관리 패키지 (CVS, PRCS, Subversion, BitKeeper 등), 분산 파일 시스템 (Coda 등), 단방향 미러링 유틸리티 (rsync 등) 및 기타 동기화 도구와 같은 여러 기능을 공유합니다. (Intellisync, Reconcile 등). 그러나 몇 가지 차이점이 있습니다.


답변

같은 LAN에 두 대의 PC가 있는 GoodSync를 사용 하여 행운을 빕니다 . 그러나 여전히 귀하의 상황에서 잘 작동 할 것입니다.

제품 설명은 다음과 같습니다.

  • GoodSync는 컴퓨터, 모바일 장치, FTP, SFTP, Amazon S3, Google Drive, SkyDrive, WebDAV, Azure간에 파일을 동기화합니다.
  • GoodSync는 휴대용 드라이브, 모바일 장치 및 FTP, S3, GDocs, SkyDrive, DAV 또는 다른 컴퓨터에 파일을 백업합니다.
  • 직접 P2P 동기화 : GoodSync Connect는 타사 서버를 통한 동기화로 인한 속도 저하없이 컴퓨터간에 파일을 직접 동기화합니다.
  • GoodSync는 매우 빠르며 일정에 따라 또는 실시간으로 (파일 변경시) 명령 파일을 정기적으로 동기화합니다.

PC 중 하나에 만 GoodSync를 설정하면됩니다. 양방향 동기화를 처리하며 동기화 유형을 사용자 정의 할 수 있습니다. 또한 CNet에서 권장합니다.