我有两台虚拟机,它们在这个目录中应该有相同的文件:
/var/www/owncloud/data/admin/files/
我最初认为可以使用 rsync 和 cron 每两分钟复制一次文件:
在 VM1 上:
*/2 * * * * rsync -auz --delete-after /var/www/owncloud/data/admin/files root@VM2:/var/www/owncloud/data/admin
在 VM2 上
*/2 * * * * rsync -auz --delete-after /var/www/owncloud/data/admin/files root@VM1:/var/www/owncloud/data/admin
我遇到的问题是,如果我将文件上传到 VM1,两分钟后,VM2 上的 cronjob 会覆盖 VM1 上的目录,并删除该文件。
我之所以从 VM1->VM2 和 VM2->VM1 进行复制,是因为我有一个非常基本的故障转移设置。如果 VM1 发生故障,并且文件从 VM2 添加/删除,我希望这些更改在 VM1 上重复;如果 VM1 启动,并且文件被添加/删除,我希望这些更改在 VM2 上重复。
可以使用 rsync 来实现吗?我的命令错了吗?我可以使用其他替代方法吗?
答案1
看一下 unison,它允许双向同步:http://www.cis.upenn.edu/~bcpierce/unison/
答案2
您可以阻止 rsync 从您的目标中删除任何文件。我不确定哪个标志可以做到这一点。也许
man rsync
应该可以帮助您?