77 lines
2.5 KiB
Perl
77 lines
2.5 KiB
Perl
|
#!/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`;
|
|||
|
}
|
|||
|
|
|||
|
}
|