Как синхронизировать домашнюю папку между несколькими компьютерами?

У меня есть три компьютера дома, и я хотел бы, чтобы дерево /home/ folder синхронизировалось между тремя.
Любые файлы / папки (кроме скрытых), которые изменяются / добавляются / удаляются на одном из трех компьютеров, обновляются в двух других.

Достаточно ли rsync для этого? и как?

Вот список вещей, которые могут потенциально решить эту проблему, каждый из которых балансирует компромиссы, которые вы должны сделать по-другому, поэтому вам придется сделать свой собственный выбор и попробовать все для себя:

  • Unison – как упоминалось другими, это выполняется вручную, но очень быстро, надежно и эффективно. Требуется одновременная синхронизация обеих машин. Он имеет приятный пользовательский интерфейс, позволяющий вам справляться с почти неизбежными конфликтами, а также отслеживать и правильно распространять удаления. Графическое приложение / пакет называется unison-gtk.

  • OwnCloud – запуск облачного хранилища на вашем собственном сервере. Вам понадобится машина, чтобы уйти. Требуется разумная настройка. Запускает полный сервер Apache 2 и базу данных SqlLite или MySQL на сервере. Работает аналогично Dropbox с настольным клиентом, но сервер находится под вашим контролем. Edit: OwnCloud недавно провела некоторые изменения в том, как выполняется проект, и теперь имеет новый полностью открытый исходный код (то есть не выпущенное издание с закрытым исходным кодом) под видом NextCloud (см. Это интервью с оригинальным разработчиком OwnCloud Больше подробностей).

  • SparkleShare – использует git для синхронизации файлов. Согласно домашней странице: хорошо для многих небольших файлов, не подходит для большого количества больших файлов, таких как музыка или сбор фотографий.

  • Seafile – предоставляет серверный компонент, который вы можете установить на локальном компьютере. Seafile использует модель данных, подобную git для отслеживания изменений. Обеспечивает синхронизацию клиентов для настольных компьютеров, планшетов и смартфонов. Сообщение в блоге, описывающее настройку, можно найти по адресу http://openswitch.org/blog/2013/07/18/installing-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-app – инструмент командной строки для шунтирующих файлов, основанный на git. Здесь есть иллюстративное пошаговое руководство: http://git-annex.branchable.com/walkthrough/

  • Tonido – бесплатное ПО. Предоставляет настольное приложение, которое будет обмениваться файлами с другими устройствами. Также предлагайте коммерческие предложения облаков и компьютер для подключения TonidoPlug.

  • BitTorrent Sync (freeware) – синхронизация одноранговых файлов на основе BitTorrent. Я не знаю много об этом, так как я не буду использовать его из-за того, что он не является открытым исходным кодом и не доверяет ему хранить мои данные в моей локальной сети, не стесняйтесь редактировать этот ответ с лучшей информацией / реальным опытом.

  • SyncThing – разработан как альтернатива с открытым исходным кодом для BitTorrent Sync. В настоящее время он не обладает некоторыми дополнительными функциями BitTorrent Sync, такими как ненадежные сверстники. Он находится в активном развитии.

  • Коммерческие размещенные сервисы, такие как dropbox, ubuntu one, google drive, apple iCloud, быстро дешевы и удобны, однако все они требуют доверия компании со всеми вашими данными и требуют достаточно быстрого подключения к Интернету.

  • Git / subversion. Используйте напрямую систему управления версиями. Полностью ручной и может быть немного сложным, но популярным подходом с некоторыми пользователями, знакомыми с этими системами, от использования их в качестве инструментов программирования.

  • CloudFS – синхронизация всей файловой системы, основанной на кластерной технологии

  • Крепление NFS – в основном ваш дом живет на одной машине, и вы получаете доступ к ней по сети, не рекомендуется для ноутбуков, которые вы берете с собой. Дополнительная информация: http://www.linuxjournal.com/article/4880


