我有权访问SFTP服务器。它具有以下文件:
> rels
-rw-r--r-- 1 container container 954368 Mar 08 21:31 file1
-rw-r--r-- 1 container container 868352 Mar 08 21:31 file2
-rw-r--r-- 1 container container 8192 Mar 08 21:30 file3
-rw-r--r-- 1 container container 8192 Mar 08 21:30 file4
当尝试使用lftp
或get file1
通过get file2
下载文件时,文件确实会下载内容,其中lftp
打印传输的字节数。使用get file3
或get file4
会导致下载空文件,而lftp
处于静默状态。
$ ls -l
-rw-rw-r-- 1 user user 954368 Mar 8 21:31 file1
-rw-rw-r-- 1 user user 868352 Mar 8 21:31 file2
-rw-rw-r-- 1 user user 0 Mar 8 21:30 file3
-rw-rw-r-- 1 user user 0 Mar 8 21:30 file4
sftp
使用get file3
命令成功下载了文件及其内容。
调试lftp
的输出:
> get file3
---- path on wire is `/file3'
---> sending a packet, length=53, type=3(OPEN), id=12
<--- got a packet, length=10, type=102(HANDLE), id=12
---- got file handle 02 (1)
---> sending a packet, length=10, type=8(FSTAT), id=13
<--- got a packet, length=37, type=105(ATTRS), id=13
---- file info: size=8192, date=Fri Mar 8 21:30:53 2019
---> sending a packet, length=22, type=5(READ), id=14
---> sending a packet, length=22, type=5(READ), id=15
<--- got a packet, length=17, type=101(STATUS), id=15
---- status code=1(EOF), message=
---- eof
---> sending a packet, length=10, type=4(CLOSE), id=16
<--- got a packet, length=8201, type=103(DATA), id=14
<--- got a packet, length=17, type=101(STATUS), id=16
---- status code=0(OK), message=
如您所见,它确实接收到一个数据量足够大的数据包(id = 14),但是(可能是由于在接收DATA之前已接收到EOF状态数据包),未写入接收到的数据。
我在任何地方都找不到真正的原因-为什么lftp
不下载小文件的内容?如何使它下载小文件?
使用LFTP版本4.8.1-根据changelog,在新版本中没有解决我提到的问题。