详细的shell脚本示例,用于实现每天凌晨3点进行全量备份,除凌晨3点,每小时进行增量备份,并保留90天的备份:
时间: 2024-04-13 08:28:59 浏览: 226
定时备份的数据表 shell脚本(非常实用)
当然,请见以下所示的shell脚本示例,用于实现每天凌晨3点进行全量备份,除凌晨3点外每小时进行增量备份,并保留90天的备份:
```bash
#!/bin/bash
# 备份目录和文件名
backup_dir="/path/to/backup"
full_backup_name="full-$(date +%Y%m%d%H%M%S)"
incremental_backup_name="incr-$(date +%Y%m%d%H%M%S)"
# 创建备份目录
mkdir -p $backup_dir
# 获取当前时间
current_hour=$(date +%H)
# 凌晨3点执行全量备份
if [ $current_hour -eq 03 ]; then
xtrabackup --backup --target-dir=$backup_dir/$full_backup_name
else
# 每小时执行增量备份
last_full_backup=$(ls -1 $backup_dir | grep "full-" | tail -n 1)
xtrabackup --backup --target-dir=$backup_dir/$incremental_backup_name --incremental-basedir=$backup_dir/$last_full_backup
fi
# 删除过期的备份文件,只保留90天的备份
find $backup_dir -name "full-*" -mtime +90 -exec rm -rf {} \;
find $backup_dir -name "incr-*" -mtime +90 -exec rm -rf {} \;
```
上述脚本中,我们首先获取当前小时数,并根据条件判断是否执行全量备份。如果当前小时数为3,执行全量备份;否则,执行增量备份。增量备份使用`ls`命令获取最新的全量备份目录,并将其作为增量备份的基准目录。
请将以上脚本保存为一个可执行文件(例如:`backup.sh`),然后使用`cron`或其他定时任务工具来定期执行该脚本。
希望对您有所帮助!如果您有任何其他问题,请随时提问。
阅读全文