温馨提示×

CentOS如何进行文件系统备份恢复

小樊
31
2025-12-13 11:00:37
栏目: 智能运维

CentOS 文件系统备份与恢复实用指南

一、方法总览与选择建议

  • 文件级备份:使用 tar、rsync 做全量与增量,适合日常数据与配置备份,灵活、可校验、易异地存放。
  • 块级镜像:使用 dd 做整盘/分区镜像,适合快速整机迁移或灾难恢复,但镜像体积大、对目标盘容量有要求。
  • XFS 专用:使用 xfsdump/xfsrestore 做文件系统级备份恢复,支持 0 级全量 + 1–9 级增量,需文件系统处于挂载状态。
  • 无备份误删:EXT 系列可用 extundelete;XFS 目前缺乏成熟通用工具,务必依赖事先备份。
  • 系统级离线方案:使用 Clonezilla、Mondo Rescue 制作可启动镜像,适合批量部署与整机还原。

二、常用方法操作示例

  • tar 全量/增量备份与恢复(适合目录/系统)

    • 全量备份(示例排除临时与挂载点):
      tar -cvpzf /backup/full_$(date +%F).tar.gz \
        --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys \
        --exclude=/backup / 
      
    • 恢复(建议在救援/单用户或目标系统离线状态下执行):
      tar -xvpfz /backup/full_YYYY-MM-DD.tar.gz -C /
      # 若备份时排除了目录,恢复后需重建
      mkdir -p /proc /lost+found /mnt /sys
      # 修复 SELinux 上下文
      restorecon -Rv /
      
    • 提示:增量可用 rsync 的 –link-dest 策略实现节省空间的“快照式”增量。
  • rsync 增量备份与恢复(适合频繁同步与远程备份)

    • 首次全量:
      rsync -avz --delete /data/ /backup/data/
      
    • 基于上次备份的增量(硬链接快照式,节省空间):
      rsync -avz --delete \
        --link-dest=/backup/data/last/ \
        /data/ /backup/data/current/
      # 轮转
      rm -rf /backup/data/last
      mv /backup/data/current /backup/data/last
      
    • 远程备份(通过 SSH):
      rsync -avz -e ssh /data/ user@remote:/backup/data/
      
    • 恢复(本地或远程):
      rsync -av /backup/data/ /data/
      
    • 提示:目标盘空间不足时,优先用 rsync 增量而非 tar 全量。
  • dd 整盘/分区镜像(适合离线整机迁移)

    • 备份到镜像文件:
      dd if=/dev/sda of=/backup/disk_sda.img bs=4M status=progress
      
    • 从镜像恢复到目标盘(目标盘容量需≥源盘已用容量):
      dd if=/backup/disk_sda.img of=/dev/sdb bs=4M status=progress
      
    • 重要:务必核对 if=of=,操作前确认目标盘无重要数据。
  • XFS 文件系统级备份恢复(xfsdump/xfsrestore)

    • 前提:文件系统需已挂载;仅支持 XFS;以 root 执行;通过 UUID 区分备份会话,避免对相同 UUID 的两个文件系统做备份。
    • 全量备份(会话标签与介质标签便于管理):
      xfsdump -f /backup/dump_sdb1 /sdb1 \
        -L "dump_sdb1" -M "sdb1"
      
    • 增量备份(示例 1 级增量):
      xfsdump -f /backup/dump_sdb1_incr /sdb1 \
        -L "dump_sdb1_incr" -M "sdb1" -l 1
      
    • 查看备份会话:
      xfsdump -I
      ls /var/lib/xfsdump/inventory/
      
    • 恢复(先清空或指向空目录,再恢复):
      xfsrestore -f /backup/dump_sdb1 /sdb1
      
    • 提示:xfsdump 按 inode 顺序备份,支持 0–9 级增量

三、无备份误删时的应急恢复

  • EXT3/EXT4:优先用 extundelete 恢复
    • 安装依赖与工具(示例):
      yum install -y e2fsprogs-libs e2fsprogs-devel
      # 下载、解压、编译安装 extundelete(略)
      
    • 只读挂载受影响分区后恢复:
      mount -o ro /dev/sdXY /mnt
      extundelete /dev/sdXY --restore-all
      # 或恢复单个文件
      extundelete /dev/sdXY --restore-file /path/to/file
      # 恢复结果在 RECOVERED_FILES/ 目录
      
  • XFS:目前缺乏成熟通用工具,建议依赖事先的 xfsdump/xfsrestore 备份;若无备份,尽快断电、避免写入,寻求专业数据恢复服务。

四、系统无法启动时的救援与修复

  • 进入救援模式(光盘/ISO 引导,选择 Troubleshooting → Rescue a CentOS system),一般选择 Continue 以读写方式挂载已安装系统到 /mnt/sysimage
  • 切换根环境并修复文件系统:
    chroot /mnt/sysimage
    # 视文件系统类型执行修复(示例)
    xfs_repair /dev/sda1    # XFS
    fsck -y /dev/sda2       # EXT
    exit
    reboot
    
  • 若仅为分区变为只读,可先尝试重新挂载为读写:
    mount -o remount,rw /
    
  • 重要数据建议先远程/离线备份再修复。

五、备份策略与注意事项

  • 策略建议:定期全量 + 频繁增量;遵循 3-2-1 规则(3 份副本、2 种介质、1 份异地/离线);自动化执行并定期做恢复演练验证可用性。
  • 关键注意:
    • xfsdump 仅支持已挂载的 XFS,且依赖 UUID;不要对相同 UUID 的两个文件系统备份。
    • tar/rsync 恢复会覆盖目标文件,操作前确认备份完整性与目标路径。
    • dd 为块级复制,方向性与目标盘容量要求严格,务必先演练。
    • 恢复后执行 restorecon -Rv / 修复 SELinux 上下文,避免服务异常。

0