温馨提示×

Debian vsftp如何迁移数据

小樊
51
2026-07-30 16:15:44
栏目: 智能运维

Debian 上迁移 vsftpd 的数据,通常包含 用户数据(FTP 目录)vsftpd 配置文件 以及 用户认证信息。下面按常见场景给你一套完整、稳妥的迁移方案。


一、迁移前准备

1️⃣ 确认当前 vsftpd 状态

dpkg -l | grep vsftpd
systemctl status vsftpd

2️⃣ 记录当前 FTP 根目录

常见位置:

/var/ftp
/home/ftp
/srv/ftp

查看配置:

grep -E "local_root|anon_root|chroot" /etc/vsftpd.conf

二、迁移 vsftpd 配置文件

1️⃣ 备份原配置

cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

2️⃣ 迁移配置文件

在新服务器上:

scp root@old-server:/etc/vsftpd.conf /etc/vsftpd.conf

⚠️ 注意:

  • listen_ipv6listen 等网络参数可能需要调整
  • 若使用被动模式,确认端口是否一致

三、迁移 FTP 数据目录(重点)

1️⃣ 停止 vsftpd(新旧服务器)

systemctl stop vsftpd

2️⃣ 同步数据(推荐 rsync)

rsync -avz --delete /data/ftp/ root@new-server:/data/ftp/

参数说明:

  • -a:保留权限、时间
  • -v:显示过程
  • -z:压缩
  • --delete:保持一致性

强烈建议:使用 rsync 而不是 scp,避免权限丢失


四、迁移用户与认证信息

✅ 情况 1:系统用户(最常见)

迁移用户和组

scp root@old-server:/etc/passwd /tmp/passwd.old
scp root@old-server:/etc/shadow /tmp/shadow.old
scp root@old-server:/etc/group /tmp/group.old

⚠️ 不要直接覆盖,建议手动合并或只迁移 FTP 用户

只迁移 FTP 用户(推荐)

grep ftpuser /etc/passwd >> /etc/passwd
grep ftpuser /etc/shadow >> /etc/shadow
grep ftpuser /etc/group >> /etc/group

✅ 情况 2:虚拟用户(PAM + db)

1️⃣ 迁移用户数据库

scp root@old-server:/etc/vsftpd/vsftpd_login.db /etc/vsftpd/
scp root@old-server:/etc/pam.d/vsftpd /etc/pam.d/vsftpd

2️⃣ 安装依赖

apt install db-util

3️⃣ 确认 PAM 配置

cat /etc/pam.d/vsftpd

示例:

auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

五、权限与目录修复(非常重要)

1️⃣ 修复目录权限

chown -R ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp

2️⃣ 检查是否需要写权限

chmod 775 /data/ftp/upload

六、SELinux / AppArmor(Debian 常见是 AppArmor)

检查

aa-status

若为 vsftpd 限制

nano /etc/apparmor.d/usr.sbin.vsftpd

重载:

systemctl reload apparmor

七、启动并验证

systemctl start vsftpd
systemctl enable vsftpd

测试连接

ftp localhost

或使用 FileZilla / lftp


八、迁移检查清单 ✅

项目 是否完成
vsftpd.conf 迁移
FTP 数据目录同步
用户 / 密码迁移
权限正确
被动端口一致
防火墙放行

九、常见问题

❌ 530 Login incorrect

  • PAM 配置错误
  • 用户目录不存在
  • 密码未同步

❌ 无法上传

  • 目录权限
  • write_enable=YES

❌ 无法连接

  • 防火墙
  • listen=YES / listen_ipv6=NO

如果你愿意,可以告诉我:

  • ✅ 是 系统用户 还是 虚拟用户
  • ✅ FTP 目录路径
  • ✅ Debian 版本

我可以给你 精确到命令级别的迁移方案

0