在 CentOS 上迁移 FTP 服务器(如 vsftpd / proftpd)到另一台服务器,一般可以按下面的思路操作。以下以 vsftpd(最常见的 CentOS FTP 服务) 为例说明。
rpm -qa | grep vsftpd
# 或
rpm -qa | grep proftpd
cp -a /etc/vsftpd /etc/vsftpd.bak
(proftpd 一般为 /etc/proftpd/)
# 查看 FTP 用户
grep ftp /etc/passwd
# 虚拟用户数据库文件
ls -l /etc/vsftpd/
# 常见文件
# vsftpd_login.db
# virtual_users.txt
# 假设 FTP 根目录为 /data/ftp
tar czf ftpdata.tar.gz /data/ftp
yum install -y vsftpd
systemctl enable vsftpd
scp root@旧服务器:/etc/vsftpd.bak /etc/vsftpd
或解压备份:
cp -a /path/vsftpd.bak/* /etc/vsftpd/
scp root@旧服务器:/root/ftpdata.tar.gz /root/
tar xzf ftpdata.tar.gz -C /
在旧服务器:
grep ftpuser /etc/passwd >> user.txt
grep ftpuser /etc/shadow >> shadow.txt
grep ftpuser /etc/group >> group.txt
在新服务器:
useradd ftpuser
# 修改密码或恢复 shadow(谨慎)
⚠️ 不推荐直接复制 shadow,建议重新设密码:
passwd ftpuser
# 恢复 db 文件
cp vsftpd_login.db /etc/vsftpd/
chmod 600 /etc/vsftpd/vsftpd_login.db
# 如有 PAM 配置
cp /etc/pam.d/vsftpd /etc/pam.d/
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
setsebool -P ftpd_full_access on
restorecon -Rv /data/ftp
systemctl restart vsftpd
systemctl status vsftpd
测试连接:
ftp 新服务器IP
pasv_address如果你能告诉我:
我可以给你更精确的迁移命令脚本。