温馨提示×

CentOS Minimal下如何备份数据

小樊
63
2025-11-15 19:11:52
栏目: 智能运维

CentOS Minimal 备份实用指南

一、备份方法速览

  • 文件级备份:使用 tar 做整盘或目录归档,适合迁移与快速恢复;使用 rsync 做本地/远程同步与增量备份,适合持续保护数据。
  • 块级镜像:使用 dd 做整盘/分区镜像,适合同硬件快速还原或克隆。
  • 数据库:使用 mysqldump 导出逻辑备份,便于跨版本迁移与选择性恢复。
  • 版本化快照:使用 rsnapshot 基于 rsync 实现多版本保留与回滚。
  • 系统级工具:如 Timeshift(需 GUI/较新环境)或 Mondo Rescue/Clonezilla(需可启动介质),适合离线整机备份/还原。

二、常用命令示例

  • tar 整盘归档(排除虚拟与临时文件系统,建议在新开 screen 会话中执行)
    tar -cvpzf /backup/full_$(date +%F).tar.gz \
      --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys \
      --exclude=/media --exclude=/backup / 2>/backup/tar_errors.log
    
    提示:如存在独立数据盘挂载点(如 /data),可按需纳入或排除;压缩率优先可用 -j(bzip2)替代 -z(gzip)。
  • rsync 本地/远程同步与增量(首次全量,后续用 --link-dest 做快照式增量)
    # 本地
    rsync -aAX --delete /data/ /backup/data/
    
    # 远程
    rsync -avz --delete -e ssh /data/ user@remote:/backup/data/
    
    # 增量快照(基于上次备份)
    rsync -avz --delete \
      --link-dest=/backup/data/last/ \
      /data/ /backup/data/$(date +%F)/
    rm -f /backup/data/last
    ln -s $(date +%F) /backup/data/last
    
  • dd 整盘/分区镜像(谨慎:目标盘容量需≥源盘已用数据;操作会覆盖目标)
    # 备份
    dd if=/dev/sda of=/backup/sda_$(date +%F).img bs=4M status=progress
    
    # 还原
    dd if=/backup/sda_$(date +%F).img of=/dev/sda bs=4M status=progress
    
  • 数据库备份(示例:MySQL/MariaDB)
    mysqldump -u root -p --single-transaction --routines --triggers \
      --databases your_db > /backup/db_$(date +%F).sql
    
  • rsnapshot 定时多版本(需先安装:yum install -y rsnapshot)
    # /etc/rsnapshot.conf 关键项示例
    snapshot_root   /backup/rsnapshot/
    cmd_rsync       /usr/bin/rsync
    retain daily     7
    retain weekly    4
    retain monthly   3
    
    # 执行
    rsnapshot daily
    

以上命令覆盖了 tar/rsync/dd/mysqldump/rsnapshot 在最小化环境下的主流用法。

三、备份策略与自动化

  • 明确范围:区分系统配置与业务数据;至少覆盖 /etc、/var、/home、/opt 及数据库数据目录。
  • 周期与保留:按变更频率设定周期(如每日增量、每周全量),保留 7/30/90 天 阶梯。
  • 存储位置:优先“本地+异地/云端”双写;远程可用 rsync/ssh 或对象存储网关。
  • 自动化:用 cron 定时执行脚本,并在脚本中记录日志与校验结果。
  • 示例脚本(备份 /var/www 并保留 7 天)
    #!/usr/bin/env bash
    set -e
    BACKUP_DIR="/backup/web"
    SRC="/var/www"
    DATE=$(date +%Y%m%d%H%M%S)
    FILE="$BACKUP_DIR/web_$DATE.tar.gz"
    
    mkdir -p "$BACKUP_DIR"
    tar -czf "$FILE" -C "$SRC" .
    find "$BACKUP_DIR" -type f -mtime +7 -name "*.tar.gz" -delete
    echo "$(date) Backup $FILE completed." >> "$BACKUP_DIR/backup.log"
    
    加入定时任务:
    chmod +x /usr/local/bin/backup_web.sh
    echo "0 1 * * * /usr/local/bin/backup_web.sh" | crontab -
    

上述策略与脚本模板可直接落地,适配 Minimal 环境的资源与运维习惯。

四、恢复与验证

  • tar 恢复(示例:还原到根分区,谨慎操作)
    tar -xvpzf /backup/full_2025-11-15.tar.gz -C / \
      --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys \
      --exclude=/media
    
    提示:建议在救援模式或单用户环境下执行,避免覆盖运行中文件。
  • rsync 恢复(本地/远程)
    # 本地
    rsync -aAX --delete /backup/data/ /data/
    
    # 远程
    rsync -avz --delete -e ssh user@remote:/backup/data/ /data/
    
  • dd 镜像恢复(同容量或更大目标盘)
    dd if=/backup/sda_2025-11-15.img of=/dev/sda bs=4M status=progress
    
  • 数据库恢复
    mysql -u root -p < /backup/db_2025-11-15.sql
    
  • 验证要点:检查备份文件大小与数量、抽样解压/对比校验和、在测试环境演练关键恢复流程。

五、注意事项与排错

  • 排除清单:打包整盘时务必排除 /proc、/sys、/dev、/run、/tmp、/lost+found、/mnt、/media 等虚拟或临时文件系统,避免循环与膨胀。
  • 一致性与锁:数据库备份使用如 –single-transaction(InnoDB)避免锁表;文件系统层面可在维护窗口执行。
  • 空间与性能:大目录建议先写到本地再同步远程;dd 镜像前确认目标盘容量与写权限。
  • 版本与工具:Minimal 默认可能缺少 rsync/openssh-clients 等,需提前安装;远程传输建议使用 ssh key 免密。
  • 定期演练:至少每季度做一次恢复演练,验证备份可用性与恢复时间目标(RTO)。

0