在 Linux 上迁移 FTP 服务器数据,通常分为文件数据迁移和FTP 服务配置/账号迁移两部分。下面按常见场景给你一套实用方案。
常见 FTP 服务端:
不同服务配置位置略有不同,但数据迁移思路一致。
在新服务器执行:
rsync -avz --delete \
-e ssh \
root@旧服务器IP:/ftp根目录/ \
/ftp根目录/
示例(vsftpd 默认目录):
rsync -avz -e ssh root@192.168.1.10:/var/ftp/ /var/ftp/
✅ 优点:
rsync -avz --bwlimit=5000 -e ssh user@old:/data/ftp/ /data/ftp/
--bwlimit 限制带宽,避免影响业务。
旧服务器:
tar czf ftpdata.tar.gz /var/ftp
scp ftpdata.tar.gz newserver:/tmp
新服务器:
tar xzf /tmp/ftpdata.tar.gz -C /
⚠ 注意权限和 SELinux 问题
如果是系统用户(/etc/passwd):
旧服务器:
getent passwd | grep ftp > ftpusers.txt
新服务器:
useradd -m ftpuser
passwd ftpuser
或直接复制:
rsync -avz /etc/passwd /etc/shadow /etc/group newserver:/etc/
⚠ 风险较大,建议只同步 FTP 专用用户
迁移这些文件:
/etc/vsftpd/
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/virtual_users.txt
/etc/vsftpd/virtual_users.db
新服务器:
yum install vsftpd
systemctl enable vsftpd
systemctl start vsftpd
/etc/proftpd//etc/pure-ftpd/chown -R ftpuser:ftpuser /var/ftp
chmod -R 755 /var/ftp
restorecon -Rv /var/ftp
setsebool -P ftpd_full_access on
systemctl stop vsftpd
ftp newserver
ls
或用:
lftp ftp://user:pass@newserver
如果你告诉我:
我可以给你精确命令,直接能抄。