温馨提示×

如何迁移linux ftpserver

小樊
42
2026-07-17 20:48:20
栏目: 智能运维

迁移 Linux FTP 服务器通常包括 用户数据、配置文件、FTP 目录、权限和可能的虚拟用户/数据库。下面按最常见场景给你一套完整、可操作的迁移方案(以 vsftpd 为例,也适用于 pure-ftpd / proftpd)。


一、迁移前准备

1️⃣ 确认当前 FTP 服务类型

ps -ef | grep ftp

常见:

  • vsftpd
  • pure-ftpd
  • proftpd

查看版本:

vsftpd -v

2️⃣ 在新服务器上安装相同 FTP 服务

# CentOS / Rocky / Alma
yum install -y vsftpd

# Ubuntu / Debian
apt install -y vsftpd

二、迁移核心内容

✅ 1. 迁移 FTP 配置文件

旧服务器:

/etc/vsftpd/vsftpd.conf

新服务器:

scp /etc/vsftpd/vsftpd.conf new_server:/etc/vsftpd/

⚠️ 注意:

  • 检查路径是否一致
  • 检查是否启用了 chrootsslpasv 端口

✅ 2. 迁移 FTP 数据目录(最重要)

假设 FTP 根目录是 /data/ftp

方法一:rsync(推荐 ✅)

旧服务器执行:

rsync -avz --delete /data/ftp/ new_server:/data/ftp/

带权限迁移:

rsync -avz --delete -X --numeric-ids /data/ftp/ new_server:/data/ftp/

✅ 3. 迁移系统 FTP 用户(本地用户模式)

迁移用户和组

旧服务器:

getent passwd ftpuser >> users.txt
getent group ftpgroup >> groups.txt

新服务器创建:

groupadd ftpgroup
useradd -g ftpgroup -d /data/ftp -s /sbin/nologin ftpuser

⚠️ UID / GID 必须一致,否则权限会乱!

查看 UID/GID:

id ftpuser

指定 UID/GID 创建:

useradd -u 1001 -g 1001 ftpuser

✅ 4. 迁移密码(本地用户)

如果使用的是系统用户:

scp /etc/shadow new_server:/etc/shadow
scp /etc/passwd new_server:/etc/passwd
scp /etc/group new_server:/etc/group

⚠️ 生产环境不建议直接覆盖,建议只同步 FTP 相关用户。


✅ 5. 虚拟用户迁移(如适用)

vsftpd + PAM + db 文件

迁移以下文件:

/etc/vsftpd/vusers.db
/etc/pam.d/vsftpd

新服务器:

chmod 600 /etc/vsftpd/vusers.db

✅ 6. 防火墙 & 被动模式端口

防火墙

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

vsftpd 配置示例

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

三、启动并验证

启动服务

systemctl enable vsftpd
systemctl start vsftpd

测试连接

ftp new_server_ip

或使用:

lftp ftp://user:pass@ip

四、常见问题排查

❌ 登录失败

检查:

/var/log/secure
/var/log/messages

❌ 上传失败

  • 目录权限
  • SELinux

SELinux 临时关闭测试:

setenforce 0

永久关闭:

vi /etc/selinux/config
SELINUX=disabled

五、迁移检查清单 ✅

  • [ ] FTP 软件版本一致
  • [ ] 配置文件迁移
  • [ ] 数据目录完整
  • [ ] UID/GID 一致
  • [ ] 被动端口开放
  • [ ] 防火墙放行
  • [ ] 日志无报错

六、如果你愿意,我可以进一步帮你

你可以直接告诉我:

  1. FTP 类型(vsftpd / pure-ftpd / proftpd)
  2. 用户类型(系统用户 / 虚拟用户)
  3. 是否使用 SSL
  4. 数据量大小

我可以给你 定制版迁移方案 + 命令脚本

0