CentOS 上 FetchLinux 备份与恢复策略
一 术语澄清与适用范围
- 本方案中的 FetchLinux 指用于下载与管理 Linux 发行版镜像 的工具/项目(如 GitHub 上的 fetchlinux 项目),常见于 /opt/fetchlinux 目录,配套有配置文件、镜像缓存与脚本等。若你的场景实际是邮件客户端 Fetchmail,请参考邮件专用的备份方法。下文围绕“FetchLinux 项目/镜像仓库”的备份与恢复展开。
二 备份范围与策略设计
- 备份范围建议覆盖:
- 项目代码与配置:如 /opt/fetchlinux/ 整体(含子模块、脚本、配置模板)。
- 镜像缓存与元数据:FetchLinux 下载的 发行版镜像文件 与其索引/校验文件。
- 运行环境信息:如 systemd 服务文件、专用用户与组、定时任务、日志目录等,便于快速还原运行态。
- 存储与保留:
- 采用“本地快速副本 + 远程/离线副本”的双地三副本思路;本地用于快速回滚,远程/离线用于灾难恢复。
- 建议对历史备份设置保留策略(如近 7 天 日备、近 4 周 周备、近 3 月 月备),并定期清理过期备份。
- 备份类型与频率:
- 项目目录与配置:建议 每日 增量同步,保留最近数次快照以便回滚。
- 镜像仓库:因体量大,建议“事件触发(新增/更新镜像后触发)+ 每周全量”的组合,避免频繁全量。
- 一致性与安全:
- 传输全程使用 SSH/TLS 加密;对关键备份生成校验值(如 sha256sum)并留存;必要时对归档进行 gzip 压缩以节省空间。
三 备份实施步骤
- 准备环境
- 安装常用工具:sudo yum install -y rsync tar
- 创建本地备份目录:sudo mkdir -p /backup/fetchlinux
- 本地快照(项目目录与配置)
- 使用 rsync 增量同步并保留属性:
- rsync -aAXv --delete /opt/fetchlinux/ /backup/fetchlinux/project_$(date +%F)/
- 说明:-aAX 保留权限/ACL/扩展属性,–delete 保持镜像一致;可按需增加 --exclude=‘.git’ 等排除项。
- 镜像仓库归档与压缩
- 将镜像目录打包并校验:
- tar -czvf /backup/fetchlinux/images_$(date +%F).tar.gz -C /var/lib/fetchlinux/images/ .
- sha256sum /backup/fetchlinux/images_$(date +%F).tar.gz > /backup/fetchlinux/images_$(date +%F).sha256
- 远程/离线副本(rsync over SSH)
- 增量同步到远程备份主机:
- rsync -avz --delete -e ssh /backup/fetchlinux/ backupuser@remote:/backup/fetchlinux/
- 自动化与监控
- 使用 cron 定时执行备份脚本(示例为每日 02:00):
- 0 2 * * * /usr/local/bin/backup_fetchlinux.sh
- 脚本内记录日志、输出校验值与执行结果;可结合 logwatch、邮件告警或 Zabbix/Prometheus 做备份健康监控。
四 恢复流程
- 项目目录与配置回滚
- 直接以最新快照覆盖:
- rsync -aAXv --delete /backup/fetchlinux/project_YYYY-MM-DD/ /opt/fetchlinux/
- 如仅需单文件/子目录:
- rsync -aAXv /backup/fetchlinux/project_YYYY-MM-DD/path/ /opt/fetchlinux/path/
- 镜像仓库恢复
- 解压归档到目标目录(注意先停 FetchLinux 服务以避免写入冲突):
- systemctl stop fetchlinux
- tar -xzvf /backup/fetchlinux/images_YYYY-MM-DD.tar.gz -C /var/lib/fetchlinux/images/
- systemctl start fetchlinux
- 校验完整性:
- sha256sum -c /backup/fetchlinux/images_YYYY-MM-DD.sha256
- 运行态还原
- 若涉及专用用户/组、systemd 服务或定时任务,按备份清单恢复:
- 用户/组:getent passwd fetchlinux / getent group fetchlinux 核对后按需重建
- systemd:systemctl daemon-reload && systemctl enable --now fetchlinux
- 定时任务:crontab -l 与备份清单比对恢复
- 验证
- 检查服务状态、镜像列表与最近日志,抽样校验关键镜像的 sha256 值是否一致。
五 例行维护与校验清单
- 例行任务
- 每日检查备份日志与返回码;每周做一次“恢复演练”(从远程副本取回并在测试环境解压/回滚)。
- 定期清理过期备份,监控 磁盘空间 与 备份窗口 是否异常。
- 快速校验命令
- 列出快照:ls -lh /backup/fetchlinux/
- 查看压缩包内容:tar -tzvf /backup/fetchlinux/images_YYYY-MM-DD.tar.gz | head
- 校验归档:sha256sum -c /backup/fetchlinux/images_YYYY-MM-DD.sha256
- 远程连通与同步测试:rsync -avzn -e ssh backupuser@remote:/backup/fetchlinux/ /tmp/check/
- 故障排查要点
- 网络/权限:ping、ssh、firewalld/iptables、SELinux 策略
- 服务与进程:systemctl status fetchlinux、journalctl -xeu fetchlinux
- 磁盘与空间:df -h、du -sh /backup /var/lib/fetchlinux
- 必要时进入 单用户/救援模式 修复文件系统或拷贝关键文件。