Skip to content

17. 备份与恢复

本章节指导在 RHEL 8.10(主机名 ZSLinux)上使用 SecureCRT 进行备份与恢复操作,配合 SecureFX 传输备份文件。内容涵盖备份策略(rsync, tar, LVM 快照)、恢复流程(文件、系统、快照)和灾难恢复测试,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 ZSLinux 环境中测试,确保实验一致性。

17.1 前提条件

  • RHEL 8.10 已安装(参考第 1 章),主机名设置为 ZSLinux.
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 6 章).
  • 使用 SecureFX 传输文件(SFTP 协议).
  • 具有 root 或 sudo 权限.
  • 系统已订阅并启用 RHEL 仓库(参考第 4 章).
  • LVM 分区已配置(参考第 9 章,假设逻辑卷 /dev/vg_data/lv_data).
  • 备份目录 /backup 已创建并具有写权限.

17.2 备份配置

17.2.1 rsync 增量备份

  • 配置增量备份:
    bash
    rsync -av --progress /etc /backup/etc-$(date +%F)  # 增量备份 /etc 目录,显示进度

17.2.2 tar 归档备份

  • 创建归档备份:
    bash
    tar -zcvf /backup/system-$(date +%F).tar.gz /etc /var  # 创建 /etc 和 /var 的压缩备份
    tar -tzf /backup/system-$(date +%F).tar.gz  # 验证备份文件完整性

17.2.3 LVM 快照备份

  • 创建 LVM 快照:
    bash
    lvcreate -L 5G -s -n snapshot /dev/vg_data/lv_data  # 创建 5GB 快照

17.2.4 配置备份轮转

  • 创建轮转脚本:
    bash
    vim /usr/local/bin/backup_rotate.sh  # 创建备份轮转脚本
    # 添加:
    #!/bin/bash
    BACKUP_DIR="/backup"
    find $BACKUP_DIR -name "etc-*.tar.gz" -mtime +7 -delete  # 删除 7 天前的 tar 备份
    find $BACKUP_DIR -name "etc-*" -mtime +7 -delete  # 删除 7 天前的 rsync 备份
    chmod +x /usr/local/bin/backup_rotate.sh  # 添加执行权限
  • 配置定时任务(参考第 14 章):
    bash
    crontab -e  # 编辑 crontab
    # 添加:
    0 1 * * * /usr/local/bin/backup_rotate.sh  # 每天 01:00 执行轮转

17.3 恢复流程

17.3.1 文件和目录恢复

  • tar 恢复文件:
    bash
    tar -xzvf /backup/system-$(date +%F).tar.gz -C /tmp/restore  # 解压备份到 /tmp/restore
    cp -r /tmp/restore/etc/fstab /etc/fstab  # 恢复特定文件

17.3.2 系统级恢复

  • 模拟系统恢复(从 tar 备份):
    bash
    mkdir /mnt/restore  # 创建恢复挂载点
    tar -xzvf /backup/system-$(date +%F).tar.gz -C /mnt/restore  # 解压备份
    rsync -av /mnt/restore/etc/ /etc/  # 恢复 /etc 目录

17.3.3 LVM 快照恢复

  • 恢复 LVM 快照:
    bash
    lvconvert --merge /dev/vg_data/snapshot  # 合并快照到原始逻辑卷

17.3.4 灾难恢复测试

  • 模拟系统崩溃恢复:
    bash
    mkdir /mnt/restore  # 创建恢复挂载点
    tar -xzvf /backup/system-$(date +%F).tar.gz -C /mnt/restore  # 解压系统备份
    rsync -av --exclude=/proc --exclude=/sys /mnt/restore/ /  # 恢复系统文件
    reboot  # 重启验证恢复

17.4 验证

  • 验证 rsync 备份:
    bash
    rsync --dry-run -av /etc /backup/etc-$(date +%F)  # 模拟备份,检查文件一致性
  • 验证 tar 备份:
    bash
    tar -tzf /backup/system-$(date +%F).tar.gz  # 检查备份文件内容
  • 验证 LVM 快照:
    bash
    lvs  # 检查快照状态
  • 验证恢复:
    bash
    ls -l /tmp/restore/etc  # 检查恢复的文件
    diff /etc/fstab /tmp/restore/etc/fstab  # 比较恢复文件与原文件
  • 验证轮转:
    bash
    /usr/local/bin/backup_rotate.sh  # 运行轮转脚本
    ls -l /backup  # 检查旧备份是否删除
  • 测试 SSH 连接:
    bash
    ssh -p 2222 testuser@ZSLinux  # 测试 SSH 连接(参考第 6 章)
  • 常见问题:
    • 备份失败:检查 /backup 权限(chmod 755 /backup)或磁盘空间(df -h)。
    • 恢复文件丢失:验证备份完整性(tar -tzf)或检查 rsync 路径。
    • LVM 快照失败:确认逻辑卷空间(lvs)或快照大小(lvcreate -L)。

17.5 实践任务

  1. 使用 SecureCRT 登录 ZSLinux,使用 rsync 备份 /etc/backup.
  2. 使用 tar 创建 /etc/var 的归档备份,验证完整性。
  3. 创建 LVM 快照并验证其状态。
  4. 配置备份轮转脚本,删除 7 天前的备份。

17.6 自测问题

  • 问题:如何使用 rsync 进行增量备份?
    • 答案rsync -av /etc /backup/etc-$(date +%F)
  • 问题:如何恢复 /etc/fstab 文件?
    • 答案tar -xzvf /backup/system-$(date +%F).tar.gz etc/fstab -C /tmp/restore, 然后 cp /tmp/restore/etc/fstab /etc
  • 问题:如何创建 LVM 快照?
    • 答案lvcreate -L 5G -s -n snapshot /dev/vg_data/lv_data

Released under the MIT License.