Linux 下 FTPServer 数据迁移,常见场景是:
从一台服务器迁移到另一台服务器,或 更换 FTP 软件(如 vsftpd → ProFTPD)。
下面按最通用、最安全的做法给你一套完整流程。
常见 FTP 服务:
查看当前服务:
ps -ef | grep ftp
# 或
systemctl status vsftpd
常见目录:
/var/ftp
/home/ftp
/data/ftp
查看配置文件确认:
# vsftpd
grep -E "local_root|anon_root" /etc/vsftpd/vsftpd.conf
# ProFTPD
grep -E "DefaultRoot|Directory" /etc/proftpd/proftpd.conf
rsync(强烈推荐)rsync -avz --delete -e ssh root@老服务器IP:/data/ftp/ /data/ftp/
参数说明:
-a 保留权限、时间、软链接-v 显示过程-z 压缩传输--delete 保持完全一致(慎用)✅ 适合大文件、增量同步
cd /data
tar czvf ftpdata.tar.gz ftp/
scp ftpdata.tar.gz root@新服务器IP:/data/
cd /data
tar xzvf ftpdata.tar.gz
如果是 系统用户登录 FTP:
# 老服务器
getent passwd > users.txt
getent shadow > shadow.txt
getent group > groups.txt
# 只建议手动重建用户
useradd -m ftpuser
passwd ftpuser
⚠️ 不建议直接覆盖 /etc/passwd、/etc/shadow
如果是虚拟用户:
/etc/vsftpd/vuser.db
/etc/vsftpd/vsftpd_user_conf/
systemctl restart vsftpd
scp /etc/vsftpd/vsftpd.conf root@新服务器:/etc/vsftpd/
注意检查:
local_root=
anon_root=
chroot_local_user=
chown -R ftpuser:ftpuser /data/ftp
chmod -R 755 /data/ftp
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on
查看状态:
getenforce
ftp localhost
ftp 新服务器IP
tail -f /var/log/messages
tail -f /var/log/vsftpd.log
systemctl enable vsftpd
| 问题 | 原因 | 解决 |
|---|---|---|
| 登录失败 | 用户不存在 | 重建用户 |
| 上传失败 | 权限不足 | chown/chmod |
| 目录不可见 | SELinux | 关闭或配置 |
| 中文乱码 | 编码问题 | 客户端 UTF-8 |
你可以直接告诉我:
我可以给你 一条命令直接可用的迁移方案 ✅