制定CentOS备份策略是确保数据安全的重要步骤。以下是一个详细的CentOS备份策略,涵盖了备份策略概述、备份方法、关键数据备份、自动化备份脚本、恢复策略、备份验证与测试以及最佳实践建议。
使用tar命令备份:
tar -cvpzf /backup/centos_full_(date %Y%m%d).tar.gz --exclude=/backup --exclude=/proc --exclude=/lostfound --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev /
使用rsync进行增量备份:
rsync -aAXv --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lostfound","/backup"} / /backup/incremental_backup_(date %Y%m%d)
使用dd命令备份磁盘:
dd if=/dev/sda of=/backup/centos_disk.img bs4M statusprogress
使用Bacula企业级备份方案:
install bacula-director bacula-storage bacula-client bacula-console
配置文件备份:
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)
数据库备份:
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
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=/lostfound \
--exclude=/sys \
--exclude=/mnt \
--exclude=/media \
--exclude=/dev /
fi
# 增量备份(每日执行)
rsync -aAXv --delete \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lostfound","/backup"} \
/ $BACKUP_DIR/incremental/$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
从tar备份恢复:
tar -xvpzf /backup/centos_full_YYYYMMDD.tar.gz -C /
从rsync备份恢复:
rsync -aAXv /backup/incremental_backup_YYYYMMDD/ /
从dd镜像恢复:
dd if=/backup/centos_disk.img of=/dev/sda bs4M statusprogress
数据库恢复:
mysql -u root -p /backup/mysql_all_YYYYMMDD.sql
psql -U postgres -f /backup/postgres_all_YYYYMMDD.sql
tar -tvf /backup/centos_full_YYYYMMDD.tar.gz
openssl enc -aes-256-cbc -salt -in backup.tar.gz -out backup.tar.gz.enc
通过实施以上策略,可以确保CentOS系统在遭遇硬件故障、人为错误或安全事件时能够快速恢复,最大限度保障业务连续性。