У меня дома три компьютера, и я хотел бы /home/
синхронизировать дерево папок между ними.
Любые файлы / папки (кроме скрытых), которые были изменены / добавлены / удалены на одном из трех компьютеров, обновляются на двух других.
rsync
Достаточно ли для этого? и как?
Ответы:
Вот список вещей, которые потенциально могут решить эту проблему, каждый из которых уравновешивает компромиссы, которые вы должны сделать, по-своему, поэтому вам придется самим выбирать и пробовать сами:
Унисон - как уже упоминалось другими, это выполняется вручную, но очень быстро, надежно и эффективно. Требуется, чтобы обе синхронизируемые машины были включены одновременно. Он имеет приятный пользовательский интерфейс, позволяющий вам справляться с почти неизбежными конфликтами, а также правильно отслеживает и распространяет удаления. Графическое приложение / пакет называется unison-gtk.
OwnCloud - Облачное хранилище запускается на вашем собственном сервере. Вам понадобится машина, чтобы оставить на. Требуется разумное количество настроек. Запускает полноценный веб-сервер Apache 2 и базу данных SqlLite или MySQL на сервере. Работает аналогично Dropbox с настольным клиентом, но сервер находится под вашим контролем. редактирование: OwnCloud недавно претерпел некоторые изменения в том, как выполняется проект, и теперь имеет новый полностью открытый исходный код (то есть, нет корпоративной версии с закрытым исходным кодом) под видом NextCloud (см. это интервью на YouTube с оригинальным разработчиком OwnCloud Больше подробностей).
SparkleShare - использует git для синхронизации файлов. Согласно домашней странице: хорошо для многих небольших файлов, не подходит для большого количества больших файлов, таких как музыка или коллекция фотографий.
Seafile - предоставляет серверный компонент, который вы можете установить на локальный компьютер. Seafile использует модель данных, аналогичную git, для отслеживания изменений. Обеспечивает синхронизацию клиентов для настольных компьютеров, планшетов и смартфонов. Сообщение в блоге, описывающее установку, можно найти по адресу http://openswitch.org/blog/2013/07/18/install-and-configuring-seafile-on-ubuntu-12-dot-04/.
Osync - «... инструмент двунаправленной синхронизации файлов, написанный на bash и основанный на rsync. Он работает с локальными и / или удаленными каталогами через туннели ssh. Он в основном предназначен для запуска в качестве задачи cron» (текст с сайта)
PowerFolder - проект GPL v2 на основе Java. Основной веб-сайт выдвигает коммерческие предложения, поэтому неясно, как использовать предоставленный файл .jar.
Rsync - быстрая и эффективная система, существующая десятилетиями, однако она не сохраняет историю, поэтому вам нужно выбрать направление, чтобы решить, является ли файл новым или удаленным. Доступны графические инструменты, такие как gwRsync .
Lsyncd - отслеживает папки / файлы для запуска репликации rsync
dvcs-autosync - написан на python, использует git для хранения и обмена изменениями между машинами и XMPP для передачи изменений.
git-annex - инструмент командной строки для шунтирования файлов, основанный на git. Здесь есть иллюстративное руководство: http://git-annex.branchable.com/walkthrough/
Тонидо - бесплатная. Предоставляет настольное приложение, которое будет обмениваться файлами с другими устройствами. Также предоставьте коммерческие облачные предложения и подключаемый компьютер TonidoPlug.
BitTorrent Sync (бесплатная) - синхронизация файлов между равноправными узлами на основе BitTorrent. Я не знаю много об этом, потому что я не буду использовать его, потому что он не является открытым исходным кодом и не доверяет ему хранить мои данные в моей локальной сети, не стесняйтесь редактировать этот ответ с лучшей информацией / реальным опытом.
SyncThing - Разработан как альтернатива BitTorrent Sync с открытым исходным кодом. В настоящее время в нем отсутствуют некоторые расширенные функции BitTorrent Sync, такие как ненадежные одноранговые узлы. Он находится в стадии активной разработки.
Коммерческие хостинговые сервисы, такие как dropbox, ubuntu one, google drive, apple iCloud - все это быстро, дешево и удобно, однако все они требуют доверия компании со всеми вашими данными и достаточно быстрого интернет-соединения.
Git / Subversion - используйте систему контроля версий напрямую. Полностью ручной и может быть немного сложным, но популярным подходом для некоторых пользователей, знакомых с этими системами, используя их в качестве инструментов программирования.
CloudFS - синхронизировать всю файловую систему, основанную на кластерной технологии
Монтирование NFS - в основном ваш дом живет на одной машине, и вы получаете к нему доступ по сети, что не подходит для ноутбуков, которые вы берете с собой. Дополнительная информация: http://www.linuxjournal.com/article/4880
Факторы, которые необходимо учитывать при принятии решения:
Центральный сервер - некоторые решения требуют, чтобы машина была включена постоянно (или, по крайней мере, когда вам нужно синхронизировать), чтобы другие машины синхронизировались с ней. Это может быть одна из ваших существующих машин или отдельная машина, такая как NAS. Следите за увеличением счетов за электроэнергию.
Автоматически / вручную / по расписанию. Лучший способ избежать разрешения конфликтов, когда что-то меняется не только на машине, - это иметь на каждом компьютере программу, которая отслеживает изменения и сразу же синхронизируется, таким образом, вы уменьшаете возможность появления нескольких версии. С ручными процессами вы всегда должны помнить, чтобы запустить синхронизацию.
Удаленный доступ - хотите ли вы синхронизироваться вне вашей локальной сети (также как дома), подумайте о последствиях безопасности для этого.
Безопасность - делает ваши данные зашифрованными в вашей сети или нет, насколько безопасна передача между компьютерами. Что если кто-то захватит ваши данные на ходу, и позже обнаружится, что шифрование имеет недостатки? Кто контролирует сервер, на котором хранятся ваши данные, зашифрованы ли эти данные, можете ли вы доверять третьим сторонам? Нужно ли тыкать в свой роутер, чтобы получить удаленный доступ. Как долго хранятся «удаленные» файлы и связанные метаданные на синхронизированных устройствах и на центральном сервере. Вы синхронизируете между зашифрованным и незашифрованным хранилищем?
Перемещение больших папок - все решения, которые я попробовал, имеют проблему, заключающуюся в том, что когда вы перемещаете / переименовываете файл или папку, синхронизация не понимает этого и загружает все заново как новую, а затем удаляет старую копию. Пожалуйста, помогите, отметив любые вышеупомянутые решения, которые могут справиться с этим (я подозреваю, что решения на основе git делают, поскольку git не страдает от этого из-за адресации на основе контента, которую он использует, но не знаю точно, так как я еще не использовал их).
Емкость диска
Резервные копии - синхронизация не является резервной копией. Удалите важный файл по ошибке, и многие из вышеперечисленного удалят все ваши другие копии. Я рекомендую прочитать статью Мэта Хонана о том, как ее взломали, чтобы понять, что может произойти, если вы, так сказать, положите все свои цифровые яйца в одну цифровую корзину.
Я рекомендую не синхронизировать всю домашнюю папку, а вместо этого выбирать определенные папки для синхронизации, такие как
Documents/
иPictures/
т. Д. Это избавит вас от необходимости сталкиваться с проблемами скорости / производительности / дискового пространства при автоматической синхронизации всего. Это также избавляет от необходимости вести списки исключений.Поскольку я продолжаю пытаться найти что-то, что работает для меня лично, я постараюсь обновлять этот ответ с полезной информацией. Я собрал информацию из всех других ответов в один полный ответ.
Рекомендации:
взлом / все /
источник
Унисон может быть хорошим кандидатом:
Он уже выполняет двухстороннюю синхронизацию. Смотрите обновление ниже.
Я узнал, что существует очень мало вещей, которые rsync не может сделать, и он, вероятно, может предоставить такое же или лучшее решение, но вам придется подождать, пока эксперт rsync не найдет это решение.
Обновление: да, Unison может синхронизировать более 2 машин. Из их руководства пользователя :
источник
Как насчет размещения ваших файлов в системе контроля версий, такой как SubVersion или git?
Я не делаю версию всего моего домашнего каталога, а только несколько дочерних с некоторыми важными вещами. Но я думаю о переходе на git, так как это кажется лучше для этого типа работы. ( быстрый поиск отправит вас в правильном направлении ).
Удачи
Обновление . Приятным побочным эффектом git является то, что файлы, специфичные для компьютера, легко получить, поскольку вам нужна только ветвь для этого компьютера (а в git вы получаете это по умолчанию). Таким образом, вам не нужно иметь одинаковые файлы на всех компьютерах, они должны быть похожими и иметь общую «основную» ветвь с вещами, которые вы хотите на разных компьютерах.
источник
Ваша главная проблема при попытке сделать это - решить, как объединить изменения, распространить удаления и разрешить конфликты. Это трудно сделать полностью автоматизированным способом, особенно если у вас есть 3 компьютера, которыми пользуются несколько человек.
Если вы разделяете пользователей, все становится намного проще. Поскольку один пользователь не может находиться в двух местах одновременно (и, следовательно, генерировать конфликты), вы можете настроить задание rsync для запуска при входе в систему, чтобы «получать изменения» и выходить из системы, чтобы «выдвигать изменения» ... на одном из ваших компьютеров, который будет хозяином ... так что на этом уровне детализации вы будете синхронизировать / home / myuser каждый раз, а не весь / home /. Дополнительным уточнением (в случае, если люди не выходят из системы) будет запуск сценария push после короткого периода бездействия.
Есть много других потенциальных решений, но, насколько я знаю, ни одно волшебное решение этой проблемы. Первый шаг - это, вероятно, подумать о том, как вы используете машины, и придумать политику синхронизации в соответствии с поведением вашего пользователя.
источник
Я думаю, что вы можете добиться того, чего хотите лучше, с помощью NFS, монтирующей общую домашнюю папку. Проверьте эту статью http://www.linuxjournal.com/article/4880
источник
Это не совсем даст решение, но даст вам начало:
Время от времени настраивайте работу cron для повторной синхронизации файлов. Я использую команду как следующее:
Это будет использовать rsync только для копирования необходимых изменений, а не для повторного копирования всех при каждом запуске команды.
--stats и --progress не обязательны и, вероятно, должны быть исключены из ваших сценариев
содержимое моего файла rsync_backup_excludes.conf:
источник
Проверьте lsyncd
источник
Взгляните на dropbox http://www.getdropbox.com/ Кроссплатформенный Win / Linux / Mac
источник
Смонтировать
/home
с одного компьютера на два других. Automount работает довольно хорошо для этого.источник
Ubuntu One может быть тем, что вы ищете. К сожалению, он все еще находится в бета-фазе, и у меня нет опыта работы с ним, поэтому я не уверен, будет ли он работать для вас.
источник
Если вы также хотите синхронизировать конфиги - упомянутые выше инструменты совершенно беспомощны: конфиги часто меняются, и многие лог-файлы создают конфликты, поэтому их невозможно объединить.
Мое заблуждение простое и глупое :) У меня есть рабочая станция Master, и все файлы из "~" просто копируются на второй "Slave". В тот момент, когда я понимаю, что мне нужно что-то изменить - я делаю это на Master, и Slave синхронизирует эти изменения.
Кроме того, некоторые bash-скрипты должны работать по-разному на этих машинах, поэтому я отредактировал мой /etc/bash.bashrc:
Теперь сценарии знают, какой хост они обслуживают;)
источник
Попробуйте dvcs-autosync .
Он основан на git, использует XMPP для уведомления подключенных клиентов об изменениях файлов и реагирует на события изменения файлов посредством изменений inode. Поэтому он всегда получает информацию сразу после изменения файла, в случае конфликтов он использует проверенные методы git.
Я использовал его некоторое время в качестве замены Dropbox через открытые ключи SSH, и он действительно делает свою работу.
источник
PowerFolder - Синхронизация файлов, папок синхронизации, удаленного хранилища, резервного копирования и общего доступа к файлам. Синхронизируйте домашний и офисный ПК, обменивайтесь фотографиями из отпуска или работайте вместе над документами. Безопасная одноранговая технология PowerFolder работает через Интернет или локальную сеть.
источник
Обходные пути я бы рассмотрел:
Dropbox.
Основные недостатки: это не бесплатно для любого разумного количества данных. В остальном работает ИМХО без нареканий
NAS-сервер. Поместите свои файлы на сервер NAS, в последнее время они стали достаточно доступными (от 150 долларов или около того), а хороший не потребляет много энергии. Никаких проблем с синхронизацией никогда.
Главный недостаток: медленнее, чем локальная копия
источник
Я использую SyncTwoFolders для Mac и Syncback для ПК - первый для моих трех компьютеров дома (включая ноутбук), а второй для моего ПК на работе. Обе программы имеют различные опции резервного копирования и синхронизации, что делает это легким делом после настройки предустановок. Очень просто! Я уверен, что есть другие версии аналогичного программного обеспечения для Linux и Ubuntu.
источник
Вы можете использовать скрипт синхронизации, такой как osync, который может распространять удаленные файлы и обновлять только измененные. http://www.netpower.fr/osync osync основан на rsync, но может обрабатывать множество сценариев синхронизации между локальными или удаленными папками через ssh.
источник