温馨提示×

Linux FTPServer怎么迁移数据

小樊
38
2026-08-16 22:36:04
栏目: 智能运维

Linux 下 FTPServer 数据迁移,常见场景是:
从一台服务器迁移到另一台服务器,或 更换 FTP 软件(如 vsftpd → ProFTPD)
下面按最通用、最安全的做法给你一套完整流程。


一、迁移前准备

1️⃣ 确认 FTP 类型

常见 FTP 服务:

  • vsftpd(最常见)
  • ProFTPD
  • Pure-FTPd

查看当前服务:

ps -ef | grep ftp
# 或
systemctl status vsftpd

2️⃣ 确认 FTP 数据目录

常见目录:

/var/ftp
/home/ftp
/data/ftp

查看配置文件确认:

# vsftpd
grep -E "local_root|anon_root" /etc/vsftpd/vsftpd.conf

# ProFTPD
grep -E "DefaultRoot|Directory" /etc/proftpd/proftpd.conf

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

✅ 方案一:使用 rsync(强烈推荐)

1️⃣ 在 新服务器 上执行(推荐)

rsync -avz --delete -e ssh root@老服务器IP:/data/ftp/ /data/ftp/

参数说明:

  • -a 保留权限、时间、软链接
  • -v 显示过程
  • -z 压缩传输
  • --delete 保持完全一致(慎用)

适合大文件、增量同步


✅ 方案二:打包 + 传输(适合一次性迁移)

老服务器:

cd /data
tar czvf ftpdata.tar.gz ftp/
scp ftpdata.tar.gz root@新服务器IP:/data/

新服务器:

cd /data
tar xzvf ftpdata.tar.gz

三、迁移用户和权限(非常重要)

1️⃣ 系统用户 FTP

如果是 系统用户登录 FTP

迁移用户:

# 老服务器
getent passwd > users.txt
getent shadow > shadow.txt
getent group > groups.txt

新服务器导入(谨慎):

# 只建议手动重建用户
useradd -m ftpuser
passwd ftpuser

⚠️ 不建议直接覆盖 /etc/passwd/etc/shadow


2️⃣ 虚拟用户(vsftpd)

如果是虚拟用户:

迁移这些文件:

/etc/vsftpd/vuser.db
/etc/vsftpd/vsftpd_user_conf/

重新加载:

systemctl restart vsftpd

四、迁移 FTP 配置文件

vsftpd 示例

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

注意检查:

local_root=
anon_root=
chroot_local_user=

五、权限修复(常见问题)

1️⃣ 目录权限

chown -R ftpuser:ftpuser /data/ftp
chmod -R 755 /data/ftp

2️⃣ SELinux(CentOS/RHEL)

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

查看状态:

getenforce

六、测试验证

1️⃣ 本地测试

ftp localhost

2️⃣ 客户端测试

ftp 新服务器IP

3️⃣ 检查日志

tail -f /var/log/messages
tail -f /var/log/vsftpd.log

七、迁移后清理

  • 关闭老服务器 FTP
  • 确认新服务器开机自启
systemctl enable vsftpd

八、常见坑总结

问题 原因 解决
登录失败 用户不存在 重建用户
上传失败 权限不足 chown/chmod
目录不可见 SELinux 关闭或配置
中文乱码 编码问题 客户端 UTF-8

九、我可以帮你定制方案

你可以直接告诉我:

  1. FTP 软件(vsftpd / ProFTPD / Pure-FTPd)
  2. 系统版本(CentOS 7 / Rocky / Ubuntu)
  3. 是否虚拟用户
  4. 数据量大小

我可以给你 一条命令直接可用的迁移方案

0