迁移 CentOS 上的 FTP Server 数据,通常取决于你使用的是哪种 FTP 服务(最常见的是 vsftpd),以及你是否要 迁移到另一台服务器 或 只是迁移数据目录。下面我按最常见的 vsftpd + 本地用户/匿名用户 场景,给你一套完整、可操作的迁移方案。
rpm -qa | grep -E "vsftpd|proftpd|pure-ftpd"
常见结果:
vsftpd ✅(最常见)proftpdpure-ftpd下面以 vsftpd 为主说明。
systemctl stop vsftpd
systemctl disable vsftpd # 可选
常见位置:
/var/ftp
/home/ftpuser
/data/ftp
查看配置文件确认:
cat /etc/vsftpd/vsftpd.conf | grep -E "local_root|anon_root"
cd /var/ftp
tar czvf ftpdata.tar.gz .
或指定目录:
tar czvf /tmp/ftpdata.tar.gz /data/ftp
scp ftpdata.tar.gz root@新服务器IP:/tmp/
mkdir -p /data/ftp
tar xzvf /tmp/ftpdata.tar.gz -C /data/ftp
chown -R ftpuser:ftpuser /data/ftp
chmod -R 755 /data/ftp
# 原服务器
grep ftpuser /etc/passwd >> user.txt
grep ftpuser /etc/shadow >> shadow.txt
grep ftpuser /etc/group >> group.txt
复制到新服务器后:
useradd -M -d /data/ftp ftpuser
passwd ftpuser
⚠️ 不建议直接覆盖 /etc/shadow,更安全方式是重新设置密码。
tar czvf vsftpd_conf.tar.gz /etc/vsftpd
tar xzvf vsftpd_conf.tar.gz -C /
vim /etc/vsftpd/vsftpd.conf
常见需检查项:
local_root=/data/ftp
anon_root=/data/ftp
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
getenforce
semanage fcontext -a -t public_content_t "/data/ftp(/.*)?"
restorecon -Rv /data/ftp
或临时关闭(不推荐生产环境):
setenforce 0
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
systemctl start vsftpd
systemctl enable vsftpd
ftp 新服务器IP
或使用 FileZilla / WinSCP 测试。
| 问题 | 原因 |
|---|---|
| 530 Login incorrect | 用户/密码错误 |
| 550 Permission denied | 权限或 SELinux |
| 被动模式连不上 | 防火墙未放行被动端口 |
| 目录为空 | local_root 没配置 |
你可以直接告诉我:
我可以给你 精确到命令级别 的迁移方案。