迁移 Linux FTP 数据,通常不只是“拷贝文件”,还要考虑用户、权限、被动端口、配置文件、服务类型等。下面按最常用、最稳妥的方式给你一个完整流程,适用于 vsftpd / proftpd / pure-ftpd 等常见 FTP 服务。
ps -ef | grep ftp
或
systemctl status vsftpd
systemctl status proftpd
systemctl status pure-ftpd
常见位置:
/var/ftp
/home/ftp
/srv/ftp
或配置文件中定义的目录。
查看配置文件:
# vsftpd
cat /etc/vsftpd/vsftpd.conf
# proftpd
cat /etc/proftpd/proftpd.conf
关注:
rsync -avz --delete /data/ftp/ root@新服务器IP:/data/ftp/
参数说明:
-a:保留权限、时间、软链接-v:显示过程-z:压缩传输--delete:保持目标与源一致✅ 强烈建议迁移前先测试一次
如果 FTP 使用系统用户:
rsync -avz --numeric-ids /data/ftp/ root@新服务器IP:/data/ftp/
grep ftp /etc/passwd > ftpusers.txt
grep ftp /etc/group > ftpgroups.txt
useradd -m ftpuser
passwd ftpuser
⚠️ UID/GID 必须一致,否则权限会乱。
迁移以下文件:
/etc/vsftpd/virtual_users.txt
/etc/vsftpd/vsftpd_user_conf/
并重新生成 db:
db_load -T -t hash -f virtual_users.txt virtual_users.db
scp /etc/vsftpd/vsftpd.conf root@新服务器:/etc/vsftpd/
scp /etc/proftpd/* root@新服务器:/etc/proftpd/
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
pasv_min_port=30000
pasv_max_port=31000
防火墙也要放行:
firewall-cmd --add-port=30000-31000/tcp --permanent
systemctl restart vsftpd
systemctl enable vsftpd
测试:
ftp 新服务器IP
或用 FileZilla 测试上传/下载。
| 问题 | 原因 |
|---|---|
| 登录成功但无法列目录 | 被动端口未放行 |
| 上传失败 | 目录权限或 SELinux |
| 用户无法登录 | UID 不一致 |
| 中文乱码 | 客户端编码问题 |
✅ 根据你的 FTP 服务类型 给出精确命令
✅ 帮你写 一键迁移脚本
✅ 排查 迁移后无法登录/上传 的问题
你可以直接告诉我:
使用的是 vsftpd / proftpd / pure-ftpd?
是 系统用户还是虚拟用户?