shell 将日志进行打包备份

shell 将日志进行打包备份

今天同事说了个日志打包备份的问题,当时我在思考为什么不find -mtime,但同事给了个脚本范例,意思是已备份文件名要比原文件名长,所以只对文件名长的日志进行打包!这里就牵涉到文件名的字符长度,因为同事的让我看的脚本变量也没看完,只是大概理解了下思路,这里自己写个脚本,记录一下。

注,临时写的仅进程测试,主要是理解思路!

[root@bogon ~]# tree /var/log/XXX
 /var/log/XXX
 ├── XXX.log
 ├── XXX.log_bak_2021-12-30_22:35:08
 ├── XXX.log_2021-12-30_22:35:11
 ├── XXX.log_bak_2021-12-30
 ├── XXX.log_backup_2021-12-30_22:35:13
 └── XXX.log_bak_2021-12-30_22:35:14

#对/var/log/XXX/下的长备份名,进行打包备份!
BAKPATH=/opt/bak/
BAKNAME=XXX项目
BAKDATE=`date +%F_%T`
BAKEX=.zip
BAKFILE=$BAKPATH$BAKNAME$BAKDATE$BAKEX

############################################################
#上面4个变量其实可以就是下面一个变量,为了后期扩展,建议使用上面进行拼合!
#BAKFILE=/opt/bak/XXX项目`date +%F_%T`.zip
############################################################
mkdir -p $BAKPATH
LOGNAME=/var/log/XXX/XXX.log*
for N in $LOGNAME
do
LOGLANG=`echo $N |wc -L`
        #判断字符长度大于20(/var/log/XXX/XXX.log是20个字符),进行打包
        if [ "$LOGLANG" -gt 20  ] ;then
        echo $N
        zip $BAKFILE $N
        fi
done

再写个原来的脚本,利用mtime的备份脚本

注:不管是atime、mtime、ctime都是根据当前执行时间进行对比的(所以使用time相关属性进行备份建议是凌晨执行计划任务!)

#例:备份nginx一周前的日志,打包为zip
find /var/log/nginx -mtime +7 -exec zip /opt/nginxlog.bak`date +%F_%T`.zip {}  \;


good good study, day day up!

发表评论

textsms
account_circle
email

shell 将日志进行打包备份
今天同事说了个日志打包备份的问题,当时我在思考为什么不find -mtime,但同事给了个脚本范例,意思是已备份文件名要比原文件名长,所以只对文件名长的日志进行打包!这里就牵涉到文件名…
扫描二维码继续阅读
2021-12-30