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

У меня есть две виртуальные машины, хост-ОС - ESXi 3.5, а гостевая ОС - Centos 4.6. Есть два удаленных сервера ESXi, каждый из которых содержит виртуальную машину Centos 4.6. Я хочу, чтобы любые изменения, которые я вносил в любой файл / папку на одной виртуальной машине, автоматически синхронизировались на другой удаленной виртуальной машине. Процесс синхронизации должен быть автоматическим. Он должен только синхронизировать различия, а не моделировать всю копию с помощью операции перезаписи. Синхронизация должна быть достаточно умной, чтобы искать, что изменилось, а что нет, и должна обновлять только измененные файлы / папки. Кроме того, должен быть некоторый обзор и выбор для синхронизации, например, если он показывает, что 4 файла изменились, должна быть возможность синхронизировать только два файла и оставить два других на данный момент. Таким образом, необходим некоторый интеллектуальный механизм синхронизации для Linux.

3 ответа

Я отправил подобный вопрос здесь. Все еще нет ответов.

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

Он имеет тенденцию быть "интенсивным на диске" на локальной машине, но вычисляет дельта-передачи и не тратит пропускную способность (он использует rsync для передач).

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

Одним из вариантов является использование rsync или графической версии (gnome) этого grsync.

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

Для автоматизации процесса вы можете использовать задание cron с желаемой частотой.

Синхронизация в нескольких направлениях очень трудно сделать хорошо. Что происходит, когда вы получаете неизбежный конфликт? т.е. файл A был отредактирован на узле 1 и узле 2 одновременно; или достаточно близко к одновременному, чтобы ваша система видела изменения в обоих. Какой из них предпочтительнее? Вы останавливаете синхронизацию и ждете ручного вмешательства?

Вы обнаружите, что когда нескольким системам требуется доступ / синхронизация одних и тех же данных и доступ как для чтения, так и для записи, у вас будет один из 3 методов:

  1. Клиент / сервер: что-то вроде NFS/SMB с сервером, на котором размещены файлы, к которым каждый может получить доступ сразу; сервер обрабатывает блокировку файлов и сообщает каждому узлу, когда произошло обновление файловой системы.
  2. Общее хранилище: т.е. SAN или какая-либо форма прямого доступа; возможно сервер под управлением цели iSCSI. С диспетчером распределенной блокировки и кластерной файловой системой
  3. Синхронизированное / кластерное хранилище: такие вещи, как Luster, Ceph и DRBD (с кластерной файловой системой сверху).

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

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