迁移 Linux 上的 FTP 服务器(如 vsftpd、ProFTPD、Pure-FTPd 等)通常包括:用户与权限、FTP 配置、数据文件、以及可能的端口与防火墙规则。下面以最常见场景给你一个通用、可操作的迁移流程。
ps aux | grep ftp
# 或
systemctl status vsftpd
常见服务:
/home/ftp 或 /srv/ftp)原服务器:
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/
导出用户:
getent passwd | grep ftp > ftpusers.txt
新服务器创建用户:
useradd -m ftpuser
passwd ftpuser
⚠️ 密码不会自动迁移,需重新设置或同步
/etc/shadow(不推荐直接复制)
迁移:
/etc/vsftpd/virtual_users.txt/etc/pam.d/vsftpd重新生成数据库:
db_load -T -t hash -f virtual_users.txt virtual_users.db
rsync -avz --delete /srv/ftp/ root@new-server:/srv/ftp/
或使用 tar:
tar czpf ftpdata.tar.gz /srv/ftp
scp ftpdata.tar.gz new-server:
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
setsebool -P ftpd_full_access on
restorecon -Rv /srv/ftp
systemctl enable vsftpd
systemctl start vsftpd
测试:
ftp new-server
# 或
lftp ftp://user@new-server
如果你能告诉我:
我可以给你更精确的迁移命令。