FTP服务器怎么传输大文件
公司要给客户传一个60GB的视频素材包,用普通网盘要么限速,要么过一会儿就提示上传失败。这时候,很多人会想到用FTP服务器——稳定、可控、适合内网或专线环境。但大文件可不是点个“上传”就完事了,中间稍不注意就会断在半路。
选择支持断点续传的FTP客户端
传几十GB的文件,网络波动太常见。如果客户端不支持断点续传,一断就得从头再来,简直是灾难。推荐使用FileZilla、WinSCP这类工具,它们在连接中断后能自动检测已上传部分,接着传,省时又省心。
比如在FileZilla里,只要确保“传输设置”中启用了“失败时尝试恢复传输”,它就会自动调用REST命令让服务器从上次中断的位置继续写入。
调整超时和重试设置
默认的FTP连接超时时间通常是30秒,对于大文件传输来说太短。尤其是在跨地区或跨国传输时,网络延迟高,容易被误判为断开。
可以在FileZilla的“编辑”→“设置”→“连接”→“FTP”里把“无响应超时”改成300秒甚至更长。同时增加重试次数,避免因为短暂抖动就彻底放弃。
使用二进制模式传输
FTP有两种传输模式:ASCII和Binary。前者用于文本文件,后者才是正道。传视频、压缩包、镜像这些大文件必须用Binary模式,否则数据可能损坏,传完了也打不开。
大多数现代客户端默认就是Binary,但如果你写脚本自动上传,就得手动指定。比如在命令行ftp工具中:
ftp> binary
ftp> put big_video.iso
考虑用SFTP或FTPS提升稳定性
传统FTP明文传输,不仅不安全,还容易被防火墙干扰导致连接中断。换成SFTP(基于SSH)或FTPS(带SSL的FTP),加密通道更稳,尤其适合公网传输。
比如用lftp工具走SFTP协议:
lftp sftp://user@192.168.1.100
lftp sftp://user@192.168.1.100:> set sftp:connect-program "ssh -a -x -i /path/to/key"
lftp sftp://user@192.168.1.100:> put -E bigfile.tar.gz
这里的-E参数表示传输完成后自动删除本地源文件,适合归档场景。
服务器端也要配合
别只盯着客户端。FTP服务端如vsftpd、ProFTPD也得调优。比如vsftpd.conf里加上:
idle_session_timeout=600
data_connection_timeout=300
delay_failed_login=0
max_clients=50
max_per_ip=5
这样能防止空闲断连,也能支撑长时间的数据流。如果是大并发上传,还得检查磁盘IO和内存,别让服务器自己先撑不住。
监控进度,别盲等
传一个大文件动辄几小时,不可能一直盯着界面。可以开启日志记录,或者用脚本定时输出进度。
比如用rsync over SSH其实比FTP更智能,但如果你非得走FTP,至少让客户端生成日志文件,出问题能查。
有时候看着传输速度突然掉到0,其实是缓冲区满了在等确认包,等个几分钟可能又上去了,别急着重启。