`
realgzq
  • 浏览: 1020 次
文章分类
社区版块
存档分类
最新评论

log 目录打包 shell

阅读更多
日志打包的shell脚本, 可以添加到crontab中, 每天定时执行,将一天24时每小时的日志文件,合并打包到一个文件中, 并按照月份分组存放。

git:https://github.com/realgzq/logPatchShell

#!/bin/bash



# Help function
function HELP
{
	echo "--------log4j log patch shell,coding by realgzq----------"
	echo "The log file name must be ended with format yyyy-MM-dd-XX or  yyyy-MM-dd.XX, 2015-08-08-16"
	echo "arg1: the path of the log folder"
	echo "arg2: the log file initial string, for example the log file name console.2016-04-12-00, this arg should be console."
	echo "arg3: the days of patching file before today"
	echo "Eg: /app/shell/tar_log.sh /log/tangren-server-web/ info_tangren-server.log. 2"
	echo "if you want patch log file daily please config the /etc/crontab file like this:"
	echo "13 0 * * *  tangren /app/shell/tar_log.sh /log/tangren-erp-web/ console.log- 2"
	exit 1
}


if test -z "$1" || test -z "$2" ||test -z "$3" 
then
    HELP
fi


day=$3
#echo ${day}
cmd=`printf "%s%s %s" "date -d\"" "${day}" "days ago\" +%Y-%m-%d"`
#echo "----------------------------------------------------------"
#echo $cmd
#echo "----------------------------------------------------------"
name=`eval $cmd`


#echo ${day}
cmd=`printf "%s%s %s" "date -d\"" "${day}" "days ago\" +%Y-%m"`
#echo "----------------------------------------------------------"
#echo $cmd
#echo "----------------------------------------------------------"
month_day_str=`eval $cmd`

#name=`date +%Y-%m-%d --date\\="${day} days ago"`
#name=`date -d'7 days ago' +%Y-%m-%d`
#echo $name
nametitle=$2
nameall=""

echo `date '+%Y-%m-%d %H:%M:%S'`" start patching"

cd $1

#if the patch folder not exist, creat it 
if [ ! -d "bak/"$month_day_str ];
then
	mkdir bak/$month_day_str
fi;


for((i=0;i<24;i++));
do
	if [ $i -lt 10 ] 
	then
		if [ -f $nametitle$name-0$i ] 
		then
			nameall=`printf "%s %s" "$nameall" "$nametitle$name-0$i"`
		fi;
		if [ -f $nametitle$name.0$i ] 
		then
			nameall=`printf "%s %s" "$nameall" "$nametitle$name.0$i"`
		fi;
	else
		if [ -f $nametitle$name-$i ]
		then
			nameall=`printf "%s %s" "$nameall" "$nametitle$name-$i"`
		fi;
		if [ -f $nametitle$name.$i ]
		then
			nameall=`printf "%s %s" "$nameall" "$nametitle$name.$i"`
		fi;
	fi
done



echo "tar:$nameall => $nametitle$name.tar.gz"
echo "------------------------------------------"
tar zcf "bak/"$month_day_str"/"$nametitle$name.tar.gz $nameall
if [ -f "bak/"$month_day_str"/"$nametitle$name.tar.gz ]
then
	echo "rm:$nameall"
	rm -rf $nameall
fi;
sleep 1

echo '---'$name' patch finished ---'
echo `date '+%Y-%m-%d %H:%M:%S'`" patch finished!"
echo "------------------------------------------"


分享到:
评论

相关推荐

    日志拷贝打包获取前n天日期

    shell的一点基础应用,将符合条件的log拷贝到指定目录打成tar包

    oracle自动备份shell脚本

    3、本脚本备份输出为zip打包文件,打包文件保存在zip目录下面。 4、本脚本支持备份log保存,log保存在logs目录下。 5、本脚本支持远程备份,备份命令使用的lftp,具体细节参照lftp的使用细则,安装过程中会提示操作...

    nginx日志分割 for linux

    使用方法,先将以下脚本保存为 cutlog.sh,放在/.../bin/bash#function:cut nginx log files shell#设置您的网站访问日志保存的目录,我的统一放在了/home/wwwlogs目录下log_files_path=”/home/wwwlogs/”log_files_d

    使用Bash Shell获取文件名和目录名的简单方法

    还是今天再写一个自动化打包脚本,用到了从路径名中获取最后的文件名。这里记录一下实现过程。当然,最后我也会给出官方的做法。(ps:很囧,实现完了才发现原来Bash Shell有现成的函数) 获取文件名 假设给定的路径...

    xshell常用命令.docx

    将vim挂起(暂停):ctrl+z,暂停后可进行其他shell操作,完了之后可通过 fg 命令切换回vim界面继续编辑 :MR:查看历史文件记录(注意:MR大写) :sp 横向切换界面窗口 :vsp 纵向切换界面窗口 12.命令rz、sz——文件...

    在linux上部署项目.rar

    将maven项目打包进行打包,找到target文件夹,将里面的.jar后缀的文件上传到Linux系统中,在Linux系统下cd到所在的目录,输入Java -jar boot工程.jar 命令,此时springboot项目就启动成功了。但是由于这种方式启动的...

    FlexBuild 3.0

    增加自动构建功能,可指定每天或每周定时构建 增加设置对话框,大部分设置多...修改log,编译后运行log指令会弹出上一次的编译日志 修改编译日志格式 修改flexbuild配置文件格式(flexbuild.xml) 增加多语言界面支持

    20150726-Linux系统及程序设计实验全部代码+4种动态网页语言完成综合性实验+2000字综合性实验报告详细

    12、tar打包压缩testuser帐号主目录下的所有文件。 13、用U盘把上一步打包压缩文件拷贝到U盘上。 14、执行userdel -r testuser,执行rm -fr myshare 题目创建人 题目注释 把打包压缩文件提交即可。 ...

    添加powershell脚本来解决nuget打包文件丢失问题

    对于进行nuget打包时,有时我们需要添加一个配置文件,就是一些文本文件,而这些文件我们在网站发布时需要同时复制到输出目录,否则会出现文件丢失的问题,我们在打包时通过添加powershell脚本来解决它。 一般添加...

    Linux指令一周通 (技术图书大系).azw3

    1.69 tar指令:打包同时压缩/解压缩文件 1.70 tee 指令:从标准输入读取数据到标准输出,同时保存为文件 1.71 tftp指令:传输文件 1.72 tmpwatch指令:删除临时文件 1.73 touch指令:更改文件/目录时间 1.74 umask...

    舵图:打包的舵图图表存储库

    要更新此index.yaml的charts ,请将打包图表的副本放入charts文件夹中,并通过从该index.yaml的根目录运行以下命令来(重新)构建index.yaml : helm repo index . --url ...

    karaf:阿帕奇卡拉夫之镜

    它提供了您可以毫不费力地直接利用的统包功能,打包为可变或不可变应用程序。 概述 热部署:Karaf 支持应用热部署(在 deploy 目录中)。 动态配置:Karaf 使用中央位置(etc 目录)进行配置(以不同的格式、属性...

    interactive-cli-seed:交互式 cli 工具的种子项目

    无控制台: console.log已被禁止用于日志可观察性。 未使用的导入:启用此功能可以清除不需要的导入。 虚拟机 Nvmrc 可以将您的运行时环境设置为该项目的正确 Node 版本。 运行命令nvm use 。 更漂亮 提交任何支持...

    UNIX环境高级编程和源代码

    13.4.1 SVR4流log驱动程序 315 13.4.2 4.3+BSD syslog设施 316 13.5 客户机-服务器模型 319 13.6 小结 319 习题 319 第14章 进程间通信 320 14.1 引言 320 14.2 管道 320 14.3 popen和pclose函数 325 14.4 协同进程 ...

    rar压缩软件.rar

    在 Unix 中,你需要将 RAR 命令行参数置于单引号或双引号中,防止被 Shell 解释。例如,这个命令将从当前目录中所有的 RAR 压缩文件中解压的 *.asm 文件: rar e '*.rar' '*.asm' 命令可以是下列中的任何一个:...

    microservices

    文档2 Java文档3 swagger 4 log4j 5 junit 6 H2数据库7执行器 Spring Boot Web MVC快速入门 该示例演示了如何在Kubernetes或OpenShift上使用Spring Boot和Spring MVC来实现REST服务。 建造 这个例子可以用 mvn ...

    UNIX环境高级编程

    13.4.1 SVR4流log驱动程序 315 13.4.2 4.3+BSD syslog设施 316 13.5 客户机-服务器模型 319 13.6 小结 319 习题 319 第14章 进程间通信 320 14.1 引言 320 14.2 管道 320 14.3 popen和pclose函数 325 14.4 协同进程 ...

    UNIX环境高级编程部分

    13.4.1 SVR4流log驱动程序 13.4.2 4.3+BSD syslog设施 13.5 客户机-服务器模型 13.6 小结 习题 第14章 进程间通信 14.1 引言 14.2 管道 14.3 popen和 pclose函数 14.4 协同进程 14.5 FIFO 14.6 系统V IPC 14.6.1 ...

Global site tag (gtag.js) - Google Analytics