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

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

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

Являетсяrsyncдостаточно для этого? и как?

решение1

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

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

  • OwnCloud- Облачное хранилище, работающее на вашем собственном сервере. Вам понадобится машина, на которой вы сможете работать. Требует разумного объема настройки. Запускает полноценный веб-сервер Apache 2 и базу данных SqlLite или MySQL на сервере. Работает аналогично Dropbox с настольным клиентом, но сервер находится под вашим контролем. edit: OwnCloud недавно претерпел некоторые изменения в том, как работает проект, и теперь имеет новый полностью открытый исходный код (т. е. не закрытый исходный код «enterprise» edition) под видомNextCloud, (видеть этоинтервью на ютубе(За более подробной информацией обратитесь к оригинальному разработчику OwnCloud).

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

  • Сифайл- Предоставляет серверный компонент, который можно установить на локальной машине. Seafile использует модель данныхпохоже на гитдля отслеживания изменений. Предоставляет синхронизирующие клиенты для настольных компьютеров, планшетов и смартфонов. Запись в блоге, описывающую настройку, можно найти по адресуhttp://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/

  • Осинк- "... двунаправленный инструмент синхронизации файлов, написанный на bash и основанный на rsync. Он работает в локальных и/или удаленных каталогах через туннели ssh. Он в основном предназначен для запуска в качестве задачи cron" (текст с веб-сайта)

  • PowerFolder- проект GPL v2 на основе Java. Основной сайт продвигает коммерческие предложения, поэтому неясно, как использовать предоставленный файл .jar.

  • Rsync- быстрый и эффективный, существует уже десятки лет, однако не сохраняет историю, поэтому вам нужно выбрать направление, чтобы решить, является ли файл новым или удаленным. Доступны графические инструменты, такие какgwRsync.

  • Lsyncd- отслеживает папки/файлы для запуска репликации rsync

  • dvcs-автосинхронизация- написан на Python, использует git для хранения и обмена изменениями между машинами и XMPP для передачи изменений.

  • git-приложение- инструмент командной строки для перемещения файлов, основанный на git. Вот наглядное пошаговое руководство:http://git-annex.branchable.com/walkthrough/

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

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

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

  • Коммерческие хостинговые сервисы, такие как Dropbox, Ubuntu One, Google Drive, Apple iCloud, — все это быстрые, дешевые и удобные сервисы, однако все они требуют доверить компании все свои данные и требуют достаточно быстрого подключения к Интернету.

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

  • CloudFS- синхронизировать всю файловую систему на основе кластерной технологии

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


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

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

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

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

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

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

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

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


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

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

Использованная литература:

  • LinuxFormat - февраль 2014 г. LXF180 стр. 31, «Обзор размещенных хранилищ»

взлом/все/

решение2

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

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

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

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

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

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

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

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

решение3

А как насчет того, чтобы поместить свои файлы в систему контроля версий, например SubVersion или git?

Я не версионирую весь свой домашний каталог, а только несколько подкаталогов с некоторыми важными вещами. Но я думаю о переходе на git, так как он, похоже, лучше подходит для такого рода работы. (быстрый поиск направит вас в правильном направлении).

Удачи


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

решение4

Я думаю, что вы можете добиться желаемого лучше, смонтировав общую домашнюю папку по NFS. Ознакомьтесь с этой статьейhttp://www.linuxjournal.com/article/4880

Связанный контент