日志备份shell脚本,按时间点创建多级目录,每分钟备份一次上一分钟的日志文件

备注很详细 , 思路很简单 , 欢迎提问

#!/bin/sh

log_src_dir=/home/hadoop/logs/log               #日志文件所在目录
log_backup_dir=/usr/local/log                   #日志文件备份目录
year_mounth=$(date -d "1 minute ago" +%Y%m)     #获取当前时间一分钟前的年月
day=$(date -d "1 minute ago" +%d)               #获取当前时间一分钟前的日
hour_minute=$(date -d "1 minute ago" +%H%M)     #获取当前时间一分钟前的小时分钟
log_file=access.log.*                           #日志文件名格式
:<<! 此判断可以不要
if [ -d "${log_backup_dir}/${year_mounth} " ]   #判断日志文件备份目录的 年月 文件夹是否存在
then
        if [ -d "${log_backup_dir}/${year_mounth}/${day}" ]     #若 年月 文件夹存在判断下级 日 文件夹是否存在
        then
                mkdir -p ${tmp_dir}             #若 日 文件夹不存在,创建全路径目录
        else
                mkdir -p ${tmp_dir}             #若 日 文件夹存在,创建全路径目录
        fi
else
        mkdir -p ${tmp_dir}             #若 年月 文件夹不存在创建全路径目录
fi
!

mkdir -p ${log_backup_dir}/${year_mounth}/${day}/${hour_minute}         #根据当前时间创建日志文件备份目录
cd ${log_src_dir}       #进入日志文件所在目录,对此文件目录下的文件进行遍历,只要符合access.log.*格式的文件
for files in $(ls ${log_file} )
do
        if cp $files ${log_backup_dir}/${year_mounth}/${day}/${hour_minute}     #逐个复制日志文件到指定的日志备份文件夹内
        then
                mv $files "bak."$files          #若复制成功,则给日志文件重命名加上bak.前缀,这样在下一次遍历此文件夹时就不符合access.log.*格式,
                                                #就不会被遍历到,也就不会被再次复制
        fi
done

#使用crontab工具定期执行本脚本
#编辑定时任务 crontab -e
#添加一个定时任务 */1 * * * * /脚本文件所在目录全路径/baklog.sh  每分钟执行一次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值