22

Я ищу способ синхронизации дополнительных дисков на двух моих Mac через Интернет. У меня есть постоянное соединение VPN между двумя компьютерами, и я могу получить к ним доступ, как если бы они находились рядом друг с другом.

Я ищу способ реализовать подобный Dropbox интерфейс, при котором, если я изменю файл на одном Mac, файл будет перенесен на другой Mac (и наоборот). Мне также нужна способность регулировать пропускную способность (чтобы наша маленькая 1-мегабитная канал загрузки не была перегружена). Какие-либо предложения?

О, и об использовании Dropbox в данный момент не может быть и речи, поскольку мой диск емкостью 500 ГБ. Спасибо!

9 ответов9

30

Проверьте Bittorrent Sync. Он имеет функцию синхронизации, как Dropbox, но без облака.

16

Если вы хотите использовать хардкор, вы можете использовать команду rsync в OsX, например, * nix staff.

Прежде всего, вы должны иметь разрешение на доступ к удаленному хосту по ssh. Сервер OpenSSH предустановлен на Mac OsX, и вам не нужно устанавливать никаких дополнительных пакетов. Просто нужно сделать некоторые настройки системы. Чтобы включить сервер OpenSSH в Mac OS X, откройте « Системные настройки» и нажмите «Общий доступ». Затем установите флажок «Удаленный вход в систему», чтобы включить 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"

После того, как ключ доступа создан на локальной гостевой машине, вам необходимо скопировать открытый ключ гостя в файл author_keys хоста. Вы можете сделать это с помощью простой команды Terminal, которая добавляет открытый ключ в список авторизованных ключей:

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

Это будет запускать синхронизацию каждые полчаса.

Вот пример скрипта 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()
8

Owncloud является возможным решением, если вы хотите доступ через Интернет.

Вам понадобится ваш собственный сервер для размещения Owncloud, однако это скорее серверное решение, где ваши 2 клиента могут получить доступ к тому, что им нужно, но будет только 1 копия рассматриваемого файла, которая будет расположена на Собственный облачный сервер.

4

Я недавно наткнулся на Syncthing. Много классных особенностей.

http://syncthing.net/

2

В Windows есть инструмент SyncToy , который делает это в три этапа. если Mac, речь идет об инструменте ChronSync или инструменте резервного копирования

2

Рассмотрим Унисон. Он обрабатывает двустороннюю синхронизацию файлов. Вы можете установить его по расписанию с cron или другого приложения для планирования.

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

Unison - это инструмент синхронизации файлов для Unix и Windows. Он позволяет хранить две копии набора файлов и каталогов на разных хостах (или разных дисках на одном хосте), изменять их отдельно, а затем обновлять, распространяя изменения в каждой реплике на другую.

Unison имеет ряд общих функций с такими инструментами, как пакеты управления конфигурацией (CVS, PRCS, Subversion, BitKeeper и т.д.), Распределенные файловые системы (Coda и т.д.), Утилиты однонаправленного зеркалирования (rsync и т.д.) И другие синхронизаторы. (Intellisync, согласовать и т.д.). Однако есть несколько моментов, в которых он отличается:

1

Мне повезло с GoodSync с двумя ПК в одной локальной сети, но я уверен, что в вашей ситуации это будет хорошо работать.

Вот их описание продукта:

  • GoodSync синхронизирует файлы между вашим компьютером, мобильными устройствами, FTP, SFTP, Amazon S3, Google Drive, SkyDrive, WebDAV, Azure.
  • GoodSync выполняет резервное копирование файлов на портативные диски, мобильные устройства и на FTP, S3, GDocs, SkyDrive, DAV или другой компьютер.
  • Прямая P2P-синхронизация: GoodSync Connect синхронизирует файлы напрямую между вашими компьютерами, без задержки, возникающей при синхронизации через сторонние серверы.
  • GoodSync очень быстр и синхронизирует файлы по вашей команде, периодически, по расписанию или в режиме реального времени (при изменении файла).

Вам нужно только настроить GoodSync на одном из ваших ПК; он обрабатывает двустороннюю синхронизацию, а настраиваемый тип синхронизации - настраиваемый. Кроме того, это настоятельно рекомендуется CNet.

1

Другое возможное решение - AeroFS.

AeroFS двунаправленно синхронизирует данные между вашими устройствами, сохраняя при этом только ваши данные на ваших устройствах - ваши данные никогда не проходят рядом с их серверами. AeroFS поддерживает историю изменений для ваших файлов, так что вы можете вернуться к предыдущим версиям, когда это необходимо, и предоставляет инструмент для разрешения конфликтов.

AeroFS работает на Windows, Mac, Linux, iOS и Android, так что вы должны быть в курсе.

0

Итак, если вы не против принципиально облачного хранилища, есть два аппаратных решения для внешних накопителей:

Космическая обезьяна использует интересную парадигму. Она выделяет часть вашего диска для хранения небольших фрагментов данных других людей, а также сохраняет ваши данные на множестве дисков других людей (зашифрованных, конечно). Таким образом, существует большая избыточность в случае аварии, и вашим машинам не нужно видеть друг друга или даже подключаться одновременно.

Транспортер файлов немного проще, поскольку данные синхронизируются только на других дисках файловых транспортеров, которые вы специально настроили для синхронизации.

Оба варианта хороши для больших объемов данных, и вы просто покупаете оборудование один раз без абонентской платы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .