我正在尝试使用lftp
通过ftp下载一个非常大的文件。但pget
只能在netstat -na
看到的情况下打开一个TCP连接。这是我的命令和调试输出:
脚本:
open -u username,password aftp.linksynergy.com
pget -n 5 /36342_2923873_mp.txt.gz -o buy.com.csv.gz
执行命令
user@db1:/mnt/tmp/lftp_test$ lftp -d -f lfscript
---- Resolving host address...
---- 1 address found: 63.123.248.17
---- Connecting to aftp.linksynergy.com (63.123.248.17) port 21
<--- 220 gcws3002.private.linksynergy.com FTP server (Version wu-2.6.2-9) ready.
---> FEAT
<--- 530 Please login with USER and PASS.
---> AUTH TLS
<--- 500 AUTH command not supported.
---> USER username
<--- 331 Password required for username.
---> PASS *******
<--- 230 User username logged in.
---> FEAT
<--- 500 'FEAT': command not understood.
---> PWD
<--- 257 "/" is current directory.
---> TYPE I
<--- 200 Type set to I.
---> SIZE /36342_2923873_mp.txt.gz
<--- 550 /home/client/username//36342_2923873_mp.txt.gz: not a plain file.
---> MDTM /36342_2923873_mp.txt.gz
<--- 550 //36342_2923873_mp.txt.gz: No such file or directory.
---> PASV
<--- 227 Entering Passive Mode (63,123,248,17,29,90)
---- Connecting data socket to (63.123.248.17) port 7514
---- Data connection established
---> RETR /36342_2923873_mp.txt.gz
<--- 150 Opening BINARY mode data connection for /home/upload/upload_bin/affiliate_download/get_merchandiser_file.pl.
请注意,多线程下载可以在我测试的另一台服务器上运行(用于测试的apache镜像站点),所以我打赌这只是这个特殊情况下FTP服务器不支持的功能。
答案 0 :(得分:3)
你说得对。从输出中可以看出,服务器不响应FEAT命令,该命令用于确定服务器是否支持RESTart命令(RFC3659第5.4节)。
并行FTP下载基于假装从N个点重新开始下载,从每个点读取文件的1 / N,然后组合结果。由于服务器不支持REST,因此客户端无法执行此操作。