shell 日志备份

本文介绍了一个用于管理和备份日志文件的Shell脚本。该脚本可以监控指定目录下的日志文件大小,并在达到预设阈值时进行备份。备份后的文件会存放在特定目录并带有时间戳标记。此外,脚本还具备清理旧备份的功能,以确保备份目录不会超过设定的最大大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/sh

#给文件加上时间戳后缀
#参数$1 文件名
function filenameConvert(){
    timestamp=$(date +%Y%m%d%H%M%S)
    #timestamp=`echo $timestamp`
    RETVAL=$1.$timestamp
}

#查找对应文件夹下的最老文件
#参数$1 目录
function searchdir(){
    oldestlog=`ls -rt $1 |head -n 1|awk '{print $1}'`
}

#当日志备份目录达到一定大小时,删除最老的文件
clear_old_log(){
    #cd $logBackupDir
    while true;
    do
        logsize=`du -ms $logBackupDir |awk '{print $1}'`
        if [ $logsize -gt $logBackupMaxSize ];
        then
            searchdir $logBackupDir
            rm -rf $logBackupDir/$oldestlog
            #echo $logBackupDir/$oldestlog
            #echo $oldestlog
            #break;
        else
            break;
        fi
    done

}

backup_log_process(){
  cd $logSaveDir
    for i in *; do
        file_size=`du -m $i |awk '{print $1}'`
        case $i in
            b.log | aabb.txt | aa.rar |\
            a.log)

            if [ ! -d $logBackupDir ]; then
                mkdir -p $logBackupDir
            fi
            
            if [ $file_size -gt $logFileMaxSize ]; then
                filenameConvert $i
                cp $logSaveDir/$i $logBackupDir/$RETVAL
                echo "">$logSaveDir/$i
                clear_old_log
            fi
            ;;
        *)

            #不重要的文件,大于指定大小的也清空,不备份
            if [ $file_size -gt $logFileMaxSize ]; then
                if [ ! -d $logSaveDir/$i ]; then
                    echo "">$logSaveDir/$i
                    echo $i
                fi
            fi
        esac
    done
        
}

#备份目录
logBackupDir=/tmp/hmbackup
#备份目录大小上限M
logBackupMaxSize=20
#日志存放目录
logSaveDir=/tmp
#日志多大可备份,单位M
logFileMaxSize=5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值