3

У меня есть два ноутбука Mac и сервер Debian, у каждого из которых есть каталог, который я хотел бы синхронизировать между ними. Решение должно соответствовать следующим критериям (в грубом порядке важности):

  • Он не должен использовать какие-либо сторонние службы (например, Dropbox, SugarSync, Google и т.д.). Это не включает установку дополнительного программного обеспечения (если оно бесплатное).
  • Это не должно требовать, чтобы я использовал определенные каталоги или изменил мой способ хранения вещей. (Dropbox делает это IIRC)
  • Он должен работать во всех направлениях (изменения, внесенные в /any / machine, должны быть перенесены в другие)
  • Все отправленные данные должны быть зашифрованы (у меня уже настроены пары ключей ssh)
  • Он должен работать, даже когда не все машины доступны (изменения должны быть переданы на машину, когда она снова подключится)
  • Он должен работать, даже если каталоги / на некоторых машинах недоступны (они могут храниться на образах дисков, которые не всегда будут смонтированы)
    • Это может быть решено для Mac с помощью launchd для автоматического запуска и уничтожения (или каким-либо образом изменения поведения) любого демона, используемого для синхронизации, когда образы монтируются и отключаются.
  • Он должен быть немедленным (используя систему, основанную на событиях, а не периодическую, такую как cron)
  • Он должен быть гибким (если будет добавлено больше машин, я смогу легко их включить)

У меня также есть некоторые предпочтения, которые я хотел бы выполнить, но не обязательно:

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

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


Что я пробовал, и почему это не сработало:

  • rsync и lsyncd не поддерживают двунаправленную синхронизацию
  • csync2 предназначен для кластеров серверов и не работает с машинами с динамическими IP-адресами.
  • DRBD (предложенный amotzg) включает в себя установку модуля ядра и не работает на системах под управлением OS X

1 ответ1

1

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

Sparkleshare

Я считаю sparkleshare очень аккуратным решением. Он кроссплатформенный, обеспечивает интеграцию с графическим интерфейсом / уведомление и т.д. Так же, как Dropbox, но размещается самостоятельно. Единственное, что вам нужно, это центральный Git-репозиторий на каком-либо сервере.

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

Я думаю, тогда есть только одно требование: поддержка жестких ссылок. Использование Git в sparkleshare предотвращает это - см. Git и жесткие ссылки. Если вам действительно это нужно, это может быть блокировщик.

Git-приложение помощник

Вы также можете принять участие в другом аналогичном проекте, все еще находящемся на ранней стадии разработки: git-annex assistant. Поскольку он использует Git-приложение, он может преодолеть ограничение обнаружения жестких ссылок.

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