在 Ubuntu 上迁移 FTP 服务器,通常分为 同机迁移 和 跨服务器迁移 两种场景。下面我按最常见、最稳妥的方式给你一个完整流程,适用于 vsftpd(Ubuntu 上最常用的 FTP 服务)。
dpkg -l | grep ftp
常见:
下面以 vsftpd 为例。
cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
查看关键配置:
grep -E "local_root|chroot|anonymous|listen|ssl" /etc/vsftpd.conf
sudo systemctl stop vsftpd
假设 FTP 数据目录是 /home/ftpdata 或 /srv/ftp
sudo tar czvf ftpdata.tar.gz /home/ftpdata
scp ftpdata.tar.gz user@new_server_ip:/tmp/
sudo tar xzvf /tmp/ftpdata.tar.gz -C /
⚠️ 注意目录结构要一致,否则权限容易出问题。
# 源服务器
sudo cat /etc/passwd | grep ftp
sudo cat /etc/shadow | grep ftp
sudo cat /etc/group | grep ftp
✅ 推荐方式(更安全)
直接在新服务器重新创建用户,避免 UID 冲突:
sudo useradd -m -s /usr/sbin/nologin ftpuser
sudo passwd ftpuser
sudo chown -R ftpuser:ftpuser /home/ftpdata
sudo chmod 755 /home/ftpdata
sudo apt update
sudo apt install vsftpd
sudo cp /etc/vsftpd.conf.bak /etc/vsftpd.conf
或手动同步关键配置:
listen=YES
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
local_root=/home/ftpdata
scp /etc/ssl/private/vsftpd.pem new_server:/etc/ssl/private/
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
ss -antp | grep 21
ftp new_server_ip
或使用 FileZilla 测试 FTP / FTPS
/etc/shells 缺少 nologinecho "/usr/sbin/nologin" | sudo tee -a /etc/shells
allow_writeable_chroot=YES
| 项目 | 是否完成 |
|---|---|
| 数据目录迁移 | ✅ |
| 用户/权限 | ✅ |
| vsftpd.conf | ✅ |
| SSL 证书 | ✅ |
| 服务启动 | ✅ |
| 客户端测试 | ✅ |
你可以直接贴出:
cat /etc/vsftpd.conf