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
当我不redirect输出,我看到在屏幕上的进展。 当我redirect输出时,我停止看到屏幕上的进度,但没有在download.log中显示。 文件传输完成后,我看到最后的结果,像这样 – 但没有任何事情:
97618627 bytes transferred in 104 seconds (913.1K/s)
是lftp做一些不寻常的输出 – 打印到屏幕没有打印到标准输出/标准错误? 捕获屏幕输出比redirect标准输出/标准错误还有其他方法吗?
这听起来像是缓冲它的输出。 您可以尝试unbuffer expect脚本( 手册页 )。
检查xfer域variables:
设置xfer:log 1
每5秒设置xfer:eta-period 5#
设置xfer:rate-period 20#平均费率
会把日志传输信息放到〜/ .lftp / transfer_log中
不知道你可以改变日志文件的目的地
尝试捕获进度信息:lftp sftp:// $ SFTPUSER:$ SFTPPASS @ $ SFTPHOST -e“cd $ DIRECTORY; mget $ SFTPFILE; bye”> $ SFTPLOG 2>&1