我可以/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
,并且可以使用 指定标准输入-
。
也可以看看
man rsync
- 为什么循环查找的输出是不好的做法?
您可能想问一个单独的问题,了解您将输出从 传递find
给rsync
using 的意图--from-file
。可能有一种更安全的方法来完成您想做的事情。例如,您可能想要使用-print0
with并将其与withfind
配对。请参阅您的系统的手册。-from0
rsync
rsync
find
答案2
您可以将 -exec 选项与 find 一起使用:
find -type f -name /tmp/file -exec rsync -R -av {} root@server:/ \;
{} 是先前结果的结果,即 -exec 之前找到的所有内容。 ;表示 exec 结束