我有一个小的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"
| 归档时间: |
|
| 查看次数: |
3405 次 |
| 最近记录: |