rsync:从管道读取文件列表

rsync:从管道读取文件列表

我可以/tmp/file使用以下命令将文件传输rsync到远程服务器:

rsync -R -av /tmp/file root@server:/

但是我如何提供要从管道传输的文件列表?我尝试使用--files-from=选项 with /dev/stdin,但这不起作用:

echo /tmp/file | rsync -R -av --files-from=/dev/stdin root@server:/

(它也不适用于常规文件)

例如,我可以让 rsync 从管道读取,以便我可以使用 find 的输出吗?

答案1

rsync即使您从文件中读取路径名,您仍然需要指定源和目标参数:

echo /tmp/file | rsync -av --files-from=- / user@server:/

读取的路径名将rsync相对于/源目录。-R使用 时隐含该选项--files-from,并且可以使用 指定标准输入-

也可以看看

您可能想问一个单独的问题,了解您将输出从 传递findrsyncusing 的意图--from-file。可能有一种更安全的方法来完成您想做的事情。例如,您可能想要使用-print0with并将其与withfind配对。请参阅您的系统的手册。-from0rsyncrsyncfind

答案2

您可以将 -exec 选项与 find 一起使用:

find -type f -name /tmp/file -exec rsync -R -av {} root@server:/ \;

{} 是先前结果的结果,即 -exec 之前找到的所有内容。 ;表示 exec 结束

相关内容