Факторы, которые необходимо учитывать при принятии решения:

  • Центральный сервер – для некоторых решений требуется, чтобы машина работала постоянно (или, по крайней мере, когда вам нужно синхронизировать) для других машин, с которыми необходимо синхронизировать. Это может быть одна из ваших существующих машин или отдельная машина, такая как NAS. Следите за увеличенными счетами за электроэнергию.

  • Автоматический / Ручной / Запланированный – лучший способ избежать конфликтов, в которых что-то изменилось больше, чем на машине, – это иметь программу на каждой машине, которая следит за изменениями и синхронизирует немедленно, таким образом, вы уменьшаете возможность в итоге с несколькими версии. При ручных процессах вы всегда должны помнить о синхронизации.

  • Удаленный доступ – вы хотите синхронизировать свою локальную сеть (ака домой), подумайте о последствиях для безопасности.

  • Безопасность – ваши данные покидают вашу сеть зашифрованными или нет, насколько безопасна передача между машинами. Что делать, если кто-то фиксирует ваши данные на ходу, а затем обнаружено, что шифрование имеет недостатки? Кто контролирует сервер, который хранит ваши данные, является ли данные enccrypted, вы можете доверять третьим сторонам? Вам нужно совать отверстия в маршрутизаторе, чтобы получить удаленный доступ. Как долго сохраняются «удаленные» файлы и связанные метаданные на синхронизированных устройствах и на центральном сервере. Вы синхронизируете между зашифрованным и незашифрованным хранилищем?

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

  • Емкость диска

  • Резервные копии – синхронизация не является резервной. Удалите важный файл по ошибке, и многие из вышеперечисленных случаев просто уничтожат все ваши другие копии. Я рекомендую прочитать статью Мата Хонана о том, чтобы быть взломанным, чтобы получить хороший отчет о том, что может произойти, если вы поместите все свои цифровые яйца в одну цифровую корзину, так сказать.


Я рекомендую не синхронизировать всю домашнюю папку, а вместо этого выбирать определенные папки для синхронизации, такие как Documents/ , Pictures/ и т. Д. Это позволит избежать боли, связанной с проблемами скорости / производительности / дискового пространства, автоматически синхронизируя все. Он также избегает необходимости вести списки исключений.

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

Рекомендации:

  • LinuxFormat – февраль 2014 г. LXF180 p31, «Хостинг для хранения данных»

взлом / все /

Unison может быть хорошим кандидатом:

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

Он уже выполняет двухстороннюю синхронизацию. См. Обновление ниже.

Я узнал, что rsync очень мало чего не может сделать, и он может, вероятно, обеспечить равное или лучшее решение, но вам придется ждать, когда эксперт rsync появится для этого решения.

Обновление: Да, Unison может синхронизировать более двух машин. Из их руководства пользователя :

Использование Unison для синхронизации более двух машин

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

Если вам нужно это сделать, самый надежный способ настройки – организовать машины в «звездную топологию», причем одна машина обозначается как «концентратор», а остальные – «спицы», а каждая синхронизация на спицевом компьютере Только с центром. Большим преимуществом звездной топологии является то, что она исключает возможность запутывания «ложных конфликтов», возникающих из-за того, что отдельный архив поддерживается Unison для каждой пары хостов, которые он синхронизирует.

  • Я не могу загрузить Ubuntu после установки Windows 7
  • Windows 10 linux bash shell ctrl + space не устанавливает отметку в Emacs
  • Ошибка: нет такого раздела. Аварийное спасение
  • Как установить gvim на Ubuntu 10.10?
  • Изменить параметры (pager) по умолчанию
  • Требовать место для раздела из другого раздела поблизости?
  • Как узнать, из какого пакета Ubuntu или Debian поставляется пакет?
  • Как мне разделить диск на двойную загрузку между Windows 7 и Ubuntu?
  • Cant скачать 15 000 файлов через ssh linux
  • Лучший подход к двойной загрузке и клонированию HP Pavillion
  • Как изменить цвет изображения в GIMP
  • Давайте будем гением компьютера.