温馨提示×

怎么迁移CentOS的FTPServer

小樊
46
2026-08-04 03:42:55
栏目: 智能运维

迁移 CentOS 上的 FTP Server(如 vsftpd) 通常包括 配置文件、用户数据、目录权限、防火墙/SELinux 设置 等。下面给你一套完整、可操作的迁移方案,适用于 CentOS 7 / 8 / Stream


一、迁移前准备

1️⃣ 确认当前 FTP 服务类型

常见 FTP 服务器:

  • vsftpd(最常见)
  • proftpd
  • pure-ftpd

查看当前服务:

systemctl status vsftpd
# 或
ps -ef | grep ftp

以下以 vsftpd 为例说明。


二、在原服务器(旧 CentOS)上的操作

1️⃣ 备份 FTP 配置文件

cp -a /etc/vsftpd /etc/vsftpd.bak
tar czvf vsftpd-etc.tar.gz /etc/vsftpd

2️⃣ 备份用户数据

FTP 主目录(示例)

tar czvf ftpdata.tar.gz /data/ftp

系统用户(如果使用本地用户)

getent passwd | grep ftp > ftpusers.txt
getent group | grep ftp > ftpgroups.txt

虚拟用户(如使用虚拟用户)

  • 虚拟用户配置文件
  • PAM 配置
cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

3️⃣ 记录关键配置

grep -v "^#" /etc/vsftpd/vsftpd.conf

重点检查:

  • local_root
  • anon_root
  • chroot_local_user
  • pasv_min_port / pasv_max_port
  • ssl_enable

4️⃣ 防火墙 & SELinux 设置

firewall-cmd --list-all
getenforce

如有自定义端口,记录:

semanage port -l | grep ftp

三、在新服务器(新 CentOS)上的操作

1️⃣ 安装 vsftpd

yum install -y vsftpd
# 或 dnf
dnf install -y vsftpd

2️⃣ 恢复配置文件

tar xzvf vsftpd-etc.tar.gz -C /

或手动覆盖:

cp vsftpd.conf /etc/vsftpd/

3️⃣ 恢复 FTP 数据目录

tar xzvf ftpdata.tar.gz -C /
chown -R ftpuser:ftpuser /data/ftp

⚠️ UID/GID 保持一致

groupadd -g 1001 ftpuser
useradd -u 1001 -g ftpuser ftpuser

4️⃣ 恢复虚拟用户(如有)

cp virtual_users.db /etc/vsftpd/
cp /etc/pam.d/vsftpd /etc/pam.d/

四、防火墙 & SELinux 配置

1️⃣ 防火墙

firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

如被动模式:

firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload

2️⃣ SELinux(非常重要)

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

如自定义目录:

semanage fcontext -a -t public_content_t "/data/ftp(/.*)?"
restorecon -Rv /data/ftp

五、启动并验证

systemctl enable vsftpd
systemctl start vsftpd
systemctl status vsftpd

测试连接

ftp localhost
# 或
lftp ftp://user:pass@localhost

六、常见问题排查

❌ 无法登录

  • 检查 /etc/passwd UID
  • 检查 chroot 权限
  • 查看日志:
tail -f /var/log/secure

❌ 上传失败

ls -ld /data/ftp
setfacl -m u:ftpuser:rwx /data/ftp

七、迁移检查清单 ✅

项目 是否完成
配置文件
用户 / 虚拟用户
数据目录
防火墙
SELinux
服务启动

八、可选方案(推荐)

如果可以 直接迁移整台服务器

rsync -avz /etc/vsftpd / root@new:/etc/
rsync -avz /data/ftp /data/ root@new:

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

  • ✅ 使用的是 vsftpd / proftpd / pure-ftpd
  • ✅ 是否 虚拟用户
  • CentOS 版本
  • ✅ 是否 启用 SSL

我可以给你一份 专属于你环境的迁移脚本

0