CentOS作为企业级常用的Linux发行版,承载了大量核心业务服务,系统数据的安全性和服务稳定性至关重要。定期备份可以在系统遭遇故障、数据丢失时快速恢复业务,避免造成不可挽回的损失。

备份前的准备工作
在创建定期备份前,需要先明确备份范围和备份存储位置。常见的备份范围包括系统配置文件、用户数据、业务应用数据、数据库数据等。备份存储位置可以选择本地磁盘、外接存储设备或者远程服务器,建议采用本地加远程的双重存储策略,避免单点存储故障。
首先需要确认系统已安装必要的备份工具,CentOS默认自带tar工具,若需要同步到远程服务器,需要安装rsync:
# 安装rsync工具 yum install -y rsync
基础备份方案:使用tar打包本地备份
tar是Linux下最常用的打包工具,可以将多个文件或目录打包成单个归档文件,同时支持gzip、bzip2等压缩格式,适合做全量备份。
编写备份脚本
创建一个备份脚本,实现指定目录的打包压缩,并按日期命名备份文件,以下是备份/etc目录和系统用户数据目录/home的示例脚本:
#!/bin/bash
# 定义备份目录,若不存在则创建
BACKUP_DIR="/data/backups"
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
# 定义备份文件名,包含当前日期
DATE=$(date +%Y%m%d)
BACKUP_FILE="$BACKUP_DIR/centos_backup_$DATE.tar.gz"
# 定义需要备份的目录,多个目录用空格分隔
BACKUP_TARGETS="/etc /home"
# 执行打包压缩备份
tar -czvf "$BACKUP_FILE" $BACKUP_TARGETS
# 输出备份完成提示
echo "备份完成,备份文件路径:$BACKUP_FILE"
给脚本添加可执行权限:
chmod +x /root/backup_script.sh
可以手动执行脚本测试备份是否生效:
/root/backup_script.sh
进阶备份方案:使用rsync实现增量远程备份
tar全量备份每次都会打包所有文件,占用存储空间大,rsync可以实现增量备份,只同步变化的文件,同时支持将备份同步到远程服务器,提升备份的安全性。
配置SSH免密登录
如果要将备份同步到远程服务器,需要先配置本地服务器到远程备份服务器的SSH免密登录,避免定时任务执行时需要输入密码:
# 生成SSH密钥对,一路回车即可 ssh-keygen -t rsa # 将公钥拷贝到远程备份服务器,替换为实际的远程服务器IP和用户名 ssh-copy-id root@192.168.0.100
编写rsync备份脚本
以下是使用rsync实现本地增量备份并同步到远程服务器的脚本示例:
#!/bin/bash
# 本地备份目录
LOCAL_BACKUP_DIR="/data/backups"
# 远程备份服务器信息
REMOTE_USER="root"
REMOTE_IP="192.168.0.100"
REMOTE_BACKUP_DIR="/remote_backups/centos"
# 创建本地备份目录
if [ ! -d "$LOCAL_BACKUP_DIR" ]; then
mkdir -p "$LOCAL_BACKUP_DIR"
fi
# 定义需要备份的目录
BACKUP_TARGETS="/etc /home /var/www"
# 使用rsync做增量备份,保留历史版本
rsync -avz --delete --backup --backup-dir="$LOCAL_BACKUP_DIR/old_$(date +%Y%m%d)" $BACKUP_TARGETS "$LOCAL_BACKUP_DIR/current"
# 同步到远程服务器
rsync -avz "$LOCAL_BACKUP_DIR/" "$REMOTE_USER@$REMOTE_IP:$REMOTE_BACKUP_DIR"
配置定期执行:使用crontab设置定时任务
完成备份脚本编写后,需要通过crontab配置定时任务,让备份定期自动执行。
编辑当前用户的crontab任务列表:
crontab -e
在打开的编辑器中添加定时任务规则,crontab的时间格式为分 时 日 月 周 命令,以下是几个常见的配置示例:
- 每天凌晨2点执行本地tar备份:
0 2 * * * /root/backup_script.sh - 每周日凌晨3点执行rsync增量备份:
0 3 * * 0 /root/rsync_backup.sh - 每6小时执行一次重要数据备份:
0 */6 * * * /root/important_data_backup.sh
保存退出后,可以通过以下命令查看已配置的定时任务:
crontab -l
备份策略优化建议
为了让备份机制更可靠,还需要注意以下几点:
- 定期清理过期备份文件,避免存储空间占满,可以在备份脚本中添加删除30天前备份文件的命令:
find /data/backups -name "*.tar.gz" -mtime +30 -delete - 定期测试备份文件的恢复流程,确保备份文件可用,避免出现备份损坏无法恢复的情况
- 核心业务系统建议采用全量备份加增量备份的组合策略,比如每周做一次全量备份,每天做一次增量备份
- 备份文件建议做加密处理,避免备份数据泄露造成安全风险
备份恢复测试
备份完成后需要验证恢复流程是否可行,以下是使用tar备份文件恢复/etc目录的示例:
# 解压备份文件到根目录,注意操作前确认目标目录 tar -xzvf /data/backups/centos_backup_20240520.tar.gz -C /
如果是rsync备份的恢复,直接将current目录下的文件同步回原目录即可:
rsync -avz /data/backups/current/etc/ /etc/