插件窝 干货文章 CentOS系统备份与恢复策略,保障数据安全

CentOS系统备份与恢复策略,保障数据安全

备份 backup exclude 恢复 404    来源:    2025-04-02

CentOS系统备份与恢复策略

一、备份策略概述

为确保CentOS系统数据安全,建议采用多层次备份策略:

  1. 全量备份:定期完整备份系统
  2. 增量备份:基于全量备份的差异备份
  3. 关键数据备份:对重要配置文件、数据库单独备份
  4. 异地备份:将备份文件存储在不同物理位置

二、备份方法

1. 使用tar命令备份

# 全系统备份(排除/proc, /sys, /mnt, /media, /dev等特殊目录)
tar -cvpzf /backup/centos_full_$(date +%Y%m%d).tar.gz --exclude=/backup --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev /

2. 使用rsync进行增量备份

rsync -aAXv --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/backup"} / /backup/incremental_backup_$(date +%Y%m%d)

3. 使用dd命令备份磁盘

dd if=/dev/sda of=/backup/centos_disk.img bs=4M status=progress

4. 使用Bacula企业级备份方案

# 安装Bacula
yum install bacula-director bacula-storage bacula-client bacula-console

三、关键数据备份

1. 配置文件备份

# 备份/etc目录
tar -czvf /backup/etc_backup_$(date +%Y%m%d).tar.gz /etc

# 备份重要服务配置
cp /etc/ssh/sshd_config /backup/sshd_config_$(date +%Y%m%d)
cp /etc/my.cnf /backup/my.cnf_$(date +%Y%m%d)

2. 数据库备份

MySQL/MariaDB备份

# 全库备份
mysqldump -u root -p --all-databases > /backup/mysql_all_$(date +%Y%m%d).sql

# 单库备份
mysqldump -u root -p database_name > /backup/database_name_$(date +%Y%m%d).sql

PostgreSQL备份

pg_dumpall -U postgres > /backup/postgres_all_$(date +%Y%m%d).sql

四、自动化备份脚本

创建/usr/local/bin/backup_centos.sh脚本:

#!/bin/bash

# 定义备份目录
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)

# 创建备份目录
mkdir -p $BACKUP_DIR/full $BACKUP_DIR/incremental $BACKUP_DIR/db

# 全量备份(每周日执行)
if [ $(date +%u) -eq 7 ]; then
    tar -cvpzf $BACKUP_DIR/full/centos_full_$DATE.tar.gz \
    --exclude=/backup \
    --exclude=/proc \
    --exclude=/lost+found \
    --exclude=/sys \
    --exclude=/mnt \
    --exclude=/media \
    --exclude=/dev /
fi

# 增量备份(每日执行)
rsync -aAXv --delete \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/backup"} \
/ $BACKUP_DIR/incremental/incr_$DATE

# 数据库备份
mysqldump -u root -pYOURPASSWORD --all-databases > $BACKUP_DIR/db/mysql_all_$DATE.sql
pg_dumpall -U postgres > $BACKUP_DIR/db/postgres_all_$DATE.sql

# 保留30天备份
find $BACKUP_DIR/full -mtime +30 -delete
find $BACKUP_DIR/incremental -mtime +30 -delete
find $BACKUP_DIR/db -mtime +30 -delete

添加到crontab自动执行:

0 2 * * * /usr/local/bin/backup_centos.sh

五、恢复策略

1. 从tar备份恢复

# 进入救援模式或Live CD环境
tar -xvpzf /backup/centos_full_YYYYMMDD.tar.gz -C /

2. 从rsync备份恢复

rsync -aAXv /backup/incremental_backup_YYYYMMDD/ /

3. 从dd镜像恢复

dd if=/backup/centos_disk.img of=/dev/sda bs=4M status=progress

4. 数据库恢复

# MySQL恢复
mysql -u root -p < /backup/mysql_all_YYYYMMDD.sql

# PostgreSQL恢复
psql -U postgres -f /backup/postgres_all_YYYYMMDD.sql

六、备份验证与测试

  1. 定期验证备份完整性

    tar -tvf /backup/centos_full_YYYYMMDD.tar.gz | head
    
  2. 定期进行恢复演练

    • 在测试环境中恢复备份
    • 验证系统功能是否正常
    • 记录恢复时间指标

七、最佳实践建议

  1. 遵循3-2-1备份原则:

    • 至少3份备份
    • 存储在2种不同介质上
    • 1份异地备份
  2. 加密敏感备份数据:

    openssl enc -aes-256-cbc -salt -in backup.tar.gz -out backup.tar.gz.enc
    
  3. 监控备份作业状态,设置报警机制

  4. 定期更新备份策略以适应系统变化

  5. 文档化备份恢复流程,确保团队成员了解操作步骤

通过实施以上策略,可以确保CentOS系统在遭遇硬件故障、人为错误或安全事件时能够快速恢复,最大限度保障业务连续性。