Использование mget для загрузки нескольких файлов из sftp

У меня есть код R , и с одной стороны я подключаюсь к sftp и пытается загрузить некоторые файлы. Файлы, которые необходимо загрузить, определяются кодом R и могут быть либо один, либо несколько. Я пытаюсь использовать mget для загрузки файлов, но он, похоже, не работает:

 sftp> mget abc.PDF def.PDF ghi.PDF Fetching /abc.PDF to def.PDF 

Это только загрузка abc.PDF и сохранение его как def.PDF в локальном каталоге, а не загрузка всех трех файлов. Что я делаю?

mget работает с glob для части «исходного файла» аргументов (по крайней мере, в OpenSSH версии 7.3):

 sftp> ls *.pdf foo.pdf bar.pdf sftp> mget *.pdf Fetching /home/jdoe/bar.pdf to bar.pdf Fetching /home/jdoe/foo.pdf to foo.pdf sftp> 

Вам вместо этого нужно будет каким-то образом перекрыть файлы и получить их один за другим, если glob получит слишком много уловов.

Это не работает, потому что sftp OpenSSH не поддерживает это. Это mget – это то же самое, что и get (на самом деле, mget даже не документирован в help или manpage), и принимает только один аргумент имени удаленного файла (хотя этот аргумент может быть glob).

Таким образом, для использования SFTP-клиента OpenSSH вам нужно будет выдать один файл для каждого файла. Кроме того, вы можете использовать другой SFTP-клиент (например, lftp имеет mget который работает так, как вы хотите). Или (благодаря Gilles для напоминания), вам может быть удобнее использовать sshfs (через FUSE), а затем использовать обычные команды копирования файлов ( cp или любой другой R, встроенный).