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
  • 相关阅读:
    (转)Entity Framework 缓存处理与日志监控,(非常重要的技术)
    (转)6步确保 windbg 成功调试 .net
    (转)十天内掌握线性代数:惊人的超速学习实验
    (转)创业需要知道的13句话
    今年阅读书籍计划,C++之STL篇
    不靠广告也盈利:移动应用掘金7大案例剖析(转)
    常用JS操作(复选框、单选框、下拉框)
    Windows系统直接运行jar
    修改打开方式的程序列表中列出程序的名称
    ora12514错误,TNS:监听程序当前无法识别链接描述符中请求的服务
  • 原文地址:https://www.cnblogs.com/seeken/p/5625967.html
Copyright © 2011-2022 走看看