Синхронизировать каталог между OSX и Ubuntu
Мне нужен хороший способ синхронизировать каталог между моим ноутбуком OSX 10.6 и моим Ubuntu Desktop. Dropbox, очевидно, был бы отличным выбором, однако каталог, который мне нужно синхронизировать, принадлежит root на обеих машинах, и исправление разрешений могло бы испортить ситуацию, с которой я столкнулся. Я думал о том, чтобы просто написать свой собственный скрипт с использованием rsync (что действительно было бы забавно), но мне интересно, возможно, есть что-то более надежное. Я слышал об Унисон, но я не очень много знаю об этом. Будет ли это хорошим вариантом для меня, или вы можете придумать что-то лучше? Спасибо!
3 ответа
Два простых ответа (и то же, что вы уже упоминали):
Унисон, если вы хотите что-то, что "просто работает". Имеет приятный графический интерфейс, и вы можете легко определить задачу и вызвать из командной строки скрипт,
cron
, без разницы. Я использую его для синхронизации моего ноутбука и моей жены с нашими соответствующими каталогами пользователей на рабочем столе. Это действительно так просто.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
демон, что позволяет анонимный доступ. Очевидно, что это обходит разрешения, но моей реальной потребностью было создание определенного набора владельцев и разрешений на принимающей стороне, а не защита исходной стороны.