基于rsync\unlink 等一套本机备份跨机备份历史备份清理shell 脚本

一 摘要

本文主要介绍一套本地备份、跨机器备份、历史备份清理脚本,使用场景如数据库备份等

二 环境

linux 系列系统 基本都支持,个别命令可能需要微调。

2.1 实验环境

[root@localhost rsync]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

三 脚本介绍

介绍脚本主要功能模块及目录结构

3.1 脚本目录结构

[root@projun002 data]# cd scripts/
[root@projun002 scripts]# tree
.
├── backup
│   ├── backup_mysql.sh
│   └── backup_nginx.sh
├── delete
│   ├── delete_dockercompse.sh
│   ├── delete_jira.sh
│   ├── delete_mysql.sh
│   ├── delete_nginx.sh
│   └── deleteoldfile.sh
├── logs
│   ├── backup_mysql.INFO.2024-06-26.log
│   ├── backup_mysql.INFO.2024-06-27.log
└── rsync
    ├── push_rsync_devopsapp.sh
    ├── push_rsync_gitlabtar.sh
    ├── push_rsync_jira.sh
    └── rsync_tools.sh

/scripts/backup/ 主要存放本机备份脚本;
/scripts/rsync/ 主要存放跨机备份脚本;
/scripts/delete/ 主要存放删除本机历史备份和日志文件脚本;
/scripts/logs/ 主要存放日志文件;

3.2 以备份mysql 为例介绍脚本及使用办法

3.2.1 /scripts/backup/backup_mysql.sh

该脚本里基于mysqldump 备份数据库,既可以备份基于容器部署的mysql,也可以部署基于rpm 包安装的数据库;
注意几点:备份好后,一定要验证是否能顺利恢复。
因为mysql 配置不同,备份命令也要基于自己的配置修改
比如default-character-set=utf8 ,您的库不是utf-8,那就要改了。

#!/bin/bash

# 数据库连接信息

DB_HOST="127.0.0.1"

DB_PORT="3306"

DB_USER="root"

DB_PASSWD="test"


# 时间格式化,如 20211216


DATE="`date +%Y%m%d%H%M%S`"
# 备份文件目录

DIR_BACKUP="/data/backup/devopsapp/mysqldata"


#备份应用
APP_NAME="mysql"
#脚本根目录
SCRIPT_DIR="/data/scripts/"

DIR_LOG="${SCRIPT_DIR}/logs"

FILE_LOG="${DIR_LOG}/backup_${APP_NAME}.INFO.`date +%F`.log"


# 备份数据库名

DATABASES=("jira  mysql")

# mysql docker id
MYSQL_DOCKER_ID=`docker ps -a | grep devopsappmysql | awk '{print $1}'`

# 测试目录, 目录不存在则自动创建

# test -d ${DIR_LOG} || echo passwd | sudo -S mkdir -p ${DIR_LOG}

test -d ${DIR_LOG} || mkdir -p ${DIR_LOG}
test -d ${DIR_BACKUP} || mkdir -p ${DIR_BACKUP}

# ------------------- 2021-12-16_17:40:48 Start -------------------

echo -e "\n----------------- $(date +%F\ %T) Start -----------------"

echo -e "\n================= $(date +%F\ %T) Start =================" >> ${FILE_LOG}


    # 遍历数据库名

    for database in ${DATABASES[@]}; do 

        # 打印备份的数据库名

        echo "----------- Current backup database: [ ${database} ] ------------"

        echo "-------------- Backed-up database: [ ${database} ] --------------" >> ${FILE_LOG}
        docker exec -i ${MYSQL_DOCKER_ID} sh -c " mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWD} -B ${database} | gzip > ${DIR_BACKUP}/mysqlbackup_${database}_${DATE}.sql.gz"
    done

    # 备份指定的数据库

   # mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWD} -B ${DATABASES} | gzip > ${DIR_BACKUP}/mysql_backup_${DATE}.sql.gz


# docker 版本
#docker exec -i ${MYSQL_DOCKER_ID} sh -c " mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWD} -B ${DATABASES} | gzip > ${DIR_BACKUP}/mysql_backup_${DATE}.sql.gz"


# # 备份全部数据库

# mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWD} -A | gzip > ${DIR_BACKUP}/mysql_backup_${DATE}.sql.gz


echo "------- Backup file 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值