设为首页 收藏本站
查看: 817|回复: 0

[经验分享] perl按日期归档日志

[复制链接]

尚未签到

发表于 2018-8-31 13:04:44 | 显示全部楼层 |阅读模式
  帮一上海朋友工厂维护一台freebsd服务器,该服务器上运行着squid等服务。服务器上有一支perl程序会每天定时的切割当天的squid日志,以日期形式保存在某目录下,大体如下:
  


  • -rw-r--r--  1 root  wheel   51827130 Aug 20 04:27 20110801.log
  • -rw-r--r--  1 root  wheel   56598624 Aug 20 04:27 20110802.log
  • -rw-r--r--  1 root  wheel   66925544 Aug 20 04:27 20110803.log
  • -rw-r--r--  1 root  wheel   47917440 Aug 20 04:27 20110804.log
  • -rw-r--r--  1 root  wheel   44134286 Aug 20 04:27 20110805.log
  • -rw-r--r--  1 root  wheel   43705704 Aug 20 04:27 20110808.log
  • -rw-r--r--  1 root  wheel   33358662 Aug 20 04:27 20110809.log
  • -rw-r--r--  1 root  wheel   35820354 Aug 20 04:27 20110810.log
  • -rw-r--r--  1 root  wheel   48065784 Aug 20 04:27 20110811.log
  • -rw-r--r--  1 root  wheel   38021175 Aug 20 04:27 20110812.log
  • -rw-r--r--  1 root  wheel   30382856 Aug 20 04:27 20110813.log
  • -rw-r--r--  1 root  wheel   11898255 Aug 20 04:27 20110815.log
  • -rw-r--r--  1 root  wheel   10068232 Aug 20 04:27 20110816.log
  • -rw-r--r--  1 root  wheel   12431556 Aug 20 04:27 20110817.log
  • -rw-r--r--  1 root  wheel    6405197 Aug 20 04:27 20110818.log
  • -rw-r--r--  1 root  wheel    5054207 Aug 20 04:27 20110819.log
  • -rw-r--r--  1 root  wheel    3455222 Aug 26 04:14 20110821.log
  • -rw-r--r--  1 root  wheel  124680376 Aug 26 04:14 20110822.log
  • -rw-r--r--  1 root  wheel  150105140 Aug 26 04:14 20110823.log
  • -rw-r--r--  1 root  wheel    5183330 Aug 26 04:14 20110824.log
  • -rw-r--r--  1 root  wheel    6486877 Aug 26 04:14 20110825.log
  • -rw-r--r--  1 root  wheel    8481735 Sep  2 04:03 20110828.log
  • -rw-r--r--  1 root  wheel   22789068 Sep  2 04:03 20110829.log
  • -rw-r--r--  1 root  wheel   68841800 Sep  2 04:03 20110830.log
  

  要求:编写一脚本程序,对该目录中日志以年月的形式进行归档,如201108.tar.gz
  代码如下:
  


  • #!/usr/bin/perl -w

  • use strict;
  • use Shell qw/mv/;
  • use File::Path qw/remove_tree/; //调用该模块的目的是为了删除归档前的非空目录

  • my %log;

  • if ( $< != 0 ) {
  •    printf &quot;%s&quot;,&quot;You must run this script as root\n&quot;;
  • }

  • opendir LOG,'/data/squid_log' or die &quot;$!\n&quot;;

  • while ( my $file = readdir LOG ) {
  •         chomp $file;
  •         next unless $file =~ /^(\d{6})\d+/;
  •         push @{$log{$1}},$file;
  • }

  • closedir LOG;

  • for my $str ( sort keys %log ) {
  •     my @array = @{$log{$str}};
  •     mkdir $str,0755;
  •     my $sh = Shell->new();
  •     $sh->mv(&quot;@array $str&quot;);
  •     system(&quot;tar czvf ${str}.tar.gz $str&quot;);
  •     remove_tree(&quot;$str&quot;,{ verbose => 1,});

  • }
  

  归档过程:
  


  • a 201102
  • a 201102/20110213.log
  • a 201102/20110214.log
  • a 201102/20110218.log
  • a 201102/20110220.log
  • a 201102/20110221.log
  • a 201102/20110222.log
  • a 201102/20110223.log
  • a 201102/20110224.log
  • a 201102/20110225.log
  • a 201102/20110228.log
  • unlink 201102/20110213.log
  • unlink 201102/20110214.log
  • unlink 201102/20110218.log
  • unlink 201102/20110220.log
  • unlink 201102/20110221.log
  • unlink 201102/20110222.log
  • unlink 201102/20110223.log
  • unlink 201102/20110224.log
  • unlink 201102/20110225.log
  • unlink 201102/20110228.log
  • rmdir 201102
  • ……………………………………………………………………
  

  最后归档后的效果:
  


  • [/data/squid_log]# ll
  • total 203762
  • -rw-r--r--  1 root  wheel  12817056 Sep 16 20:49 201012.tar.gz
  • -rw-r--r--  1 root  wheel   8170954 Sep 16 20:49 201101.tar.gz
  • -rw-r--r--  1 root  wheel   8819026 Sep 16 20:49 201102.tar.gz
  • -rw-r--r--  1 root  wheel  15008666 Sep 16 20:49 201104.tar.gz
  • -rw-r--r--  1 root  wheel  10950252 Sep 16 20:49 201105.tar.gz
  • -rw-r--r--  1 root  wheel  70723508 Sep 16 20:50 201106.tar.gz
  • -rw-r--r--  1 root  wheel  13035446 Sep 16 20:50 201107.tar.gz
  • -rw-r--r--  1 root  wheel  63533990 Sep 16 20:51 201108.tar.gz
  • -rw-r--r--  1 root  wheel   5290849 Sep 16 20:51 201109.tar.gz
  • -rwx------  1 root  wheel       646 Sep 16 17:30 log.pl



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-559400-1-1.html 上篇帖子: perl监控mysql slave 端口 下篇帖子: perl发邮件代码(备份)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表