rdrcollector/rdrarchiver.pl

77 lines
2.5 KiB
Perl
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/perl
#########################################################
# Скрипт для архивирования файлов созданных rdrcollector
#
# вызывается командой:
# rdrarchiver.pl /usr/local/etc/rdrcollector.conf
#
# Запускается по крону с требуемой периодичностью (сутки)
#
# Автор: Сергей Калинин e-mail: banzaj28@yandex.ru
# распространяется под лицензией GPL
# (c) 2015
#########################################################
use IO::File;
use Getopt::Long;
use File::Path qw(make_path);
my $opts_pair = IO::File->new("$ARGV[0]") or
die "Can not open: $opts{'conf'} $!\n";
while (<$opts_pair>)
{
($key, $value) = split('=');
$value =~ s/^\s+|\s+$//g;
$opts{$key} = $value;
#print $opts{'source-port'};
}
$opts_pair->close();
# определяем текущую системную дату
my $date = ` /bin/date "+%Y %m %d %H %M %S"`;
my ($cur_year,$cur_month,$cur_day,$cur_hour,$cur_min,$cur_sec) = split('\s',$date);
#print "$cur_year,$cur_month,$cur_day,$cur_hour,$cur_min,$cur_sec";
# ищем файлы старше 1 дня и архивируем
#$arch = '/bin/find '.$opts{'out-dir'}.' -type f -mtime +1 -exec gzip {} \; -print > rdrcollector.log';
#print "$arch\n";
#my $result = `$arch`;
# Получаем список заархивированных файлов
opendir(DIR, "$opts{'out-dir'}");
my @files = grep('*',readdir(DIR));
#print files;
#my @files = grep(/\.gz/,readdir(DIR));
closedir(DIR);
# создаем каталог для соответствующих сжатых файлов
foreach my $file (@files)
{
#print $file;
# в зависимости от имени файла определяем и создаём каталог куда его перемещать
my $year = substr($file,0,4);
my $month = substr($file,4,2);
my $day = substr($file,6,2);
#print "$year $month $day - $cur_day\n";
if ($day ne $cur_day) {
$dir = $opts{'archive-dir'}."/".$year."/".$month."/".$day;
make_path $dir;
my $cmd = '/usr/bin/gzip '.$opts{'out-dir'}.'/'.$file;
#print $cmd."\n";
my $result = `$cmd`;
#print $result;
# Перемещаем файл в соответствующий каталог
$move = '/bin/mv '.$opts{'out-dir'}.'/'.$file.'.gz '. $dir.' > rdrcollector.log';
print "$move\n";
my $mvResult = `$move`;
}
}