Как синхронизировать всю Ubuntu?

Я думаю, что пришло время синхронизировать весь Ubuntu так же, как моя папка Dropbox.

Учитывая, что мы всегда говорим о файлах и каталогах, в чем разница между моей папкой Documents и моей системной директорией /usr? Почти ничего, кроме их местоположения.

На самом деле, я думаю, что есть только одна большая проблема, которая мешает людям отображать свои любимые установки, куда бы они ни шли: символические ссылки .

Dropbox, Google Drive, Ubuntu One, Sugarsync, Skydrive, ни один из этих сервисов не поддерживает символьные ссылки. Это означает, что если я помещаю символическую ссылку в одну из синхронизированных папок, локально символическая ссылка сохраняется как есть, но удаленно (в облаке или на других синхронизированных машинах) символическая ссылка преобразуется в фактический файл, на который первоначально указывался.

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

Итак, вопрос: Кто-нибудь знает способ достижения полностью синхронизированной Ubuntu, всегда синхронизируемой с удаленной копией, но сохраняемой локально на обоих дисках?

Мой лучший Я предполагаю, что я мог бы использовать NFS . Но основное различие между Dropbox и NFS состоит в том, что NFS - это удаленная файловая система, которая всегда заставляет удаленно обращаться к файлам, в то время как Dropbox вносит изменения в локальные файловые системы (и, следовательно, будет работать лучше). Я также слышал о кешировании NFS. Кто-нибудь знает, может ли это решение приблизиться к Dropbox в этом смысле?

P.s. Я знаю, что /boot, /dev, /proc, /run, /tmp и специфичные для устройства точки монтирования в /mnt и /media должны быть исключены из механизма синхронизации. Меня интересует принцип . Может ли это быть сделано с разумной производительностью, с разумными ресурсами (например, пропускная способность загрузки ~ 1 Мбит / с и общедоступный IP-адрес)?

2
задан 11 October 2012 в 13:58

2 ответа

Я склоняюсь к тому, что вы открываете здесь немного ящик пандоры.

  • Как вы справляетесь с различными архитектурами? Некоторые части файловой системы последовательно включают архитектуру как часть пути (/usr/lib/x86_64-linux-gnu и друзья), но я не думаю, что это применимо везде, и в любом случае вам придется определить, какие символические ссылки (и жесткие ссылки) следует скопировать и которые являются специфическими для архитектуры.

  • Как вы обнаруживаете, когда важные файлы изменены? Следует ли перезапустить программу, если двоичный файл заменен или файлы конфигурации обновлены? Некоторые обнаружат такие изменения с помощью inotify, некоторые нет. Если вы просто синхронизируете файлы во время работы системы, трудно понять, какие процессы могут быть затронуты. (Вы можете посмотреть в списках файлов apt или в открытых дескрипторах файлов, но все равно будут крайние случаи). (Подумайте, что произойдет, если ваш механизм синхронизации заменит libc или что-то подобное).

Я склонен думать, что удаленное управление (например, с использованием puppet или механизма синхронизации Ubuntu apt) более подходит, чем непрерывная синхронизация всего образа машины.

Вероятно, вы должны включить /var в файлы, которые не нужно синхронизировать (объединенные журналы из нескольких систем, кажется, не имеют большого смысла).

0
ответ дан 11 October 2012 в 13:58

http://www.howtoforge.com/setting-up-unison-file-synchronization-between-two-servers-on-ubuntu-11.10

Этот туториал покажет, как настроить синхронизацию файлов между двумя серверами Ubuntu 11.10 с помощью Unison . Unison - это инструмент синхронизации файлов, похожий на rsync , но большая разница в том, что он отслеживает / синхронизирует изменения в обоих направлениях, то есть файлы, измененные на сервере1, будут реплицироваться на сервер2 и наоборот.

0
ответ дан 11 October 2012 в 13:58

Другие вопросы по тегам:

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