使用ssh通过rsync从远程复制多个文件


8

我想使用从远程计算机复制多个文件rsync。因此,我使用以下命令。

rsync -Pav -e 'ssh -i sshkey' user@remotemachine:/home/user/file1.zip file2.zip file3.zip  .

它显示以下错误

意外的本地arg:file2.zip如果arg是远程文件/目录,请在其前面加上冒号(:)。rsync错误:main.c(1362)[Receiver = 3.1.0]的语法或用法错误(代码1)

Answers:


10

所有远程文件都应该是rsync的一个参数。因此,只需将所有远程文件放在单引号中:

rsync -Pav -e 'ssh -i sshkey' 'user@remotemachine:/home/user/file1.zip file2.zip file3.zip' .

顺便说一句,您也可以使用星号来执行此操作(然后,星号将由远程外壳程序解析):

rsync -Pav -e 'ssh -i sshkey' 'user@remotemachine:/home/user/*.zip' .


9

这已经很老了,但是可接受的答案有点太严格了-多个文件不一定是rsync的单个参数。来自man rsync

ADVANCED USAGE
       The  syntax  for  requesting  multiple  files  from a remote host is done by specifying additional remote-host args in the same style as the first, or with the hostname omitted.  For
       instance, all these work:

              rsync -av host:file1 :file2 host:file{3,4} /dest/
              rsync -av host::modname/file{1,2} host::modname/file3 /dest/
              rsync -av host::modname/file1 ::modname/file{3,4}

所以OP的命令是

rsync -Pav -e 'ssh -i sshkey' user@remotemachine:/home/user/file1.zip :/home/user/file2.zip :/home/user/file3.zip  .

对于较旧的rsync版本,这是不可能的,但是我认为所有主要发行版都已经发行了好几年了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.