将 rsync 源文件定义为最后一个参数

将 rsync 源文件定义为最后一个参数

假设我用来find定义来源用于操作的文件rsync,利用特殊功能我只从这两个命令知道:

find /path/to/data -mtime -7 -mtime +5 -exec rsync -aAXu {} /path/to/dest \; 

但是,在这种情况下,我不能+-execasrsync一起使用目的地作为最后一个论点。

这意味着rsync每个匹配文件被调用一次,而不是创建参数列表并rsync仅调用最少次数。

出现同样的问题,xargs因为我需要该-I标志,这意味着-L 1.

说明书上好像没有显示这个--destination-dir=dest选项。

rsync是否有任何简单的方法可以从源文件列表创建-built-up 命令?

也许这是一个 XY 问题,其他命令更适合?

答案1

不要使用rsync来调用-execsh -c而是调用:

find ... -exec sh -c 'rsync ... "$@" /path/to/dest' sh {} +

sh -c使用一个内联脚本进行调用,该脚本只是rsync以您想要的方式调用,并且"$@"是从 传递的当前一批找到的路径名find

尾随sh是一个任意字符串,将放置$0在内联脚本中。这是必要的,因为否则第一个找到的路径名将被放置在 中$0,因此不会成为"$@".中的值$0应该是当前 shell 的名称,并将在 shell 生成的任何诊断消息中使用。

相关内容