rsync -R 包含在 find 命令中的问题

rsync -R 包含在 find 命令中的问题

我正在尝试复制当前目录和所有子目录中名为“specials.xml”的所有文件,并创建每个子目录的名称。我使用 -R 进行 rsync,以便它为每个相应的子目录创建相对路径。例如,我想要 cp:

/home/deploy/admin_xml_files/foo.com/specials.xml
/home/deploy/admin_xml_files/bar.com/specials.xml

到:

~/adminxml/foo.com/specials.xml
~/adminxml/bar.com/specials.xml

但这不起作用:

$ mkdir ~/adminxml/
$ find /home/deploy/admin_xml_files -iname 'specials.xml' -exec rsync -aR ~/adminxml/ {} +

它说的是:

错误:复制多个文件时,目标必须是一个目录。rsync 错误:选择输入/输出文件时出错,目录代码 3) 在 main.c(543) [Receiver=3.0.7]...

这可能与 rsync 的参数顺序有关,因为它需要是 SRC DEST

答案1

$ mkdir ~/adminxml/
$ cd /home/deploy/admin_xml_files
$ rsync -avR $(find . -iname 'specials.xml') /path/to/adminxml/

相关内容