zoukankan      html  css  js  c++  java
  • shell实战之日志备份

    util.sh

    #!/bin/bash -
    
    # Read config
    # kay
    # Version: 1.0
    # 06/22/2016
    
    # configuration file path
    config=${log_bak}/"cfg"
    
    # config parameters
    prefix=`grep -v "^#" ${config}`
    begin=`echo "${prefix}" | grep  'begin' | awk -F '=' '{ print $2 } '`
    logpath=`echo "${prefix}" | grep  'logpath' | awk -F '=' '{ print $2 }' | awk -F ';' '{ for(i=1;i<=NF;i++) print $i }'`
    shpath=`echo "${prefix}" | grep  'shpath' | awk -F '=' '{ print $2 }'`
    bakpath=`echo "${prefix}" | grep  'bakpath' | awk -F '=' '{ print $2 }'`

    cfg

    # This is generated to be a configuration file.
    # kay
    # 06/22/2016
    
    # This is a parameter for crontab and objective file.
    begin=15
    
    # This are some log path 
    # logpath=/root/shell/log/26;/root/shell/log/27;/root/shell/log/28
    logpath=/home/pospadm/trc
    
    # bak path
    bakpath=/home/kycap/bak
    
    # sh path
    shpath=/home/pospadm/log-bak/start.sh

    crontab.sh

    #!/bin/bash -
    
    # Used to do a crontab task
    # kay
    # Version: 1.0
    # 06/22/2016
    
    # @Name: docrontab
    # @Parameter: specific crontab task
    docrontab()
    {
        cronfile="/tmp/crontab.${USER}"
        crontab -l > ${cronfile}
        query=`echo "$1" | sed 's/*/\*/g'`
        grep -q "${query}" ${cronfile} && echo "" ||
        {
                echo "$1" >> ${cronfile}
                crontab ${cronfile}
        }
        rm -f ${cronfile}
    }

    readme

    1.设置环境变量
    log_bak=脚本所在目录
    2.启动脚本
    ./start.sh
    3.停止脚本
    ./stop.sh

    start.sh

    #!/bin/bash -
    
    # This file is used to handle log bak 
    # kay
    # Version: 1.0
    # 06/22/2016
    
    . ${HOME}/.bash_profile
    . ${log_bak}/util.sh
    . ${log_bak}/crontab.sh
    
    # add crontab
    task="0 0 * * * "${shpath}
    docrontab "${task}"
    
    #echo "${bakpath}" >> ret.log
    cd ${bakpath}
    current=`date +"%Y%m%d"`
    mkdir ${current} 2>/dev/null 
    cd ${current}
    
    # handle every specific file 
    for d in ${logpath}
    do
        # search for all directories before time begin
        filelist=`find "${d}" -mtime +"${begin}" -type f`
        for f in ${filelist[@]}
        do
            dir=`echo ${f} | awk -F '/' '{ print $(NF - 1) }'`    
            mkdir ${dir} 2>/dev/null
            mv ${f} ${dir}
        done
    done
    
    # tar log
    cd ${bakpath}
    tar -zcf "${current}.tar.gz" ${current}
    rm -rf ${current}

    stop.sh

    #!/bin/bash -
    
    # Used to stop script and crontab
    # kay
    # Version: 1.0
    # 06/22/2016
    
    crontab -r
    ps -ef | grep 'start' | awk -F ' ' '{ print $2 }' | xargs kill -9
  • 相关阅读:
    [译]The Python Tutorial#4. More Control Flow Tools
    Python基础-函数参数
    Python进阶-继承中的MRO与super
    Python基础-类
    [译]The Python Tutorial#6. Modules
    Python基础-包与模块
    Python基础-类变量和实例变量
    Python进阶
    iphonex适配
    web前端安全
  • 原文地址:https://www.cnblogs.com/seeken/p/5625967.html
Copyright © 2011-2022 走看看