迁移 Linux FTP 服务器通常包括 用户数据、配置文件、FTP 目录、权限和可能的虚拟用户/数据库。下面按最常见场景给你一套完整、可操作的迁移方案(以 vsftpd 为例,也适用于 pure-ftpd / proftpd)。
ps -ef | grep ftp
常见:
查看版本:
vsftpd -v
# CentOS / Rocky / Alma
yum install -y vsftpd
# Ubuntu / Debian
apt install -y vsftpd
旧服务器:
/etc/vsftpd/vsftpd.conf
新服务器:
scp /etc/vsftpd/vsftpd.conf new_server:/etc/vsftpd/
⚠️ 注意:
chroot、ssl、pasv 端口假设 FTP 根目录是 /data/ftp
旧服务器执行:
rsync -avz --delete /data/ftp/ new_server:/data/ftp/
带权限迁移:
rsync -avz --delete -X --numeric-ids /data/ftp/ new_server:/data/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
如果使用的是系统用户:
scp /etc/shadow new_server:/etc/shadow
scp /etc/passwd new_server:/etc/passwd
scp /etc/group new_server:/etc/group
⚠️ 生产环境不建议直接覆盖,建议只同步 FTP 相关用户。
迁移以下文件:
/etc/vsftpd/vusers.db
/etc/pam.d/vsftpd
新服务器:
chmod 600 /etc/vsftpd/vusers.db
firewall-cmd --add-port=21/tcp --permanent
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
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 临时关闭测试:
setenforce 0
永久关闭:
vi /etc/selinux/config
SELINUX=disabled
你可以直接告诉我:
我可以给你 定制版迁移方案 + 命令脚本 ✅