制定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系統在遭遇硬件故障、人為錯誤或安全事件時能夠快速恢復,最大限度保障業務連續性。