rsync:如何复制完整的目录结构

时间:2019-04-12 15:40:09

标签: rsync

我想使用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)

非常感谢您提前提供帮助

1 个答案:

答案 0 :(得分:0)

我在这里看到两个问题:首先,-R--recurisive选项相同(并且“递归”拼写错误)。 -R--relative的缩写,这是您想要的(包括源的完整路径)。有一个--recursive选项(缩写为-r),但这是-a所隐含的,在这里也无关紧要,因为您要复制的是单个文件,而不是目录。

第二,当您添加新选项时,会将其放在-avessh之间,但是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/