По сути, для загрузки удаленного каталога из LFTP вам нужна утилита зеркала. Встроенное зеркальное действие LFTP может загрузить или обновить целое дерево каталогов. Существует также обратное зеркало (mirror -R), которое загружает или обновляет дерево каталогов на сервере. Зеркало также может синхронизировать каталоги между двумя удаленными серверами, используя FXP, если доступно.
В этом примере мы напишем скрипт lftp, который выполняется утилитой lftp. Это сделано для того, чтобы в основном иметь возможность устанавливать пользовательские свойства встроенного lftp в нашем скрипте, используя опцию set. Начните с создания download_example.lftp
файл и в соответствии с вашим методом аутентификации на сервере добавьте в файл следующее содержимое:
A. с именем пользователя пароль
Если вы используете имя пользователя и простой текстовый пароль для доступа к вашему серверу через SFTP, то это способ продолжить. В инструкции open укажите строку аутентификации, которая указывает протокол, имя пользователя для входа в систему, которое обычно является root, и пароль, за которым следует IP-адрес или домен вашего сервера:
set ssl:verify-certificate no
set sftp:auto-confirm yes
open sftp://username:password@server.address.com
mirror --verbose --use-pget-n=8 -c --verbose /remote/directory/that-you-want-to-download /local/directory/to-save;
bye
B. с ключом SSH
Если вместо простой аутентификации для доступа к вашему серверу вы используете SSH-ключи, то вам потребуется ключ OpenSSH для доступа к нему. Просто измените программу соединения, используемую LFTP, на SSH с необходимыми аргументами и указав файл идентификации с помощью -i
аргумент:
set ssl:verify-certificate no
set sftp:auto-confirm yes
set sftp:connect-program "ssh -v -a -x -i C:\Users\\.ssh\id_rsa"
open sftp://username:dummy-password@server.address.com
mirror --verbose --use-pget-n=8 -c --verbose /remote/directory/that-you-want-to-download /local/directory/to-save;
bye
Параметры pget получают указанный файл (или каталог), используя несколько соединений. Это может ускорить передачу, но загружает сеть и сервер, сильно влияя на других пользователей. Используйте только если вам действительно нужно передать файл как можно скорее, в противном случае удалите его из примера. --use-pget-n
Аргумент указывает число команд pget, используемых для передачи каждого отдельного файла под зеркалом. Замыкание может быть сопоставлено с исходными или целевыми именами хостов, используется минимальное число больше 0. Когда значение меньше 2, pget не используется.
После сохранения сценария запустите его с помощью lftp, используя следующую команду:
lftp -f download_example.lftp
Это автоматически запустит загрузку каталога и выдаст прогресс благодаря --verbose
Аргумент, который предоставляет подробный вывод о ходе выполнения задачи:
Когда сценарий завершится, теперь у вас будет локальный удаленный каталог в вашей локальной системе благодаря LFTP.