温馨提示×

怎样迁移linux ftpserver

小樊
42
2026-09-29 09:14:38
栏目: 智能运维

迁移 Linux 上的 FTP 服务器(如 vsftpd、ProFTPD、Pure-FTPd 等)通常包括:用户与权限、FTP 配置、数据文件、以及可能的端口与防火墙规则。下面以最常见场景给你一个通用、可操作的迁移流程。


一、迁移前准备

1. 确认 FTP 服务类型

ps aux | grep ftp
# 或
systemctl status vsftpd

常见服务:

  • vsftpd
  • proftpd
  • pure-ftpd

2. 记录原服务器信息

  • FTP 根目录(如 /home/ftp 或 /srv/ftp)
  • 使用系统用户还是虚拟用户
  • 端口(默认 21,是否有被动端口范围)
  • 是否启用 SSL/TLS

二、迁移 FTP 配置

vsftpd 示例

原服务器:

cp /etc/vsftpd.conf /tmp/vsftpd.conf.bak

新服务器:

yum install vsftpd   # CentOS
apt install vsftpd   # Ubuntu/Debian

复制配置文件:

scp root@old-server:/etc/vsftpd.conf /etc/vsftpd.conf

如启用了 SSL:

scp /etc/ssl/certs/ftp.pem new-server:/etc/ssl/certs/

三、迁移用户与权限

1. 系统用户方式

导出用户:

getent passwd | grep ftp > ftpusers.txt

新服务器创建用户:

useradd -m ftpuser
passwd ftpuser

⚠️ 密码不会自动迁移,需重新设置或同步 /etc/shadow(不推荐直接复制)


2. 虚拟用户方式(vsftpd + PAM)

迁移:

  • /etc/vsftpd/virtual_users.txt
  • /etc/pam.d/vsftpd
  • 虚拟用户家目录

重新生成数据库:

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

四、迁移 FTP 数据

推荐方式(保持权限)

rsync -avz --delete /srv/ftp/ root@new-server:/srv/ftp/

或使用 tar:

tar czpf ftpdata.tar.gz /srv/ftp
scp ftpdata.tar.gz new-server:

五、防火墙与 SELinux

防火墙

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

被动端口(vsftpd):

pasv_min_port=30000
pasv_max_port=31000
firewall-cmd --add-port=30000-31000/tcp --permanent

SELinux(如有)

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

六、启动并验证

systemctl enable vsftpd
systemctl start vsftpd

测试:

ftp new-server
# 或
lftp ftp://user@new-server

七、可选:DNS / 负载 / 证书更新

  • 修改 DNS 指向新服务器
  • 更新证书(Let’s Encrypt)
  • 旧服务器保留一段时间做回滚

如果你能告诉我:

  • ✅ 使用的是哪种 FTP 服务
  • ✅ 系统用户还是虚拟用户
  • ✅ CentOS / Ubuntu / 其他

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

0 踩