在 Ubuntu 上迁移 vsftpd(vsftp) 通常涉及配置、用户、数据目录三部分。下面按常见场景给你一个完整迁移方案。
dpkg -l | grep vsftpd
vsftpd 主配置文件一般在:
/etc/vsftpd.conf
/etc/vsftpd/
备份:
sudo tar czvf vsftpd-conf.tar.gz /etc/vsftpd.conf /etc/vsftpd
如果是系统用户:
# 用户和组
sudo getent passwd | grep ftp
sudo getent group | grep ftp
如果是虚拟用户(PAM): 常见文件:
/etc/pam.d/vsftpd
/etc/vsftpd/virtual_users.txt
/etc/vsftpd/virtual_users.db
备份:
sudo tar czvf vsftpd-users.tar.gz /etc/pam.d/vsftpd /etc/vsftpd/virtual_users.*
查看数据目录(在 vsftpd.conf 中):
grep -E "local_root|anon_root|user_sub_token" /etc/vsftpd.conf
常见目录:
/srv/ftp
/home/ftpuser
/var/ftp
备份:
sudo tar czvf ftpdata.tar.gz /srv/ftp
sudo apt update
sudo apt install vsftpd
sudo tar xzvf vsftpd-conf.tar.gz -C /
如果用了系统用户,需在目标机创建相同 UID/GID:
sudo useradd -u 1001 -M -s /usr/sbin/nologin ftpuser
sudo tar xzvf vsftpd-users.tar.gz -C /
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
sudo tar xzvf ftpdata.tar.gz -C /
sudo chown -R ftpuser:ftpuser /srv/ftp
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
测试登录:
ftp localhost
或:
lftp ftp://user@localhost
/etc/pam.d/vsftpdchmod 600 /etc/vsftpd/virtual_users.db
确保:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
并在防火墙放行。
Ubuntu 默认不启用 SELinux。
rsync 同步数据:rsync -avz /srv/ftp/ user@newserver:/srv/ftp/
如果你愿意,可以告诉我:
我可以给你更精确的迁移脚本。