Copie de plusieurs fichiers à distance à l'aide de rsync sur ssh

8

Je souhaite copier plusieurs fichiers à partir d'une machine distante à l'aide de rsync. J'utilise donc la commande suivante.

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

Il montre l'erreur suivante

Arg local inattendu: file2.zip Si arg est un fichier / répertoire distant, préfixez-le avec deux-points (:). Erreur rsync: erreur de syntaxe ou d'utilisation (code 1) sur main.c (1362) [Receiver = 3.1.0]

SuperKrish
la source

Réponses:

10

Tous les fichiers distants doivent être un argument pour rsync. Donc, mettez simplement tous les fichiers distants entre guillemets simples:

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

BTW, vous pouvez également le faire avec un astérisque (l'astérisque sera alors résolu par le shell distant):

rsync -Pav -e 'ssh -i sshkey' 'user@remotemachine:/home/user/*.zip' .
Alexander Simon
la source
1
Cela fonctionne très bien à cause d'Alexandre le Grand
SuperKrish
9

C'est assez ancien, mais la réponse acceptée est un peu trop stricte - plusieurs fichiers ne sont pas nécessairement un seul argument pour 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}

donc la commande de OP serait

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

Ce n'est pas possible pour les anciennes versions de rsync, mais je pense que toutes les principales distributions en contiennent depuis plusieurs années.

demosito
la source