bash 大日志文件切割分离代码

代码语言:bash

所属分类:文件

代码描述:bash 大日志文件切割分离代码

代码标签: 文件 切割 分离

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

#!/bin/bash
# ---------------------------------------------------------------------
# 日志文件300M分割,并zip压缩,每个项目仅保留最新30个文件,
# 文件格式:项目名称-年月日时分秒.zip
# Author   : 
# Date     : 
# Email    : 
# Version  : 1.0
# ---------------------------------------------------------------------

# 日志目录
LOG_DIR='/log'
# 日志文件名称,支持正则表达式,多个使用“,”分隔
FILE_NAME='*.log'
# 文件切割最大大小,单位MB
MAX_FILE_SIZE=300
# 保留文件数
MAX_FILE_NUM=30
# 压缩包后缀
FILE_SUFFIX=zip
# 提示内容
MESSAGE="Usage: $0 LOG_DIR FILE_NAME MAX_FILE_SIZE MAX_FILE_NUM \nFor Example: $0 /log/ nginx.log 100 30"

while [ $# -ge 2 ]
do
    case "$1" in
        -d) LOG_DIR=$2; shift 2;;
        -f) FILE_NAME=$2; shift 2;;
        -s) MAX_FILE_SIZE=$2; shift 2;;
        -n) MAX_FILE_NUM=$2; shift 2;;
        -t) FILE_SUFFIX=$2; shift 2;;
         *) echo "Unknown parameter $1." ; shift 2; continue;;
    esac
done

if [ -z "${LOG_DIR}" -o ! -d "${LOG_DIR}" ]; then
    echo "请输入文件所在目录"
    echo -e ${MESSAGE}
    exit 1
fi

LOG_FILE_SIZE=$(ls ${LOG_DIR}'/'${FILE_NAME} | wc -l)
if [ "${LOG_FILE_SIZE}" -eq 0 ]; then
    echo "请输入文件名"
    echo -e ${MESSAGE}
    exit 1
fi

if [ -z "${MAX_FILE_SIZE}" ]; then
    echo "请输入文件以多少MB分割"
    echo -e ${MESSAGE}
    exit 1
fi

if [ -z "${MAX_FILE_NUM}" ]; then
    echo "请输入保留多少个压缩文件"
    echo -e ${MESSAGE}
    exit 1
fi

# -------------------------------------------------
# rolling log file
rolling_file () {
    CUR_TIME=$(date +%Y%m%d%H%M%S)
    LOG_FILE_LIST=($(ls ${LOG_DIR}/${FILE_NAME}))
    cd ${LOG.........完整代码请登录后点击上方下载按钮下载查看

网友评论0