以下是为 CentOS 6 系统备份和恢复的详细指南,结合其特有的系统特性(如旧版 GRUB 引导和 yum 包管理):
一、备份方案
方法 1: 使用 tar 完整备份(推荐)
# 生成排除列表(注意 SELinux 相关目录)
cat > /root/exclude.txt << EOF
/proc/*
/sys/*
/dev/*
/tmp/*
/mnt/*
/media/*
/run/*
/var/cache/yum/*
/var/lib/rpm/__db*
*.log
EOF
# 执行备份(保留权限和SELinux上下文)
tar --numeric-owner --selinux --xattrs -czvpPf /backup/centos6_full_$(date +%Y%m%d).tar.gz -X /root/exclude.txt /
方法 2: 使用 rsync 增量备份
# 首次完整备份
rsync -aAXHh --delete --progress --exclude-from='/root/exclude.txt' / /mnt/backup/full/
# 后续增量备份(每天)
rsync -aAXHh --delete --progress --link-dest=/mnt/backup/full --exclude-from='/root/exclude.txt' / /mnt/backup/inc_$(date +%Y%m%d)/
方法 3: LVM 快照备份(需 LVM 分区)
# 创建快照(推荐系统空闲时操作)
lvcreate -L 5G -s -n snap_root -p r /dev/VolGroup/lv_root
# 挂载快照
mkdir /mnt/snap
mount -o ro /dev/VolGroup/snap_root /mnt/snap
# 备份快照内容
tar -czf /backup/lvm_snapshot.tar.gz /mnt/snap
# 移除快照
umount /mnt/snap
lvremove -f /dev/VolGroup/snap_root
方法 4: 使用 dump 工具(适用于 ext 文件系统)
# 检查分区号
df -h
# 完整备份
dump -0uan -f /backup/root_dump.img /dev/sda1
# 增量备份
dump -1uan -f /backup/root_dump_inc.img /dev/sda1
二、恢复方案
情境 1: 系统可启动时的恢复
# 还原 tar 备份
tar --numeric-owner --selinux --xattrs -xzvpPf backup.tar.gz -C /
# 重建 RPM 数据库(重要!)
rpm --rebuilddb
# 恢复后必须操作
touch /.autorelabel # 强制 SELinux 重新标记
reboot
情境 2: 系统无法启动时的恢复
- 使用 CentOS 6 安装光盘进入 Rescue Mode
- 挂载原系统分区:
chroot /mnt/sysimage
- 恢复流程:
# 如果是 tar 备份 tar --numeric-owner --selinux --xattrs -xzvpPf /path/to/backup.tar.gz -C / # 如果是 dump 备份 restore -rf /path/to/backup_dump.img # 重建重要系统文件 rpm --rebuilddb grub-install /dev/sda mkinitrd -f /boot/initramfs-$(uname -r).img $(uname -r) touch /.autorelabel
情境 3: 使用 LVM 快照恢复
lvconvert --merge /dev/VolGroup/snap_root
reboot
三、关键注意事项
-
CentOS 6 特殊考量:
- GRUB Legacy (0.97):恢复后需执行
grub-install /dev/sda
- 旧版内核:确保备份包含
/boot/initramfs-*
文件 - 检查版本匹配:
cat /etc/redhat-release
- GRUB Legacy (0.97):恢复后需执行
-
必须备份的特殊文件:
# 备份重要配置文件 tar czf /backup/etc_config.tar.gz /etc/{passwd,shadow,group,gshadow,resolv.conf,fstab} # 备份 yum 仓库配置 cp -a /etc/yum.repos.d /backup/
-
服务状态保存:
service --status-all > /backup/services_status.txt chkconfig --list >> /backup/services_status.txt
四、自动化备份设置(cron示例)
# 每日凌晨2点执行全量备份
0 2 * * 0 root tar --numeric-owner --selinux --xattrs -czvpPf /backup/full_$(date +\%Y\%m\%d).tar.gz -X /root/exclude.txt / > /var/log/backup.log 2>&1
# 每日凌晨2点执行增量备份(周一除外)
0 2 * * 1-6 root rsync -aAXHh --delete --link-dest=/backup/full/ / /backup/inc_$(date +\%Y\%m\%d)/ >> /var/log/backup.log 2>&1
五、方案对比表
方法 | 优势 | 限制 | 适用场景 |
---|---|---|---|
tar | 完整系统克隆 | 恢复耗时较长 | 系统迁移/长期归档 |
rsync | 增量快速 | 需要保持文件系统一致 | 频繁数据同步 |
LVM 快照 | 瞬时一致性备份 | 需预配置 LVM | 运行中的数据库备份 |
dump | 文件系统层级恢复 | 仅限 ext 文件系统 | 分区级精确恢复 |
六、灾难恢复建议
-
定期验证备份:
# 测试 tar 备份完整性 tar -tzvf backup.tar.gz > /dev/null # 测试 dump 备份 restore -t -f backup_dump.img
-
维护应急恢复包:
- 备份当前内核 RPM 包:
rpm -q kernel > /backup/kernel_versions.txt cp $(rpm -ql kernel-$(uname -r)) /backup/
- 保存网卡驱动:
ethtool -i eth0 | grep driver > /backup/network_drivers.txt
- 备份当前内核 RPM 包:
-
建议使用
mkisofs
创建可启动恢复镜像:mkisofs -o recovery.iso -V "CentOS6_Recovery" -J -R -v /backup/ /boot/ /etc/ /root/
此指南特别考虑了 CentOS 6 生命周期终止(EOL)后的维护需求,建议在恢复后立即执行 yum update
(如仍有可用源)并做好系统迁移规划。