迁移 CentOS 上的 FTP Server(如 vsftpd) 通常包括 配置文件、用户数据、目录权限、防火墙/SELinux 设置 等。下面给你一套完整、可操作的迁移方案,适用于 CentOS 7 / 8 / Stream。
常见 FTP 服务器:
查看当前服务:
systemctl status vsftpd
# 或
ps -ef | grep ftp
以下以 vsftpd 为例说明。
cp -a /etc/vsftpd /etc/vsftpd.bak
tar czvf vsftpd-etc.tar.gz /etc/vsftpd
tar czvf ftpdata.tar.gz /data/ftp
getent passwd | grep ftp > ftpusers.txt
getent group | grep ftp > ftpgroups.txt
cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
grep -v "^#" /etc/vsftpd/vsftpd.conf
重点检查:
local_rootanon_rootchroot_local_userpasv_min_port / pasv_max_portssl_enablefirewall-cmd --list-all
getenforce
如有自定义端口,记录:
semanage port -l | grep ftp
yum install -y vsftpd
# 或 dnf
dnf install -y vsftpd
tar xzvf vsftpd-etc.tar.gz -C /
或手动覆盖:
cp vsftpd.conf /etc/vsftpd/
tar xzvf ftpdata.tar.gz -C /
chown -R ftpuser:ftpuser /data/ftp
⚠️ UID/GID 保持一致
groupadd -g 1001 ftpuser
useradd -u 1001 -g ftpuser ftpuser
cp virtual_users.db /etc/vsftpd/
cp /etc/pam.d/vsftpd /etc/pam.d/
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
如被动模式:
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload
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 UIDchroot 权限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:
如果你愿意,可以告诉我:
我可以给你一份 专属于你环境的迁移脚本。