根据模式从一个源 rsync 到多个不同的目标目录?

根据模式从一个源 rsync 到多个不同的目标目录?

假设你想备份所有匹配模式的文件A到目录A以及所有匹配模式的文件b到目录. 实现此目的的自然方式是使用两个单独的rsync命令。

rsync --include="...pattern_a..." --exclude="..." user@server:sourcedir/ a/
rsync --include="...pattern_b..." --exclude="..." user@server:sourcedir/ b/

到目前为止一切顺利。现在假设源目录包含大量文件。运行rsync两次会消耗大量资源,仅构建索引一项就足够了。

是否有可能在一次运行中完成这样的事情rsync,从而只构建一次索引?

答案1

在同一个文件系统上创建临时文件夹,将所需的文件硬链接到每个文件夹,然后在每个文件夹上运行 rsync。

例如

cp -Rl <...glob_pattern_a...> /tmp/tmp_a cp -Rl <...glob_pattern_b...> /tmp/tmp_b

rsync --remove-source-files /tmp/a 用户@服务器:destdir_a rsync --remove-source-files /tmp/b 用户@服务器:destdir_b

如果您想从目标系统执行此操作,您可以将“cp”命令放在源系统的脚本中。

相关内容