温馨提示×

linux ftpserver怎样迁移

小樊
48
2026-09-05 08:27:02
栏目: 智能运维

在 Linux 上迁移 FTP 服务器(如 vsftpd / proftpd / pure-ftpd)通常包含 数据迁移、配置迁移、用户与权限迁移、服务切换 几个步骤。下面给你一套通用、可落地的方案。


一、迁移前准备

1. 确认原 FTP 服务器类型

ps -ef | grep -E "vsftpd|proftpd|pure-ftpd"

或

systemctl status vsftpd

常见配置文件位置:

  • vsftpd:/etc/vsftpd/
  • proftpd:/etc/proftpd/
  • pure-ftpd:/etc/pure-ftpd/

2. 记录关键信息

  • FTP 根目录(如 /data/ftp)
  • 监听端口(21 / 被动端口范围)
  • 用户认证方式:
    • 系统用户
    • 虚拟用户(文件 / MySQL / LDAP)
  • 是否启用 SSL/TLS

二、数据迁移(最重要)

方式一:rsync(推荐)

在原服务器执行:

rsync -avz --delete /data/ftp/ user@newserver:/data/ftp/

如端口不同:

rsync -avz -e "ssh -p 22" /data/ftp/ user@newserver:/data/ftp/

✅ 优点:

  • 保留权限、时间戳
  • 可多次同步,减少停机时间

方式二:tar + scp

tar czf ftpdata.tar.gz /data/ftp
scp ftpdata.tar.gz user@newserver:/data/

三、配置迁移

vsftpd 示例

scp /etc/vsftpd/* user@newserver:/etc/vsftpd/

注意检查:

  • local_root
  • pasv_min_port / pasv_max_port
  • listen_ipv6
  • ssl_enable

四、用户与权限迁移

1. 系统用户

导出用户:

getent passwd | grep ftp > ftpusers.txt

新服务器创建:

useradd -d /data/ftp/user -s /sbin/nologin user

2. 虚拟用户(vsftpd 示例)

迁移:

  • /etc/vsftpd/virtual_users.txt
  • PAM 配置 /etc/pam.d/vsftpd

重新生成数据库:

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

五、新服务器部署 FTP

以 vsftpd 为例:

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

systemctl enable vsftpd
systemctl start vsftpd

开放防火墙:

firewall-cmd --add-port=21/tcp --permanent
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload

六、验证与切换

1. 本机测试

ftp localhost

2. 客户端测试

ftp newserver_ip

3. DNS / 负载切换

  • 修改 DNS 指向新服务器
  • 或停旧 FTP:
systemctl stop vsftpd

七、常见问题

1. 登录失败

  • 家目录权限错误
  • SELinux 未关闭或上下文不对
setsebool -P ftp_home_dir on

2. 被动模式连不上

  • 防火墙未放行被动端口
  • pasv_address 配置错误

3. 文件权限不对

chown -R ftpuser:ftpuser /data/ftp

八、零停机迁移建议(进阶)

  1. 先 rsync 全量
  2. 低峰期再次 rsync 增量
  3. 切换 DNS
  4. 观察日志确认无连接

如果你能告诉我:

  • ✅ 使用的 FTP 软件
  • ✅ 用户认证方式
  • ✅ 是否跨机房 / 云

我可以给你更精确的迁移命令模板。

0 踩