2009-08-28 18:10:40 +0000 2009-08-28 18:10:40 +0000
121
121

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

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

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

Ответы (14)

97
97
97
2014-01-18 17:52:37 +0000

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

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

  • OwnCloud - Облачное хранилище работает на вашем собственном сервере. Вам понадобится машина, чтобы оставить ее включенной. Требуется разумная настройка. Запускается полный веб-сервер Apache 2 и база данных SqlLite или MySQL на сервере. Работает аналогично Dropbox с десктопным клиентом, но сервер находится под вашим контролем. Правка : OwnCloud недавно претерпел некоторые изменения в том, как запущен проект, и теперь у него есть новый полностью открытый исходный код (т.е. нет закрытой версии ‘enterprise’) под видом NextCloud , (см. это youtube интервью с оригинальным разработчиком 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 - написан на питоне, использует git для хранения и обмена изменениями между машинами, и XMPP для обмена изменениями.

  • git-annex - инструмент командной строки для шунтирования файлов вокруг, основанный на git'е. Здесь есть иллюстративный обзор: http://git-annex.branchable.com/walkthrough/

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

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

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

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

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

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

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


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

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

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

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

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

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

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

  • Резервные копии - синхронизация не является резервным копированием. Удалите важный файл по ошибке, и многие из вышеперечисленных файлов забавно удалят все остальные копии. Я рекомендую прочитать статью Mat Honan’s piece on being hacked для хорошего понимания того, что может произойти, если вы положите все ваши цифровые яйца в одну цифровую корзину, так сказать.


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

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

Ссылки:

  • LinuxFormat - февраль 2014 LXF180 p31, “Hosted Storage Roundup”

hacking/all/

19
19
19
2009-08-29 22:07:36 +0000

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

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

Удачи


Обновление : Хорошим побочным эффектом работы с git'ом является то, что легко иметь файлы для конкретного компьютера, так как для этого компьютера вам нужно только иметь ветку (а в git'е вы получаете её по умолчанию). Так что вам не нужно иметь одинаковые файлы на всех компьютерах, они должны быть только похожими, а также иметь общее “главное” ответвление с тем, что вам нужно на всех компьютерах.

6
6
6
2009-08-29 09:43:00 +0000

Ваша основная проблема при попытке сделать это - это решить, как объединить изменения, распространить удаление и разрешить конфликты. Это сложно сделать полностью автоматизированным способом, особенно если у вас есть 3 компьютера, которыми пользуются несколько человек.

Если вы разделяете пользователей, все становится намного проще. Потому что один пользователь не может находиться в двух местах одновременно (и, следовательно, генерировать конфликты), вы можете настроить работу rsync для запуска при входе в систему, чтобы “получить изменения” и выходе из системы, чтобы “подтолкнуть изменения” … к одному из ваших компьютеров, который будет хозяином … так что на этом уровне детализации вы будете синхронизировать /home/myuser каждый раз, а не весь /home/. Дополнительным уточнением (в случае, если люди не выходят из системы) будет запуск скрипта push после короткого периода бездействия.

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

5
5
5
2010-06-11 20:05:12 +0000

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

4
4
4
2010-06-11 21:20:04 +0000

Проверьте lsyncd

Lsyncd следит за интерфейсом монитора событий деревьев локальных каталогов (inotify или fsevents). Он агрегирует и объединяет события на несколько секунд, а затем запускает один (или несколько) процесс(ы) для синхронизации изменений. По умолчанию это rsync. Таким образом, Lsyncd - это легкое решение на основе живого зеркала, которое сравнительно просто установить, не требуя новых файловых систем или блочных устройств, и не мешает работе локальной файловой системы.

Rsync+ssh - это продвинутая конфигурация действий, которая использует SSH для действий с файлами и каталогами, перемещаемыми непосредственно на цель, вместо того, чтобы повторно передавать место назначения перемещения по проводу.

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

4
4
4
2009-08-28 18:34:44 +0000

Это не даст полного решения, но даст вам старт:

Настройте задание cron так часто, чтобы синхронизировать файлы. Я использую следующую команду:

rsync -alhz --stats --progress --exclude-from '/etc/rsync_backup_excludes.conf' / -e ssh user@10.10.0.1:/path/to/home/

Это позволит использовать rsync только для копирования необходимых изменений, а не для повторного копирования всего при каждом запуске команды.

–stats и –progress необязательны и, вероятно, должны быть исключены из ваших сценариев

содержимое моего файла rsync__backup_excludes.conf is:

dev/*
proc/*
lost+found/*
mnt/*
sys/*
2
2
2
2011-08-24 23:57:12 +0000

Установите /home с одного компьютера на два других. Автоматическое крепление работает довольно хорошо для этого.

2
2
2
2009-08-28 18:41:17 +0000

Взгляните на дропбокс http://www.getdropbox.com/ Кросс-платформа Win / Linux / Mac

1
1
1
2009-08-29 11:11:32 +0000

Ubuntu One может быть то, что ты ищешь. К сожалению, он все еще в бета-фазе, и у меня нет никакого опыта работы с ним, так что я не уверен, что он будет работать на вас.

1
1
1
2009-08-29 21:38:15 +0000

Если вы также хотите синхронизировать конфиг - инструменты, упомянутые выше, абсолютно беспомощны: конфиг часто меняется, и многие лог-файлы вызывают конфликты, поэтому их нельзя объединить.
Мой обман прост и глуп :) У меня есть Мастер-станция, и все файлы с “~” просто копируются на вторую “Slave”. В тот момент, когда я понимаю, что мне нужно что-то изменить - я делаю это на Мастере, и Slave ловит эти изменения при синхронизации.

Также, некоторые bash скрипты должны работать на этих машинах по-другому, поэтому я отредактировал свой /etc/bash.bashrc:

export OOHOST=Master

Теперь скрипты знают, какой хост они обслуживают ;)

1
1
1
2012-03-22 11:47:19 +0000

Попробуйте dvcs-autosync .

Это основано на git'е, использует XMPP для уведомления подключённых клиентов об изменении файлов и реагирует на события изменения файлов через изменения в коде. Поэтому он всегда получает информацию сразу после изменения файла, а в случае конфликтов полагается на проверенные методы работы git'а.

я использую его уже некоторое время в качестве замены Dropbox через публичные SSH ключи, и он действительно выполняет эту работу.

0
0
0
2011-03-02 14:02:40 +0000

Обходные пути, которые я рассмотрю:

  • Дропбокс.
    Основные недостатки: он не бесплатен для любого разумного объема данных. В противном случае он работает безупречно IMHO

  • NAS-сервер. Положите свои файлы на NAS-сервер, они стали доступными по разумной цене в последнее время (от 150 $ или около того) и хороший не потребляет много энергии. Никаких проблем с синхронизацией.
    Главный недостаток: медленнее, чем локальная копия.

0
0
0
2011-03-02 13:47:07 +0000

Я использую SyncTwoFolders для Mac и Syncback для PC - первый для моих трех макросов дома (включая ноутбук), а второй - для моего PC на работе. Обе программы имеют различные опции резервного копирования и синхронизации, что делает это легкой задачей после установки предустановленных настроек. Легко! Я уверен, что существуют и другие версии аналогичного программного обеспечения для Linux и Ubuntu.

0
0
0
2013-08-18 14:28:59 +0000

Вы можете использовать сценарий синхронизации, например, osync, который может распространять удаленные файлы и обновлять только измененные файлы http://www.netpower.fr/osync osync основан на rsync, но может обрабатывать множество сценариев синхронизации между локальными папками или удаленными через ssh.

Похожие вопросы

6
10
5
37
3