在 Linux 上迁移 FTP 服务器数据,通常包含文件数据迁移和FTP 服务配置/账号迁移两部分。下面按常见场景给你一个完整思路和实操示例。
常见 FTP 服务端:
不同服务配置位置略有不同,但迁移思路一致。
一般位置:
/home/ftp/srv/ftp/var/ftp/home/username查看 vsftpd 配置:
grep -E "local_root|anon_root|user_sub_token" /etc/vsftpd.conf
systemctl stop vsftpd
# 或
service vsftpd stop
在目标服务器执行:
rsync -avz --delete \
root@原服务器IP:/data/ftp/ \
/data/ftp/
参数说明:
-a 保留权限、时间-v 显示过程-z 压缩传输--delete 保持完全一致✅ 适合大文件、断点续传
scp -r root@原服务器IP:/data/ftp /data/
原服务器:
tar czf ftpdata.tar.gz /data/ftp
目标服务器:
tar xzf ftpdata.tar.gz -C /
如果是 系统用户登录 FTP:
/etc/passwd/etc/shadow/etc/group⚠️ 不建议直接覆盖,建议:
grep ftpuser /etc/passwd >> /etc/passwd
grep ftpuser /etc/shadow >> /etc/shadow
并同步用户家目录和权限。
常见文件:
/etc/vsftpd/vsftpd.user_list/etc/vsftpd/vsftpd_login.db(db 文件)/etc/pam.d/vsftpd迁移步骤:
scp /etc/vsftpd/* 目标服务器:/etc/vsftpd/
scp /etc/pam.d/vsftpd 目标服务器:/etc/pam.d/
scp /etc/vsftpd/vsftpd.conf 目标服务器:/etc/vsftpd/
yum install vsftpd -y
# 或
apt install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd
netstat -tunlp | grep 21
chown -R ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp
setsebool -P ftpd_full_access on
restorecon -Rv /data/ftp
ftp 目标服务器IP
或用 FileZilla 测试上传/下载。
✅ 文件传完但无法登录 → 用户/密码未迁移
✅ 能登录但不能上传 → 权限或 SELinux
✅ 文件大小不一致 → 没用 rsync
✅ 被动模式连不上 → 防火墙未开被动端口
如果你愿意,可以告诉我:
我可以直接给你一步一步的命令脚本。