迁移 Ubuntu 上的 FTP 服务器(通常指 vsftpd,也可能是 ProFTPD 或 Pure-FTPd),一般包含 配置、用户、数据、权限 四部分的迁移。下面以 vsftpd 为例,给你一套完整、可操作的迁移流程。
dpkg -l | grep ftp
常见:
vsftpdproftpdpure-ftpd本文以 vsftpd 为主。
cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
tar czvf vsftpd-config.tar.gz /etc/vsftpd.conf
FTP 用户通常为 系统用户,需迁移:
# 用户和组
tar czvf ftp-users.tar.gz /etc/passwd /etc/shadow /etc/group
⚠️ 注意
假设 FTP 根目录为 /srv/ftp 或 /home/ftp:
tar czvf ftp-data.tar.gz /srv/ftp
或:
rsync -avz /srv/ftp/ root@new_server:/srv/ftp/
sudo apt update
sudo apt install vsftpd -y
tar xzvf vsftpd-config.tar.gz -C /
或手动复制:
cp vsftpd.conf /etc/vsftpd.conf
⚠️ 不建议直接覆盖 /etc/passwd,推荐方式:
✅ 方式一(推荐):只迁移 FTP 用户
# 在新服务器创建相同用户
useradd -m ftpuser
passwd ftpuser
✅ 方式二:同步 UID/GID 避免权限问题:
useradd -u 1001 -g 1001 ftpuser
tar xzvf ftp-data.tar.gz -C /
或:
rsync -avz /srv/ftp/ root@new_server:/srv/ftp/
设置权限:
chown -R ftpuser:ftpuser /srv/ftp
chmod -R 755 /srv/ftp
编辑:
vim /etc/vsftpd.conf
常见关键项:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
如启用被动模式:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
防火墙放行:
ufw allow 20/tcp
ufw allow 21/tcp
ufw allow 30000:31000/tcp
systemctl restart vsftpd
systemctl enable vsftpd
测试连接:
ftp new_server_ip
或使用 FileZilla / lftp。
| 问题 | 解决 |
|---|---|
| 530 Login incorrect | PAM 问题,检查 /etc/pam.d/vsftpd |
| 无法写入 | 权限 / write_enable=YES |
| 被动模式失败 | 防火墙 / pasv 端口 |
| chroot 报错 | allow_writeable_chroot=YES |
| 服务 | 配置路径 |
|---|---|
| ProFTPD | /etc/proftpd/ |
| Pure-FTPd | /etc/pure-ftpd/ |
我可以 按你实际使用的 FTP 服务 给你定制迁移方案。
你可以直接告诉我:
我可以给你 精确到命令级别的迁移方案。