0%

【Linux】shell编程综合案例

关于Shell编程的综合案例


1 数据库自动备份

  • (1)脚本
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #!/bin/bash

    # 备份基础路径
    BACKUP_BASE_DIR=/home/letere/shell_learn/sample/data/backup

    # 备份日期(文件夹命名)
    BACKUP_TIME=$(date "+%Y-%m-%d")

    # mysql数据库相关信息
    HOST=localhost
    USERNAME=root
    PASSWORD=123456
    DATABASE=nacos_config


    echo "===== 备份开始 - $(date "+%H:%M:%S") ======"

    # 备份路径
    BACKUP_DIR=${BACKUP_BASE_DIR}/${BACKUP_TIME}

    # 判断文件目录是否存在,不存在则创建目录
    if [ ! -e ${BACKUP_DIR} ]
    then
    mkdir -p ${BACKUP_DIR}
    fi

    # 登录mysql,导出数据文件为.sql,压缩到文件目录中
    # 根据实际情况,用for循环备份多个数据库
    mysqldump -u${USERNAME} -p${PASSWORD} --host=${HOST} ${DATABASE} | gzip > ${BACKUP_DIR}/${DATABASE}.sql.gz

    # 对当前日期的文件进行压缩
    tar -zcvPf ${BACKUP_DIR}.tar.gz ${BACKUP_DIR}

    # 删除缓存文件
    rm -rf ${BACKUP_DIR}

    # 删除10天前的数据
    find ${BACKUP_BASE_DIR} -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;

    echo "===== 备份结束 - $(date "+%H:%M:%S") ====="
  • (2)演示