温馨提示×

Debian vsftp如何做主从

小樊
56
2026-07-02 12:05:23
栏目: 智能运维

在 Debian 上实现 vsftpd 的主从(Master/Slave),需要先明确你指的“主从”具体是哪一种场景,因为 vsftpd 本身并不像 MySQL/Redis 那样原生支持主从复制。常见需求一般有以下几种,我分别说明可行方案。


一、先澄清:vsftpd 没有“主从复制”机制

vsftpd 是一个 FTP 服务程序,不是数据库,它:

  • 不会同步用户
  • 不会同步配置
  • 不会同步文件

所以“主从”通常是 人为设计出来的架构


二、最常见的“vsftpd 主从”方案(推荐)

✅ 方案一:文件级主从(最常用)

主服务器写,从服务器只读 / 同步文件

架构

客户端
   ├── vsftpd Master (写)
   └── vsftpd Slave (读)

实现方式

  1. 统一存储目录

    /data/ftp
    
  2. 主服务器

    • vsftpd 允许上传
    • 文件写入 /data/ftp
  3. 从服务器

    • vsftpd 只读
    • 通过 rsync / inotify 同步目录

示例:rsync 同步

rsync -avz --delete /data/ftp/ slave:/data/ftp/

可配合 cron:

*/5 * * * * rsync -az /data/ftp/ slave:/data/ftp/

✅ 优点:简单、稳定
❌ 缺点:不是实时


三、基于共享存储的主从(企业常用)

✅ 方案二:NFS / 共享磁盘

架构

vsftpd Master
vsftpd Slave
      ↘
     NFS Server

实现

  1. NFS 提供共享目录

  2. Master / Slave 都挂载:

    mount -t nfs nfs-server:/data/ftp /data/ftp
    
  3. vsftpd 配置相同:

    local_root=/data/ftp
    

✅ 优点:实时
❌ 缺点:NFS 单点风险


四、基于用户 / 权限的主从

如果你指的是:

一个用户只能在主服务器登录,另一个从服务器同步账号?

做法

  • 使用 统一用户系统
    • LDAP
    • NIS
    • 或同步 /etc/passwd

示例(rsync 用户):

rsync -av /etc/passwd /etc/shadow /etc/group slave:/etc/

⚠️ 不推荐直接同步系统用户,风险大


五、基于负载均衡的“伪主从”

✅ 方案三:Keepalived + vsftpd(高可用)

VIP
 ├── vsftpd Master
 └── vsftpd Backup
  • 两台 vsftpd
  • 数据通过 NFS / rsync 同步
  • VIP 漂移

✅ 常用于 FTP 高可用


六、vsftpd 关键配置示例(主从通用)

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

local_root=/data/ftp

从服务器可改为:

write_enable=NO

七、推荐方案总结

场景 推荐方案
文件同步 rsync + cron
实时共享 NFS
高可用 Keepalived + rsync/NFS
用户统一 LDAP(不建议多机直接同步用户)

八、你可以进一步说明

为了给你更精确的方案,可以补充:

  1. 主从的目标是什么?

    • 高可用?
    • 负载均衡?
    • 数据备份?
  2. 是否需要写操作同时支持?

  3. 用户量 / 文件量大概多少?

我可以直接给你一套 可部署的完整方案(含配置 + 脚本)

0