Copiando vários arquivos do controle remoto usando o rsync sobre ssh

8

Quero copiar vários arquivos da máquina remota usando rsync. Então, eu uso o seguinte comando.

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

Mostra o seguinte erro

Arg local inesperado: file2.zip Se arg for um arquivo / diretório remoto, prefixe-o com dois pontos (:). Erro rsync: erro de sintaxe ou de uso (código 1) em main.c (1362) [Receiver = 3.1.0]

SuperKrish
fonte

Respostas:

10

Todos os arquivos remotos devem ser um argumento para o rsync. Então, basta colocar todos os arquivos remotos entre aspas simples:

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

BTW, você também pode fazer isso com um Asterisk (o Asterisk será resolvido pelo shell remoto):

rsync -Pav -e 'ssh -i sshkey' 'user@remotemachine:/home/user/*.zip' .
Alexander Simon
fonte
1
Ele funciona muito bem Por causa de Alexandre, o Grande
SuperKrish
9

Isso é bastante antigo, mas a resposta aceita é um pouco rígida - vários arquivos não são necessariamente um único argumento para o rsync. De 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}

então o comando do OP seria

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

Isso não é possível para versões mais antigas do rsync, mas acho que todas as principais distribuições estão presentes há vários anos.

demosito
fonte