rsync递归,深度有限

Dom*_* D. 2 java linux rsync

我有一个小的java应用程序/服务,它使用Java 7的新文件监视根文件夹及其子文件夹java.nio.file.WatchService.当新事件发生时(新文件,修改,删除等等)我启动rsync执行以将文件从服务器A复制到服务器B(反之亦然).该命令使用--delete选项确保从A中删除的文件也从B中删除.但是,为了使用此功能,您必须启用-r(递归子目录).通常这不是什么大问题,但根文件夹是5GB的数据(19000个文件,1500个文件夹).Rsync非常出色,但仍需要几分钟才能运行.

我遇到的问题是,如果两个服务器上的文件大致同时发生变化,则服务器A上创建的新文件可能会被同步B-> A的进程删除,因为--delete只会将源与目标进行比较并看到目的地的文件多于源文件.

由于我已经不情愿地使用Java应用程序查看每个目录,因此我不必使用-r(递归)rsync.我的第一个想法是用rsync来限制递归的深度,但我不认为这是rsync的一个特性.我也考虑过使用--exclude但不确定模式的外观.有人有主意吗?

作为参考,以下是生成的rsync命令的示例:

rsync -r --no-group --no-owner --no-perms --update --checksum --verbose --progress --stats --delete --ignore-errors "/media/server1files/" "/server2::server2"

Dom*_* D. 6

即使使用-r适当的模式,也要排除子文件夹--exclude "/**/*".