Я хочу получить доступ к информации о прогрессе из lftp. В настоящее время я использую curl вот так:
curl http://example.com/file -o file -L 2> download.log
Это записывает информацию о прогрессе curl в файл download.log, который я могу отслеживать, чтобы отслеживать прогресс в реальном времени.
Но тот же подход не работает с lftp, ни с stdout, ни с stderr. У меня остается пустой файл download.log до завершения передачи.
lftp -e 'get http://example.com/file;quit' 2> download.log
lftp -e 'get http://example.com/file;quit' 1> download.log
Когда я не перенаправляю вывод, я вижу прогресс на экране. Когда я перенаправляю вывод, я перестаю видеть прогресс на экране, но в download.log ничего не отображается. После завершения передачи файла я вижу окончательный результат, примерно такой, но ничего раньше:
97618627 bytes transferred in 104 seconds (913.1K/s)
Lftp делает что-то необычное со своим выводом - печать на экран без печати на stdout / stderr? Есть ли другие способы захвата вывода экрана, кроме перенаправления stdout / stderr?
Мне кажется, что он буферизует свой вывод. Вы можете попробовать разблокировать ожидать сценарий (страница руководства).
См. Настройку по умолчанию "log: file / xfer", введя set
команда в lftp.
Возможный выход:
set log:file/xfer /home/USERNAME/.local/share/lftp/transfer_log
Конечно, вы можете изменить это по-разному.
lftp -c 'open -e "set log:file/xfer /home/USERNAME/myown.log; mget *.csv; bye" -u uname,psswd 172.16.100.101' >> $log
Проверить xfer переменные домена:
установить xfer: log 1
установить xfer: eta-period 5 # каждые 5 секунд
set xfer: rate-period 20 # средняя скорость
поместит информацию о передаче журнала в ~ / .lftp / transfer_log
Тем не менее не уверен, что вы можете изменить место назначения файла журнала
попробуйте это, чтобы записать информацию о ходе выполнения: lftp sftp: // $ SFTPUSER: $ SFTPPASS @ $ SFTPHOST -e "cd $ DIRECTORY; mget $ SFTPFILE; bye"> $ SFTPLOG 2> & 1