以下是备份和恢复 CentOS 7 系统的分步指南:
一、备份方法
1. 文件级备份(关键数据)
适用于备份 /home
、/etc
、/var
等重要目录。
(1) 使用 rsync
(增量备份)
# 安装 rsync(如果未预装)
sudo yum install rsync
# 同步备份(示例:备份到外部磁盘)
rsync -av --delete /path/to/source /path/to/backup
-av
:归档模式,保留权限和属性。--delete
:删除目标目录中源目录不存在的文件。- 示例:
rsync -av --delete /home /mnt/backup/
(2) 使用 tar
(压缩打包)
sudo tar -cvpzf backup-$(date +%Y%m%d).tar.gz --exclude=/proc --exclude=/sys --exclude=/tmp --exclude=/mnt --exclude=/dev /
-p
:保留文件权限。--exclude
:排除非必要目录(如虚拟文件系统)。- 压缩文件需存储到外部设备或远程位置。
2. 系统级备份(完整克隆)
(1) 使用 dd
(全盘克隆)
sudo dd if=/dev/sdX of=/path/to/backup.img bs=4M status=progress
- 适用场景:完全相同的硬件环境恢复。
- 警告:
dd
会覆盖目标设备,务必确认if
(输入)和of
(输出)参数正确!
(2) 使用 Clonezilla
(推荐)
- 下载 Clonezilla ISO 并制作启动盘。
- 启动 Clonezilla 选择“设备到镜像”模式。
- 按向导备份整个磁盘或分区到外部存储。
- 优点:支持增量备份、加密和网络存储。
3. 自动化备份工具
(1) 使用 cron
定时任务
编写备份脚本(示例保存为 /scripts/backup.sh
):
#!/bin/bash
tar -cvpzf /backup/backup-$(date +%Y%m%d).tar.gz --exclude=/proc --exclude=/sys --exclude=/tmp /
赋予执行权限并添加定时任务:
chmod +x /scripts/backup.sh
crontab -e
# 每天凌晨3点执行备份
0 3 * * * /scripts/backup.sh
(2) 远程备份工具(rsync
+ SSH)
rsync -avz -e ssh /path/to/source user@remote_host:/path/to/backup
- 需配置 SSH 免密登录(使用
ssh-keygen
生成密钥对)。
二、恢复方法
1. 文件级恢复
(1) 解压 tar
备份
sudo tar -xvpzf backup.tar.gz -C /
-C /
:指定解压到根目录(覆盖现有文件需谨慎)。
(2) 使用 rsync
还原
rsync -av /path/to/backup /path/to/restore
2. 系统级恢复
(1) 使用 dd
镜像恢复
sudo dd if=/path/to/backup.img of=/dev/sdX bs=4M status=progress
- 场景:硬盘损坏后替换新磁盘。
(2) 使用 Clonezilla 恢复
- 启动 Clonezilla 选择“镜像到设备”。
- 选择备份的镜像文件并还原到目标磁盘。
- 注意:目标磁盘容量需大于或等于原磁盘。
3. 通过救援模式恢复(系统无法启动时)
- 启动救援模式:
- 使用 CentOS 7 安装光盘/USB,启动后选择 Troubleshooting > Rescue a CentOS system。
- 挂载原系统分区:
chroot /mnt/sysimage # 自动挂载原系统到 /mnt/sysimage
- 执行恢复操作:
- 解压备份文件:
tar -xvpzf /mnt/backup/backup.tar.gz -C /
- 或使用
rsync
还原数据。
- 解压备份文件:
- 重建引导程序:
grub2-install /dev/sdX # 安装 GRUB 到磁盘 grub2-mkconfig -o /boot/grub2/grub.cfg # 更新配置文件
三、注意事项
- 备份验证:
- 定期检查备份文件是否完整(如
tar -tvf backup.tar.gz
)。
- 定期检查备份文件是否完整(如
- 存储安全:
- 加密备份文件(使用
gpg
或openssl
):openssl enc -aes-256-cbc -salt -in backup.tar.gz -out backup.tar.gz.enc
- 多设备存储:本地硬盘 + 远程服务器(如 NAS、AWS S3)。
- 加密备份文件(使用
- LVM 处理:
- 若系统使用 LVM,备份前需确保逻辑卷的一致性:
sudo lvcreate -s -n lv_snapshot -L 10G /dev/vg00/lv_root
- 若系统使用 LVM,备份前需确保逻辑卷的一致性:
- 数据库服务备份:
- 停止服务或使用热备份工具(如
mysqldump
for MySQL)。
- 停止服务或使用热备份工具(如
四、推荐方案
- 个人/小型服务器:
tar
每周全量备份 +rsync
每日增量备份到外部磁盘。 - 企业生产环境:
Clonezilla 全盘镜像 + 远程rsync
同步关键数据。 - 云服务器:
结合云厂商快照功能(如 AWS EBS Snapshot)和脚本备份。
通过以上方法,您可以在 CentOS 7 系统崩溃或数据丢失时快速恢复,确保业务连续性。