rdrcollector/rdrarchiver.pl
Калинин Сергей Валерьевич f212d739e3 Перенос репы с bitbucket
2024-08-21 09:27:24 +03:00

77 lines
2.5 KiB
Perl
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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`;
}
}