温馨提示×

怎样迁移Linux FTP数据

小樊
37
2026-07-06 05:28:20
栏目: 智能运维

迁移 Linux FTP 数据,通常不只是“拷贝文件”,还要考虑用户、权限、被动端口、配置文件、服务类型等。下面按最常用、最稳妥的方式给你一个完整流程,适用于 vsftpd / proftpd / pure-ftpd 等常见 FTP 服务。


一、迁移前准备

1️⃣ 确认 FTP 服务类型

ps -ef | grep ftp

systemctl status vsftpd
systemctl status proftpd
systemctl status pure-ftpd

2️⃣ 确认 FTP 数据目录

常见位置:

/var/ftp
/home/ftp
/srv/ftp

或配置文件中定义的目录。

查看配置文件:

# vsftpd
cat /etc/vsftpd/vsftpd.conf

# proftpd
cat /etc/proftpd/proftpd.conf

关注:

  • 数据目录
  • 被动端口范围
  • 用户认证方式(系统用户 / 虚拟用户)

二、迁移 FTP 数据(核心步骤)

✅ 推荐方式:rsync(最安全)

1️⃣ 在旧服务器执行

rsync -avz --delete /data/ftp/ root@新服务器IP:/data/ftp/

参数说明:

  • -a:保留权限、时间、软链接
  • -v:显示过程
  • -z:压缩传输
  • --delete:保持目标与源一致

强烈建议迁移前先测试一次


2️⃣ 保持文件权限(非常重要)

如果 FTP 使用系统用户:

rsync -avz --numeric-ids /data/ftp/ root@新服务器IP:/data/ftp/

三、迁移 FTP 用户

方式一:系统用户(本地账号)

1️⃣ 导出用户

grep ftp /etc/passwd > ftpusers.txt
grep ftp /etc/group > ftpgroups.txt

2️⃣ 在新服务器导入

useradd -m ftpuser
passwd ftpuser

⚠️ UID/GID 必须一致,否则权限会乱。


方式二:虚拟用户(vsftpd 常见)

迁移以下文件:

/etc/vsftpd/virtual_users.txt
/etc/vsftpd/vsftpd_user_conf/

并重新生成 db:

db_load -T -t hash -f virtual_users.txt virtual_users.db

四、迁移 FTP 配置文件

vsftpd 示例

scp /etc/vsftpd/vsftpd.conf root@新服务器:/etc/vsftpd/

proftpd

scp /etc/proftpd/* root@新服务器:/etc/proftpd/

五、防火墙 & 被动模式(常被忽略)

1️⃣ 放行 FTP 端口

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

2️⃣ 被动端口(非常重要)

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 测试上传/下载。


七、迁移检查清单 ✅

  • [ ] 数据目录完整
  • [ ] 用户 UID/GID 一致
  • [ ] 权限正常
  • [ ] 被动端口开放
  • [ ] 防火墙放行
  • [ ] 能上传、下载、删除

八、常见坑(经验总结)

问题 原因
登录成功但无法列目录 被动端口未放行
上传失败 目录权限或 SELinux
用户无法登录 UID 不一致
中文乱码 客户端编码问题

九、如果你愿意,我可以帮你:

✅ 根据你的 FTP 服务类型 给出精确命令
✅ 帮你写 一键迁移脚本
✅ 排查 迁移后无法登录/上传 的问题

你可以直接告诉我:

使用的是 vsftpd / proftpd / pure-ftpd?
系统用户还是虚拟用户?

0