Ubuntu FTP Server 备份与恢复实操指南
一、备份范围与准备
- 明确要保护的资产:
- 配置文件:如 /etc/vsftpd.conf,以及用户列表 /etc/vsftpd.userlist(若启用);如使用 ProFTPD,对应为 /etc/proftpd/proftpd.conf。
- 数据目录:常见为 /home/ftpuser、/var/ftp 或自定义目录(以实际配置为准)。
- 日志文件:如 /var/log/vsftpd.log 或 /var/log/proftpd/。
- 认证相关:如使用本地系统用户,建议额外备份 /etc/passwd、/etc/shadow 中相关条目(注意权限与合规)。
- 准备备份介质与目录:选择本地外置盘、NFS 或对象存储,创建专用目录(如 /backup/ftp),并确保有充足空间与备份保留策略。
- 一致性建议:对活跃写入的数据目录,优先在维护窗口执行备份;或在备份前短暂停写(如暂停服务或应用),以减少不一致风险。
二、备份方案与命令示例
- 方案A 本地打包备份(适合快速全量)
- 配置文件与列表:
sudo tar -czvf /backup/ftp/config_$(date +%F).tar.gz /etc/vsftpd.conf /etc/vsftpd.userlist
- 数据目录(示例为 /home/ftpuser,按实际修改):
sudo tar -czvf /backup/ftp/data_$(date +%F).tar.gz /home/ftpuser
- 日志目录:
sudo tar -czvf /backup/ftp/logs_$(date +%F).tar.gz /var/log/vsftpd*
- 方案B rsync 增量同步(适合日常增量与快速回滚)
- 本地到备份盘:
sudo rsync -aAX --delete /home/ftpuser /backup/ftp/data/
- 远端备份(SSH):
sudo rsync -aAX --delete -e ssh /home/ftpuser user@backup-host:/backup/ftp/data/
- 方案C 远程拉取备份(从 FTP/SFTP 服务器侧取回)
- 使用 lftp 获取目录并打包:
lftp -u user,pass ftp.example.com -e “mirror -c /remote/ftp /local/backup/ftp; quit”
tar -czvf /backup/ftp/remote_$(date +%F).tar.gz -C /local/backup/ftp .
- 方案D 系统级快照与镜像(适合整机回滚)
- Timeshift(BTRFS/RSYNC 快照,便于系统级回滚):sudo timeshift-launcher
- Clonezilla(整盘镜像,适合跨硬件恢复)
- 自动化与保留(示例:每日 2 点打包并保留 7 天)
- 编辑计划任务:crontab -e
- 增加:
0 2 * * * /usr/bin/tar -czvf /backup/ftp/data_$(date +%F).tar.gz /home/ftpuser
59 2 * * * find /backup/ftp -name “data_*.tar.gz” -mtime +7 -delete
注:FTPS 场景请使用支持 TLS 的工具(如 lftp 的 ftps://),或在受信网络中先建立 SSH 通道再备份。
三、恢复步骤
- 场景1 仅恢复数据目录(以 /home/ftpuser 为例)
- 全新恢复:
sudo tar -xzvf /backup/ftp/data_2025-08-01.tar.gz -C /
- 增量回滚(先停写,再 rsync 覆盖):
sudo systemctl stop vsftpd
sudo rsync -aAX --delete /backup/ftp/data/ /home/ftpuser/
sudo systemctl start vsftpd
- 场景2 恢复配置文件
sudo cp /backup/ftp/config_.tar.gz /tmp && tar -xzvf /tmp/config_.tar.gz -C /
sudo systemctl restart vsftpd
- 场景3 整机级回滚
- Timeshift:启动到 Timeshift 界面,选择快照点并执行“还原”。
- Clonezilla:用启动盘进入恢复模式,选择镜像与目标磁盘执行恢复。
- 场景4 迁移到新服务器
- 在新服务器安装并启动 vsftpd:sudo apt update && sudo apt install vsftpd && sudo systemctl start vsftpd
- 传输备份包:scp /backup/ftp/ftp_backup.tar.gz user@new:/backup/
- 解压到目标路径:sudo tar -xzvf /backup/ftp_backup.tar.gz -C /
- 调整配置(如根目录、权限、被动端口等)后重启:sudo systemctl restart vsftpd
- 客户端连接测试(上传/下载/删除)。
四、验证与运维要点
- 校验完整性:
- 校验包:tar -tzvf /backup/ftp/data_*.tar.gz | head;重要文件可做哈希校验。
- 权限与属主:ls -l /home/ftpuser 确认与备份前一致(必要时 chown -R ftpuser:ftpuser)。
- 日志核查:tail -n 200 /var/log/vsftpd.log 或 journalctl -u vsftpd,确认无异常登录/权限报错。
- 防火墙与被动端口:若启用被动模式,放行端口段(示例 40000:50000/tcp),并确保云安全组/本机防火墙一致。
- 计划任务与健康检查:保留策略(如保留 7–30 天)、定期恢复演练、异地/云端副本,降低单点风险。