Front page | perl.beginners |
Postings from July 2003
From: Keith Olmstead
July 17, 2003 12:44
Message ID: Pine.LNX.firstname.lastname@example.org
Been searching though this list for awhile now, and now I am needing some help. I am not asking for someone to do my code for me, I am trying to learn perl and the only way for me to do that is to dive staight into it.
My problem is with the theory of the script that I am trying to write. I am needing something to backup logs for me from a central log server. They layout of these files are as follows.
/host/ip/year/month/day/log1, log2, etc
Every file and dir under dir1 is created dynamically by the logging program, syslog-ng.
What I am wanting to do is create a script that will tar and gzip the day dirs at the end of the day and remove the dir after it has been backed up. After the month is finished, I would like the same done for it.
Currently there are 20ish host dirs, one of each server that is logging to this box. There will be more and when they get pointed to this server, the ip dir will be created for that host and each dir under that will also be created for the corresponding date. The logs need to be kept for 2-3 months, and then deleted.
I am needing help thinking this script out, maybe get ideas of how to set it up. From reading using File::Find, might be useful.
I was thinking about writing a script that runs in cron each night that tars and gzp the log dirs. Currently I have a script that is getting a list of the dir, but I don't really know where to go from there. I need to get it to dive into the dir to the day lvl and archive the previous days logs.
Here are 2 scripts that I have been playing with. I don't even know if I am going in the right direction.
my $dir = '/opt/log/hosts/';
opendir(DIR, $dir) or die "Cannot open Directory";
# read the dir contents into a list, and grep out the . and .. dir entries
my @entries = grep (!/^\.\.?$/ , readdir (DIR));
my $startdir = $ARGV;
return if -d and /^\.\.?$/;
push @dirlist, $_ if -d;
#my $file_list = join '<BR>', @dirlist;
my $file_list = @dirlist;
Like I said before, I am not asking for someone to do my work just some guidiance in the right direction.
by Keith Olmstead