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

rsync: how to replicate full directory structure

我想使用 rsync 将一些目录从远程服务器同步到我的本地计算机。为了使文件井井有条,我希望 rsync create/copy 包含所有父目录的整个路径。

我正在使用带有证书文件的 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/

Unexpected remote arg: user1@10.10.10.10:/opt/dir/data/file.crt

rsync error: syntax or usage error (code 1) at main.c(1361) [sender=3.1.2]

提前感谢您的帮助

我在这里看到两个问题:首先,-R--recurisive 选项 不同(并且 "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/