Я думаю, что пришло время синхронизировать весь 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-адрес)?
Я склоняюсь к тому, что вы открываете здесь немного ящик пандоры.
Как вы справляетесь с различными архитектурами? Некоторые части файловой системы последовательно включают архитектуру как часть пути (/usr/lib/x86_64-linux-gnu
и друзья), но я не думаю, что это применимо везде, и в любом случае вам придется определить, какие символические ссылки (и жесткие ссылки) следует скопировать и которые являются специфическими для архитектуры.
Как вы обнаруживаете, когда важные файлы изменены? Следует ли перезапустить программу, если двоичный файл заменен или файлы конфигурации обновлены? Некоторые обнаружат такие изменения с помощью inotify, некоторые нет. Если вы просто синхронизируете файлы во время работы системы, трудно понять, какие процессы могут быть затронуты. (Вы можете посмотреть в списках файлов apt
или в открытых дескрипторах файлов, но все равно будут крайние случаи). (Подумайте, что произойдет, если ваш механизм синхронизации заменит libc
или что-то подобное).
Я склонен думать, что удаленное управление (например, с использованием puppet
или механизма синхронизации Ubuntu apt
) более подходит, чем непрерывная синхронизация всего образа машины.
Вероятно, вы должны включить /var
в файлы, которые не нужно синхронизировать (объединенные журналы из нескольких систем, кажется, не имеют большого смысла).
http://www.howtoforge.com/setting-up-unison-file-synchronization-between-two-servers-on-ubuntu-11.10
Этот туториал покажет, как настроить синхронизацию файлов между двумя серверами Ubuntu 11.10 с помощью Unison . Unison - это инструмент синхронизации файлов, похожий на rsync , но большая разница в том, что он отслеживает / синхронизирует изменения в обоих направлениях, то есть файлы, измененные на сервере1, будут реплицироваться на сервер2 и наоборот.