码迷,mamicode.com
首页 > 其他好文 > 详细

小需求:看数据源目录下所有gz压缩包的原始大小

时间:2020-07-17 09:40:37      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:files   数组   包名   zip   工具   文件中   数据源   sleep   排查   

今天MR的数据源很可能出现了问题,正常每天对方服务器会推过来2.1TB数据,今天只有1.6TB。

过来是gz压缩包,FTP的方式推送,进来之后我这边的程序进行解析,并存入HDFS。

对端的工程师只能看到压缩包目录的大小,看不到压缩前文件总大小,商量了一下,觉得不好对比数据一致性,想排查数据量问题,没工具可以直接看。

虽然有个命令 gzip -l  可以看,但是只能单个文件查看,看总大小也不方便。

 

然后就写了这个脚本,想看哪个目录,就把脚本放在哪个目录执行即可。

vi gzip_filespace.sh

chmod +x gzip_filespace.sh

脚本内容如下:


 #########################

#用于统计当前目录所有gz压缩包,在不解压情况下,确认解压后的文件量总大小及压缩率

#金峰老王制作于20200716

#########################

#!/bin/bash 

ls -l *.gz|awk ‘{ary_gz_name[$NF]++}END{for(i in ary_gz_name) print "gzip -l " i,";"}‘ |bash|\

grep "%"| awk ‘{print $4,"解压前 "$1/1024/1024" M","解压后 "$2/1024/1024" M","压缩率 "$3}‘ >./$(date +%F)_gz_space.log

sleep 2

cat ./$(date +%F)_gz_space.log|awk ‘{a+=$3;b+=$6}END{print "解压前总 "a/1024"G","解压后总 "b/1024"G",a/b*100"%"}‘ >>./$(date +%F)_gz_space.log

cat ./$(date +%F)_gz_space.log

 


 简单的引入一个数组索引,将获取到的gz压缩包名字赋给数组,用索引的目的是可以将每一个gz压缩包名字放入数组内,

然后用awk,在这里使用for 遍历这个数组,打印输出想要的命令行,交给bash执行。

行处理的特性使得每一行的输出,可以再次变换为自己想要的内容,放入一个文件,也可以留存。

如果延伸一下,还可以通过每天定时任务,获取文件中内容,和其他的监测内容,放入一个日志文件中;

这样看每天看一个日志文件就了解清楚整个服务器的数据量是否正常了。

 

 

 

 

 

小需求:看数据源目录下所有gz压缩包的原始大小

标签:files   数组   包名   zip   工具   文件中   数据源   sleep   排查   

原文地址:https://www.cnblogs.com/jackwang666/p/13326411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!