温馨提示×

linux ftpserver如何迁数据

小樊
34
2026-10-22 19:10:56
栏目: 智能运维

在 Linux 下迁移 FTP 服务器数据,通常分为同机迁移、跨机迁移(最常见)、以及更换 FTP 软件(如 vsftpd → proftpd)几种场景。下面按最通用的做法给你一套清晰方案。


一、迁移前准备

1. 确认 FTP 服务类型

ps aux | grep ftp
# 常见:vsftpd、proftpd、pure-ftpd

2. 找到 FTP 数据目录

常见位置:

  • vsftpd:/home/* 或 /var/ftp
  • proftpd:/srv/ftp
  • 自定义:看配置文件
grep -i "local_root\|ftp_directory\|home" /etc/vsftpd.conf

3. 停止 FTP 服务(避免数据不一致)

systemctl stop vsftpd
# 或
systemctl stop proftpd

二、同服务器内迁移(换磁盘/目录)

示例:迁移到 /data/ftp

mkdir -p /data/ftp
cp -a /var/ftp/. /data/ftp/
chown -R ftp:ftp /data/ftp

修改配置:

vi /etc/vsftpd.conf
local_root=/data/ftp

重启:

systemctl start vsftpd

三、跨服务器迁移(最常用)

方案 1:rsync(推荐 ✅)

源服务器:

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

目标服务器:

chown -R ftp:ftp /data/ftp

优点:

  • 支持断点
  • 权限/时间保留
  • 增量同步

方案 2:scp(简单但慢)

scp -r /var/ftp root@目标IP:/data/

方案 3:tar + 传输(大文件友好)

tar czf ftp.tar.gz -C /var/ftp .
scp ftp.tar.gz root@目标IP:/data/

目标服务器:

tar xzf ftp.tar.gz -C /data/ftp

四、FTP 用户账号迁移

vsftpd(系统用户)

# 源
getent passwd | grep ftp > ftpusers.txt

# 目标
while read line; do useradd ...; done < ftpusers.txt

或整库迁移:

rsync /etc/passwd /etc/shadow /etc/group 目标服务器:/etc/

虚拟用户(vsftpd + PAM)

迁移:

/etc/vsftpd/virtual_users.txt
/etc/pam.d/vsftpd

五、配置迁移

rsync /etc/vsftpd/ 目标:/etc/vsftpd/
systemctl restart vsftpd

六、验证迁移

ftp 目标IP
ls

或:

lftp ftp://user:pass@ip

七、常见坑

✅ 权限问题
✅ SELinux(建议临时关):

setenforce 0

✅ 防火墙:

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

如果你能告诉我:

  • 用的 哪种 FTP 服务
  • 是 同机还是跨机
  • 是否有 虚拟用户

我可以直接给你精确命令。

0 踩