温馨提示×

VSFTP在Linux下如何实现断点续传

小樊
40
2025-11-30 08:49:41
栏目: 智能运维

VSFTP在Linux下实现断点续传

工作原理与前提

  • 断点续传依赖 FTP 的 REST(Restart)命令,客户端可指定从文件的某个字节偏移继续传输;因此要求 服务器与客户端均支持 REST
  • vsftpd 默认允许 REST,无需额外模块;关键在于启用必要的登录/写入能力与正确的传输模式设置。
  • 为提升稳定性与穿越 NAT/防火墙,建议使用 被动模式(PASV) 并开放一段数据端口范围。
  • 若启用 chroot,需保证用户家目录可写或使用允许可写 chroot 的选项,避免上传失败影响续传。

服务端配置步骤

  1. 安装与基础配置
    • 安装 vsftpd(以 Ubuntu/Debian 为例):sudo apt update && sudo apt install vsftpd
    • 编辑配置文件:/etc/vsftpd.conf,确保启用本地用户与写权限:
      • local_enable=YES
      • write_enable=YES
  2. 启用被动模式与端口范围(便于防火墙放行)
    • pasv_enable=YES
    • pasv_min_port=1024
    • pasv_max_port=1048
  3. 可选:启用 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
  4. 可选:chroot 场景的可写设置
    • chroot_local_user=YES 时,配合 allow_writeable_chroot=YES(或采用将可写目录放在家目录外并映射的方案)。
  5. 重启服务并验证
    • 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)在复杂网络下更易被阻断。

0