У меня есть две виртуальные машины, которые должны иметь одинаковые файлы в этом каталоге:
/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
должен тебе помочь?