0
点赞
收藏
分享

微信扫一扫

innobackupex定时全备,增量备份,压缩备份,自动同步到远程服务器脚本

全量备份

#!/bin/bash

# 设置变量
mysql_backup_dir=/data/backup/mysql/
mysql_username="yours"
mysql_password="YOURS"

# 进入备份目录
cd $mysql_backup_dir

# 生成当前时间戳
timeStart=$(date '+%Y%m%d%H%M%S')
logfile=full-$timeStart.log

# 执行全量备份
/usr/bin/innobackupex --user=$mysql_username --password=$mysql_password --no-lock --defaults-file=/etc/my.cnf $mysql_backup_dir 2> "$logfile"

# 获取最新的备份目录
latestfolder=$(ls -l | grep ^d | tail -n 1 | awk '{print $9}')

# 压缩备份文件
tar -czvf /data/backup/mysql/full_$latestfolder.tar.gz -C /data/backup/mysql ./$latestfolder

# 同步备份文件到远程服务器
rsync -vzrtopg --progress --delete --password-file=/etc/rsyncd.secrets /data/backup/mysql/full_$latestfolder.tar.gz test@ip::test

增量备份脚本

#!/bin/bash

# 设置变量
mysql_backup_dir=/data/backup/mysql/
mysql_username="yours"
mysql_password="YOURS"

# 进入备份目录
cd $mysql_backup_dir

# 获取上一个增量备份的目录
lastincrementfolder=$(ls -l | grep ^d | tail -n 1 | awk '{print $9}')

# 生成当前时间戳
timeStart=$(date '+%Y%m%d%H%M%S')
logfile=increment-$timeStart.log

# 执行增量备份
/usr/bin/innobackupex --user=$mysql_username --password=$mysql_password --no-lock --defaults-file=/etc/my.cnf --incremental $mysql_backup_dir --incremental-basedir=$lastincrementfolder 2> "$logfile"

# 获取最新的备份目录
latestfolder=$(ls -l | grep ^d | tail -n 1 | awk '{print $9}')

# 压缩备份文件
tar -czvf /data/backup/mysql/increment_$latestfolder.tar.gz -C /data/backup/mysql ./$latestfolder

# 删除原始备份目录
rm -rf $latestfolder

# 同步备份文件到远程服务器
rsync -vzrtopg --progress --delete --password-file=/etc/rsyncd.secrets /data/backup/mysql/increment_$latestfolder.tar.gz test@ip::test

远程服务器按月归档

#!/bin/bash

# 定义源目录和归档目录
SOURCE_DIR="/path/to/source/directory"
ARCHIVE_DIR="/path/to/archive/directory"

# 获取当前年份和月份
YEAR=$(date +%Y)
MONTH=$(date +%m)

# 创建归档目录(如果不存在)
mkdir -p "$ARCHIVE_DIR/$YEAR/$MONTH"

# 按月归档文件
find "$SOURCE_DIR" -type f -mtime -30 -exec mv {} "$ARCHIVE_DIR/$YEAR/$MONTH" \;

# 输出归档信息
echo "Files archived for $YEAR-$MONTH"

举报

相关推荐

0 条评论