Copiar múltiples archivos de forma remota usando rsync sobre ssh

8

Quiero copiar múltiples archivos de la máquina remota usando rsync. Entonces uso el siguiente comando.

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

Muestra el siguiente error

Argumento local inesperado: file2.zip Si arg es un archivo / directorio remoto, prefijelo con dos puntos (:). Error de rsync: sintaxis o error de uso (código 1) en main.c (1362) [Receiver = 3.1.0]

SuperKrish
fuente

Respuestas:

10

Todos los archivos remotos deben ser un argumento para rsync. Entonces, solo ponga todos los archivos remotos entre comillas simples:

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

Por cierto, también puede hacer esto con un Asterisco (el Asterisco lo resolverá el shell remoto entonces):

rsync -Pav -e 'ssh -i sshkey' 'user@remotemachine:/home/user/*.zip' .
Alexander Simon
fuente
1
Funciona muy bien
gracias a
9

Esto es bastante antiguo, pero la respuesta aceptada es demasiado estricta: varios archivos no son necesariamente un argumento único para 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}

entonces el comando de OP sería

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

Esto no es posible para las versiones anteriores de rsync, pero creo que todas las distribuciones importantes algunas de ellas desde hace varios años.

demosito
fuente