Копирование нескольких файлов с удаленного компьютера с помощью rsync через ssh

8

Я хочу скопировать несколько файлов с удаленного компьютера, используя rsync. Поэтому я использую следующую команду.

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

Это показывает следующую ошибку

Неожиданный локальный arg: file2.zip Если arg - удаленный файл / dir, добавьте к нему двоеточие (:). Ошибка rsync: синтаксис или ошибка использования (код 1) в main.c (1362) [Receiver = 3.1.0]

SuperKrish
источник

Ответы:

10

Все удаленные файлы должны быть одним аргументом для rsync. Итак, просто поместите все удаленные файлы в одинарные кавычки:

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

Кстати, вы также можете сделать это с помощью Asterisk (Asterisk будет разрешен удаленной оболочкой):

rsync -Pav -e 'ssh -i sshkey' 'user@remotemachine:/home/user/*.zip' .
Александр Симон
источник
1
Это
прекрасно
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}

поэтому команда ОП будет

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

Это невозможно для более старых версий rsync, но я думаю, что все основные дистрибутивы некоторые с этим уже несколько лет.

demosito
источник