gpt4 book ai didi

java - rsync 以有限的深度递归

转载 作者:太空狗 更新时间:2023-10-29 11:33:42 24 4
gpt4 key购买 nike

我有一个小型 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"

最佳答案

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

关于java - rsync 以有限的深度递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12280908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com