zoukankan      html  css  js  c++  java
  • Shell 编程综合案例

    Shell编程综合案例

    Shell也学习了大概的知识,现在这篇文章就大概讲述下如何使用shell编写一个脚本呢?下面就展示一个大家常用的数据库备份案例来进行展示。

    需求分析

    • 1)每天凌晨2:10分备份数据库 atguiguDB 到 /data/backup/db
    • 2)备份开始和备份结束能够给出相应的提示信息
    • 3)备份后的文件要求以备份时间为文件名,并打包成 .tar.gz 的形式,比如
      2018-03-12_230201.tar.gz
    • 4)在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除

    编写一个shell脚本

    思路分析

    先将mysql数据库备份到文件夹下打包。然后在用crond进行定时执行

    代码实现

    #!/bin/bash
    #完成数据库的定时备份
    #备份的路径
    BACKUP=/data/backup/db
    #当前的时间作为文件名
    DATETIME=$(date +%Y-%m-%d_%H%M%S)
    #可以输出变量调试
    #echo ${DATETIME}
    echo "=========开始备份=========="
    echo "========备份的路径是 $BACKUP/$DATETIME.tar.gz=========="
    
    #主机
    HOST=localhost
    #用户名
    DB_USER=root
    #密码
    DB_PWD=root
    #备份数据库名
    DATABASE=atguiguDB
    #创建备份的文件夹
    #如果该备份的文件夹有则使用,没有就重新创建一个  -p:参数P代表parents,表示递归创建目录如果要创建目录A并创建目录A的子目录B,没有用-p的情况下是mkdir 2次。如果用-p 可以直接创建2个目录 mkdir -p 目录A/子目录B就可以。
    [ ! -d "$BACKUP/$DATETIME"] && mkdir -p "$BACKUP/$DATETIME"
    #执行mysql的备份数据库的指令
    mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip >$BACKUP/$DATETIME/$DATETIME.sql.gz
    #打包备份文件
    cd $BACKUP
    tar -zcvf $DATETIME.tar.gz $DATETIME
    # 删除临时目录
    rm -rf $BACKUP/$DATETIME
    #删除10天前的备份文件
    find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} ;
    echo "======备份文件成功====="
    

    crond 定时执行

     10 2 * * * /usr/sbin/mysql_db_backup.sh
    

  • 相关阅读:
    VMware安装Centos7超详细过程
    LVS+Keepalived小试牛刀
    Spring入门之AOP篇
    Spring学习笔记及资源
    Spring入门第一例
    Mybatis学习手记(二)
    Mybatis学习手记(一)
    java web 开发入门实例
    关于JAVA编译时找不到自定义包的问题
    Java 学习笔记及资源
  • 原文地址:https://www.cnblogs.com/jianshuai520/p/11848790.html
Copyright © 2011-2022 走看看