VSFTP在Linux下如何实现断点续传
小樊
40
2025-11-30 08:49:41
VSFTP在Linux下实现断点续传
工作原理与前提
- 断点续传依赖 FTP 的 REST(Restart)命令,客户端可指定从文件的某个字节偏移继续传输;因此要求 服务器与客户端均支持 REST。
- vsftpd 默认允许 REST,无需额外模块;关键在于启用必要的登录/写入能力与正确的传输模式设置。
- 为提升稳定性与穿越 NAT/防火墙,建议使用 被动模式(PASV) 并开放一段数据端口范围。
- 若启用 chroot,需保证用户家目录可写或使用允许可写 chroot 的选项,避免上传失败影响续传。
服务端配置步骤
- 安装与基础配置
- 安装 vsftpd(以 Ubuntu/Debian 为例):sudo apt update && sudo apt install vsftpd
- 编辑配置文件:/etc/vsftpd.conf,确保启用本地用户与写权限:
- local_enable=YES
- write_enable=YES
- 启用被动模式与端口范围(便于防火墙放行)
- pasv_enable=YES
- pasv_min_port=1024
- pasv_max_port=1048
- 可选:启用 FTPS(更安全)
- ssl_enable=YES
- allow_anon_ssl=NO
- force_local_data_ssl=YES
- force_local_logins_ssl=YES
- rsa_cert_file=/etc/ssl/private/vsftpd.pem
- rsa_private_key_file=/etc/ssl/private/vsftpd.pem
- 可选:chroot 场景的可写设置
- chroot_local_user=YES 时,配合 allow_writeable_chroot=YES(或采用将可写目录放在家目录外并映射的方案)。
- 重启服务并验证
- sudo systemctl restart vsftpd
- 查看日志:/var/log/vsftpd.log(排查 REST/登录/权限问题)
客户端操作与示例
- 图形化客户端
- FileZilla:编辑 → 设置 → 传输 → 勾选“启用断点续传”。
- WinSCP:会话设置 → 高级 → 传输 → 勾选“启用断点续传”。
- 命令行工具
- lftp(推荐):lftp -e ‘open ftp://user:pass@host; mirror --continue /local/path /remote/path; quit’
- 标准 ftp 客户端:ftp host → 登录后使用 get/put 命令;若传输中断,重新执行相同命令即可从上次位置继续(前提是服务器与客户端均支持 REST)。
常见问题与排查
- 防火墙与云安全组
- 放行控制端口 21/TCP 与被动端口范围(如 1024–1048/TCP);否则数据通道无法建立,续传会失败。
- SELinux/AppArmor
- 如启用,需调整策略以允许 vsftpd 读写用户目录及绑定被动端口(例如 restorecon 或策略放行)。
- 日志与验证
- 观察 /var/log/vsftpd.log 中的 REST/STOR/RETR 记录与错误提示;必要时开启更详细日志以定位问题。
- 模式选择
- 客户端位于 NAT/防火墙后时优先使用 PASV;主动模式(PORT)在复杂网络下更易被阻断。