在 CentOS 上迁移 FTP 服务器(常见为 vsftpd / proftpd)通常包含 配置、用户、数据、权限 四部分的迁移。下面以最常见的 vsftpd 为例说明。
rpm -qa | grep vsftpd
# 或
which vsftpd
grep -E "local_root|anon_root|user_sub_token" /etc/vsftpd/vsftpd.conf
tar czf vsftpd-conf.tar.gz /etc/vsftpd
scp vsftpd-conf.tar.gz root@目标IP:/tmp/
tar xzf /tmp/vsftpd-conf.tar.gz -C /
⚠️ 注意:
vsftpd.conf 差异用户是 Linux 用户
源服务器导出:
getent passwd | grep ftp > ftpusers.txt
getent shadow | grep ftp >> ftpshadow.txt
目标服务器导入(谨慎):
# 建议手动 useradd + passwd
useradd ftpuser
passwd ftpuser
或直接同步:
rsync -avz /etc/passwd /etc/shadow /etc/group root@目标IP:/etc/
⚠️ 生产环境不建议直接覆盖,容易冲突 UID
常见于 vsftpd + virtual users
迁移以下文件:
/etc/vsftpd/virtual_users.txt
/etc/vsftpd/virtual_users.db
/etc/pam.d/vsftpd
重新生成 db(如需要):
db_load -T -t hash -f virtual_users.txt virtual_users.db
rsync -avz --delete /data/ftp/ root@目标IP:/data/ftp/
保持权限:
rsync -avz --delete -p -o -g /data/ftp/ root@目标IP:/data/ftp/
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
setsebool -P ftpd_full_access on
restorecon -Rv /data/ftp
systemctl restart vsftpd
systemctl enable vsftpd
测试:
ftp 目标IP
或使用:
lftp ftp://user:pass@目标IP
| 问题 | 原因 |
|---|---|
| 登录失败 | PAM / 虚拟用户配置未迁移 |
| 无法写文件 | SELinux / 目录权限 |
| 被动模式连不上 | 防火墙未开被动端口 |
| UID 不一致 | 文件属主错乱 |
我可以给你 精确的一步到位迁移命令。