Синхронизировать каталог между OSX и Ubuntu

Мне нужен хороший способ синхронизировать каталог между моим ноутбуком OSX 10.6 и моим Ubuntu Desktop. Dropbox, очевидно, был бы отличным выбором, однако каталог, который мне нужно синхронизировать, принадлежит root на обеих машинах, и исправление разрешений могло бы испортить ситуацию, с которой я столкнулся. Я думал о том, чтобы просто написать свой собственный скрипт с использованием rsync (что действительно было бы забавно), но мне интересно, возможно, есть что-то более надежное. Я слышал об Унисон, но я не очень много знаю об этом. Будет ли это хорошим вариантом для меня, или вы можете придумать что-то лучше? Спасибо!

3 ответа

Два простых ответа (и то же, что вы уже упоминали):

  1. Унисон, если вы хотите что-то, что "просто работает". Имеет приятный графический интерфейс, и вы можете легко определить задачу и вызвать из командной строки скрипт, cron, без разницы. Я использую его для синхронизации моего ноутбука и моей жены с нашими соответствующими каталогами пользователей на рабочем столе. Это действительно так просто.

  2. rsync если вы хотите контролировать (почти) каждый аспект. Существует множество аргументов, которые позволяют вам уважать, изменять или закрывать разрешения, входить в число по номеру или по имени и т. Д. На самом деле редко возникает необходимость в полном сценарии; обычно вам нужно только найти (методом проб и ошибок) наилучшую комбинацию аргументов.

Довольно хорошая кросс-платформенная (MacOS, Linux, Win и т. д., существуют приложения для iOS, Android) система с открытым исходным кодом, обеспечивающая двунаправленную синхронизацию файлов и каталогов, — это SyncThing — она обеспечивает непрерывную синхронизацию файлов между двумя или более компьютерами в реальном времени . время.

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

Если вы хотите чисто фоновое решение, которое происходит автоматически (например, из cron) и имеет чисто одностороннюю синхронизацию, rsync может быть лучше. Unison хранит исчерпывающие метаданные (в ~/.unison) который вам не нужен, если вы делаете одностороннюю синхронизацию.

Тот факт, что оба конца принадлежат пользователю root, значительно усложняет, используете ли вы rsync или унисон. Вам нужно будет использовать sudo в пункте назначения, чтобы получить доступ для записи, но вы не хотите быть ssh-вхождение в источник как корень. Если источник доступен для чтения всем, вы можете сделать это, запустив sudo rsync на месте назначения и давая явного пользователя без полномочий root для источника (user@host:...). Обратите внимание, что вы можете использовать аутентификацию с открытым ключом и настроить authorized_keys файл так, чтобы только rsync может быть использован с этим ключом.

В одной ситуации я решил эту проблему, экспортировав весь каталог с rsync демон, что позволяет анонимный доступ. Очевидно, что это обходит разрешения, но моей реальной потребностью было создание определенного набора владельцев и разрешений на принимающей стороне, а не защита исходной стороны.

Другие вопросы по тегам