Назад | Перейти на главную страницу

Синхронизировать каталог на двух серверах с помощью rsync (или альтернативы для синхронизации каталогов)

У меня есть две виртуальные машины, которые должны иметь одинаковые файлы в этом каталоге:

/var/www/owncloud/data/admin/files/

Сначала я подумал, что могу использовать rsync с cron для копирования файлов каждые две минуты:

На ВМ1:

*/2 * * * * rsync -auz --delete-after /var/www/owncloud/data/admin/files root@VM2:/var/www/owncloud/data/admin

На ВМ2

*/2 * * * * rsync -auz --delete-after /var/www/owncloud/data/admin/files root@VM1:/var/www/owncloud/data/admin

Проблема, с которой я сталкиваюсь, заключается в том, что если я загружаю файл в VM1, через две минуты задание cron на VM2 перезаписывает каталог на VM1, удаляя файл.

Причина, по которой я копирую из VM1-> VM2 и VM2-> VM1, заключается в том, что у меня есть очень простая настройка аварийного переключения. Если VM1 выходит из строя и файлы добавляются / удаляются из VM2, я хочу, чтобы эти изменения были продублированы на VM1; и VM1, и файлы добавляются / удаляются, я хочу, чтобы эти изменения были продублированы на VM2.

Можно ли это сделать с помощью rsync? Моя команда неверна? Есть ли альтернатива, которую я должен использовать вместо этого?

Взгляните на унисон, он обеспечивает двунаправленную синхронизацию: http://www.cis.upenn.edu/~bcpierce/unison/

Если вы пытаетесь использовать rsync - лучше всего избегать опции --delete-after. Но если вы это сделаете, могут возникнуть ситуации, когда файл будет воссоздан на том или ином узле. После некоторой практики с двунаправленной синхронизацией (через csync2 и это док с некоторыми изменениями в конфигурации lsyncd), я обнаружил, что лучшим вариантом будет некоторая общая FS (NFS для тестов, GFS и т. д.)

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