结论与原理
支持。debian 上常用的 ftp 服务器(如 vsftpd、proftpd)遵循 ftp 协议,配合支持断点续传的客户端即可实现续传。实现的关键是客户端发送 ftp 的 rest 命令从指定字节偏移继续传输,服务器不拒绝该请求即可。多数现代客户端(如 filezilla)默认启用续传功能。
在 vsftpd 上的配置要点
- 启用本地用户写权限与必要功能:local_enable=yes、write_enable=yes。若使用 chroot,建议设置 allow_writeable_chroot=yes,避免因权限问题导致续传写入失败。
- 启用被动模式并限定端口范围:pasv_enable=yes,pasv_min_port=50000,pasv_max_port=50010(示例范围,需与防火墙放行一致)。
- 超时与速率(可选,提升稳定性):connect_timeout=60、data_connection_timeout=300;必要时用 local_max_rate 限制单客户端速率,减少链路拥塞导致的断开。
- 重启服务:systemctl restart vsftpd。以上设置完成后,支持 rest 的客户端即可进行断点续传。
在 proftpd 上的配置要点
- 基本服务配置:server type standalone、port 21、defaultroot ~ 等常规项按环境设置。
- 允许覆盖写入:在目标目录(如 /var/www)加入 allowoverwrite on,确保续传时可以对已存在文件进行写入偏移更新。
- 重启服务:systemctl restart proftpd。客户端使用支持续传的工具即可正常继续未完成的传输。
客户端验证与常用命令
- 图形化客户端:filezilla、winscp 等均支持“断点续传/恢复”,直接重试传输即可自动续传。
- 命令行工具:
- lftp:lftp ftp.example.com -e “mirror --continue /local /remote; quit”(下载目录)或 get/put 时自动续传。
- curl:curl -c - -o file ftp://user:pass@host/path(下载续传);curl -c - -t file ftp://user:pass@host/path(上传续传)。
- wget:wget -c ftp://…(下载续传)。
- 若仍失败,检查服务器日志(如 /var/log/vsftpd.log 或 proftpd 的日志)以定位是否为权限、路径或被动端口未放行导致。
常见问题与排查
- 防火墙与 nat:被动模式需放行配置的 pasv_min_port~pasv_max_port 范围,并在 nat 设备上做端口映射,否则数据通道建立失败会中断续传。
- 权限与 chroot:目标目录需对 ftp 用户可写;使用 chroot 时建议设置 allow_writeable_chroot=yes,避免因不可写导致续传失败。
- 传输模式:文本/二进制模式与续传无直接冲突,但为一致性建议统一使用二进制模式(尤其含压缩包、镜像、视频等文件)。
- 日志与抓包:查看 vsftpd/proftpd 日志,必要时抓包确认 rest 命令与数据通道是否正常。