LTFP传输若干问题总结

FTP服务

在一般的FTP服务中, 都会开启20端口和21端口, 其中21端口作为传输控制流信息, 20端口则用来传输数据. FTP的服务端程序主要有vsftp等.

FTP主动(PORT)模式

主动模式中, FTP客户端首先登录FTP服务器,连接其21端口, 并发送用户名和密码进行验证. 在登录成功后, 首先需要开放一个随机端口(1024以上), 并发送一个PORT命令, 把随机端口号发送到FTP服务器. FTP服务器接收到PORT命令以及随机端口号之后, 通过20端口和客户端的随机端口进行数据传输. 即: FTP服务器"主动"连接到FTP客户端, FTP服务器的端口固定, FTP客户端端口随机.

FTP被动(PASV)模式

被动模式中, 客户端在验证登录成功之后, 发送PASV命令到FTP服务器, FTP接收到PASV命令之后, 在服务器上开放一个随机端口, 并把该随机端口号发送给FTP客户端, FTP客户端接收到该随机端口后, 连接到服务器随机端口, 进行数据传输. 即: FTP服务器"被动"接受FTP客户端连接, FTP服务器的端口随机, FTP客户端端口固定.

两种模式的差异

一般的FTP服务器都支持主动模式和被动模式, 但是也可以通过pasv_enable=NO取消被动模式. 在被动模式下, 服务器需要开放随机端口, 在服务器防火墙不能全部开放时, 可以在FTP服务设置中, 通过pasv_max_portpasv_min_port两个参数, 设置随机端口的范围, 并在防火墙上, 对该范围内的端口开放. 在主动模式下, FTP客户端必须开放随机端口给服务器, 当客户端在防火墙下时, 开放端口给服务器比较困难.

使用LFTP登陆FTP服务器

使用lftp –u ${USER},${PASSWD} ${HOST} –p ${PORT}登录FTP服务器,之后可以通过给服务器发送各种命令,来操作FTP服务器上的内容, 具体参考LFTP man, 对使用LFTP最常见的下载操作做详细的解释. LFTP的下载操作主要有: get: 通过具体文件名获取文件 mget: 通过通配符获取一系列文件 pget: 使用多个连接来获取同一文件 mirror: 同步远程文件夹到本地

LFTP主动模式设置

当某个FTP站点不支持被动模式时, 需要LFTP对该站点设置主动模式: set ftp:passive-mode/xx.xx.xx.xx:no 在主动模式下, ls等命令可能需要两次操作才可以完成, 设置超时时间为0, 取消两次操作之间的等待: set net:reconnect-interval-base 0

MIRROR命令常用参数

使用mirror可以非常方便地同步远程文件夹,常用一些参数有: --use-pget-n: 使用pget来对单个文件下载 --parallel[=N]: 同时下载多个文件 -i RX: 只下载满足正则条件的文件 -x RX: 不下载满足正则条件的文件 -I: 只下载满足通配符的文件 -X: 不下载满足通配符的文件

通过set mirror:order并指定规则列表, 则按照列表中的规则顺序下载.