我想使用rsync将某些目录从远程服务器同步到本地计算机。为了使文件井井有条,我希望rsync使用所有父目录创建/复制整个路径。
我将ssh与证书文件一起使用,因此不需要手动登录。
如果我像下面那样使用它,它将复制file.crt但不创建父目录:
rsync -ave ssh user1@10.10.10.10:/opt/dir/data/file.crt /home/user1/
如果我尝试使用-R --recursive选项,它将失败并显示以下错误:
rsync -ave --recurisive ssh user1@10.10.10.10:/opt/dir/data/file.crt /home/user1/
或带有-R
rsync -aveR ssh user1@10.10.10.10:/opt/dir/data/file.crt /home/user1/
意外的远程arg:user1@10.10.10.10:/opt/dir/data/file.crt
rsync错误:main.c(1361)[sender = 3.1.2]上的语法或用法错误(代码1)
非常感谢您提前提供帮助
答案 0 :(得分:0)
我在这里看到两个问题:首先,-R
和--recurisive
选项不相同(并且“递归”拼写错误)。 -R
是--relative
的缩写,这是您想要的(包括源的完整路径)。有一个--recursive
选项(缩写为-r
),但这是-a
所隐含的,在这里也无关紧要,因为您要复制的是单个文件,而不是目录。
第二,当您添加新选项时,会将其放在-ave
和ssh
之间,但是ssh
作为-e
选项的参数,因此它必须紧随-e
之后。 rsync
的编写方式是将-R
或其他内容解释为-e
的参数,而将ssh
解释为一个完全独立的参数,因此变得很困惑。
但是无论如何您都不需要-e ssh
-这几乎总是默认值,因此您应该可以将其保留。因此,请尝试以下操作:
rsync -avR user1@10.10.10.10:/opt/dir/data/file.crt /home/user1/
如果这不起作用,请尝试以下方法:
rsync -avR -e ssh user1@10.10.10.10:/opt/dir/data/file.crt /home/user1/