#!/usr/bin/perl -w $logDir="/var/log"; ($curMonth,$curYear) = (localtime) [4,5]; $curYear=$curYear+1900; if ($curMonth==0) { # If January, process logs for 12th month of previous year. $curMonth=12; $curYear=$curYear-1; } # Pad month with leading zeros $curMonth=sprintf("%2d", $curMonth); $curMonth=~ tr/ /0/; opendir(LOGDIR,$logDir) or die "Can't open $logDir for readin: $!"; @logFiles= (); while ( defined ($file = readdir(LOGDIR)) ) { next unless $file =~ /.*\.$curYear-$curMonth-.*/o; my $filename="$logDir/$file"; push (@logFiles, $filename) if -T $filename; } #@logFiles = grep { /\.*$curYear-$curMonth-*/ } readdir(LOGDIR); closedir(LOGDIR); $numLogFiles = @logFiles; if ( $numLogFiles == 0 ) { die "Exiting: there are no log files for $curYear-$curMonth\n"; } else { print "Processing $numLogFiles log files for $curYear-$curMonth\n"; } $gzipFile="$logDir/logFiles.$curYear-$curMonth.tar.gz"; print "Archiving $curYear-$curMonth logfiles into $gzipFile...\n"; $status=system("tar -cf - @logFiles | gzip -c > $gzipFile"); die "tar/gzip exited abnormally. Aborting: $?" unless $status==0; unless (($count = unlink(@logFiles)) == @logFiles) { warn "Could only delete $count of " . (@logFiles) . " files"; } print "DONE!!\n\n";