温馨提示×

Linux Dopra怎么备份

小樊
39
2025-12-14 09:12:30
栏目: 智能运维

Linux系统备份与恢复实操指南

一 备份策略与范围

  • 备份类型
    • 全量备份:每次备份选定数据的全部内容,适合变化不频繁的场景。
    • 增量备份:仅备份自上次备份后变更的数据,适合高频备份、变更较少的数据。
    • 差异备份:每次与原始全量比较,备份新增与变更,适合变化较大的数据。
  • 备份范围
    • 系统配置与用户数据:如 /etc、/home、/var(注意排除临时与缓存目录)。
    • 数据库:如 MySQL/MariaDB 使用逻辑导出,PostgreSQL 使用 pg_dump。
    • 引导与分区信息:必要时备份 MBR/GPT 与分区表,便于灾难恢复。
  • 存储与保留
    • 采用 本地 + 异地/云端 的组合,避免单点故障;按业务重要性设定 保留周期轮换策略
  • 验证与演练
    • 定期做 恢复演练完整性校验,确保关键时刻可用。

二 常用工具与命令示例

  • 文件与系统归档(tar)
    • 全量打包(示例排除临时与挂载点):
      sudo tar cvpzf backup_$(date +%F).tar.gz \
        --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run \
        --exclude=/mnt --exclude=/media --exclude=/tmp \
        --exclude=/backup_*.tar.gz / 
      
    • 恢复(在救援/单用户或 LiveCD 环境中执行):
      sudo tar xvpfz backup_YYYY-MM-DD.tar.gz -C /
      
  • 文件级增量/差异(tar)
    • 增量:基于快照文件做增量
      # 首次全量
      tar -czvpf full.tar.gz -g snapshot.snar /var
      # 后续增量
      tar -czvpf inc1.tar.gz -g snapshot.snar /var
      
    • 差异:按时间生成清单后打包
      find /var -mtime -1 -print > filelist.txt
      tar -czvf diff_$(date +%F).tar.gz -T filelist.txt
      
  • 目录同步与远程备份(rsync)
    • 本地/远程同步(保留权限、ACL、扩展属性,删除目标多余文件)
      rsync -aAXv --delete /data/ /backup/data/
      rsync -aAXv --delete /data/ user@remote:/backup/data/
      
  • 整盘镜像(dd)
    • 备份磁盘到镜像(块大小建议 4M 提升速度)
      sudo dd if=/dev/sda of=/backup/sda_$(date +%F).img bs=4M
      
    • 备份分区
      sudo dd if=/dev/sda1 of=/backup/sda1_$(date +%F).img bs=4M
      
  • 引导区与分区表
    • 备份 MBR(前 512 字节
      sudo dd if=/dev/sda of=/backup/mbr_$(date +%F).img bs=512 count=1
      
    • 恢复 MBR(救援模式下)
      sudo dd if=/backup/mbr_YYYY-MM-DD.img of=/dev/sda bs=512 count=1
      
  • 数据库备份
    • MySQL/MariaDB
      mysqldump -u USER -p --single-transaction --routines --triggers DATABASE > db_$(date +%F).sql
      # 恢复
      mysql -u USER -p DATABASE < db_YYYY-MM-DD.sql
      
    • PostgreSQL
      pg_dump -U USER -h localhost -F c -b -v -f db_$(date +%F).dump DATABASE
      # 恢复
      pg_restore -U USER -d DATABASE -v db_YYYY-MM-DD.dump
      

以上命令覆盖了系统/文件、增量/差异、整盘镜像与数据库备份的常见场景,参数如 -aAX 可保留权限、ACL、扩展属性,适合生产环境使用。

三 恢复流程与要点

  • 系统/文件级恢复
    • 优先在 救援模式/LiveCD 挂载原系统分区后执行 tar 恢复,确保 根分区正确挂载为 /,恢复后检查关键服务与网络。
    • 使用 rsync 恢复时保持 -aAX 参数一致,避免权限丢失。
  • 数据库恢复
    • MySQL/MariaDB 使用 mysql < backup.sql;PostgreSQL 使用 pg_restore 指向目标库。
    • 恢复前确认 目标库存在字符集/版本兼容,必要时先演练。
  • 整盘/分区/MBR 恢复
    • 整盘镜像写回:dd if=backup.img of=/dev/sda bs=4M(极度危险,务必核对设备名)。
    • 分区镜像写回:dd if=backup_sda1.img of=/dev/sda1 bs=4M
    • MBR 恢复:dd if=mbr.img of=/dev/sda bs=512 count=1
  • 验证
    • 检查关键文件是否存在、权限/属主是否正确,数据库能否正常启动与查询。

四 自动化与工具选型

  • 定时任务
    • 使用 crontab 调度全量与增量任务,示例(每日全量、每小时增量):
      # 全量(每日 2:00)
      0 2 * * * /usr/bin/tar czvpf /backup/full_$(date +\%F).tar.gz -g /backup/snapshot.snar --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run --exclude=/mnt --exclude=/media --exclude=/tmp --exclude=/backup_*.tar.gz /
      # 增量(每小时)
      0 * * * * /usr/bin/tar czvpf /backup/inc_$(date +\%F_%H).tar.gz -g /backup/snapshot.snar /var
      
  • 工具选型
    • Timeshift:基于 rsync 的系统快照,适合快速回滚系统配置与用户数据(桌面/服务器均可)。
    • Clonezilla:整盘克隆/镜像,适合批量部署与灾难恢复。
    • Bacula/Amanda:企业级多节点、调度与介质管理,适合中大型环境。

五 注意事项与常见坑

  • 目标存储要有充足空间,并采用 异地/云端 存放,避免单点故障。
  • 执行 dd 等破坏性操作前务必 双重确认设备名,建议先对关键盘做只读检查或快照。
  • 备份后做恢复演练校验(如校验和、抽样导入),确保可用性。
  • 恢复时关注 文件权限/ACL/扩展属性SELinux/AppArmor 上下文,必要时使用恢复模式或设置正确的安全策略。
  • 数据库备份建议使用 事务一致性 选项(如 --single-transaction),避免备份过程中产生不一致数据。

0