У меня есть доступ к 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), но (возможно, из-за получения пакета состояния EOF перед получением DATA) полученные данные не записываются.
Я нигде не смог найти причину этого - почему lftp
не загружает содержимое маленьких файлов? Как я могу заставить его загружать небольшие файлы?
Использование LFTP версии 4.8.1 - в соответствии с журналом изменений, в упомянутых мною проблемах не было исправлено.