温馨提示×

linux ftpserver怎样迁移数据

小樊
47
2026-09-02 05:59:55
栏目: 智能运维

在 Linux 上迁移 FTP 服务器数据,通常包含文件数据迁移FTP 服务配置/账号迁移两部分。下面按常见场景给你一个完整思路和实操示例。


一、先明确你用的 FTP 服务

常见 FTP 服务端:

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

不同服务配置位置略有不同,但迁移思路一致。


二、FTP 数据迁移总体步骤

1️⃣ 在原服务器上准备工作

(1)确认 FTP 根目录

一般位置:

  • /home/ftp
  • /srv/ftp
  • /var/ftp
  • 或用户家目录 /home/username

查看 vsftpd 配置:

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

(2)停止 FTP 服务(避免迁移时文件变动)

systemctl stop vsftpd
# 或
service vsftpd stop

2️⃣ 迁移文件数据(核心)

方法一:rsync(推荐)

目标服务器执行:

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

参数说明:

  • -a 保留权限、时间
  • -v 显示过程
  • -z 压缩传输
  • --delete 保持完全一致

✅ 适合大文件、断点续传


方法二:scp(简单)

scp -r root@原服务器IP:/data/ftp /data/

方法三:tar + 传输(适合离线)

原服务器:

tar czf ftpdata.tar.gz /data/ftp

目标服务器:

tar xzf ftpdata.tar.gz -C /

3️⃣ 迁移 FTP 用户和配置

(1)系统用户 FTP

如果是 系统用户登录 FTP

  • 迁移 /etc/passwd
  • 迁移 /etc/shadow
  • 迁移 /etc/group

⚠️ 不建议直接覆盖,建议:

grep ftpuser /etc/passwd >> /etc/passwd
grep ftpuser /etc/shadow >> /etc/shadow

并同步用户家目录和权限。


(2)vsftpd 虚拟用户

常见文件:

  • /etc/vsftpd/vsftpd.user_list
  • /etc/vsftpd/vsftpd_login.db(db 文件)
  • PAM 配置 /etc/pam.d/vsftpd

迁移步骤:

scp /etc/vsftpd/* 目标服务器:/etc/vsftpd/
scp /etc/pam.d/vsftpd 目标服务器:/etc/pam.d/

(3)配置文件迁移

scp /etc/vsftpd/vsftpd.conf 目标服务器:/etc/vsftpd/

4️⃣ 在目标服务器恢复 FTP 服务

(1)安装 FTP 服务

yum install vsftpd -y
# 或
apt install vsftpd -y

(2)启动服务

systemctl start vsftpd
systemctl enable vsftpd

(3)检查端口

netstat -tunlp | grep 21

三、权限和 SELinux 注意(非常关键)

1️⃣ 文件权限

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

2️⃣ SELinux(CentOS/RHEL)

setsebool -P ftpd_full_access on
restorecon -Rv /data/ftp

四、验证迁移是否成功

ftp 目标服务器IP

或用 FileZilla 测试上传/下载。


五、常见坑总结

✅ 文件传完但无法登录 → 用户/密码未迁移
✅ 能登录但不能上传 → 权限或 SELinux
✅ 文件大小不一致 → 没用 rsync
✅ 被动模式连不上 → 防火墙未开被动端口


如果你愿意,可以告诉我:

  • 用的哪种 FTP(vsftpd / proftpd / pure-ftpd)
  • 是否是虚拟用户
  • 源和目标系统(CentOS / Ubuntu)

我可以直接给你一步一步的命令脚本

0