Berdasar dari pengalaman sebelumnya yaitu ketika partisi /var over capacity mengakibatkan beberapa service tidak berjalan (kebetulan file yang akan saya pindahkan ini berada pada partisi /var). File file ini adalah file rekaman output dari aplikasi asterisk yang jumlah nya akan terus bertambah ketika ada panggilan masuk / keluar, Asterisk otomatis akan merekam dan menyimpan hasil rekaman nya pada partisi /var, Dalam waktu sehari saja mungkin asterisk akan menyimpan lebih dari 30 sampai 50 rekaman bayangkan kalau satu atau dua bulan ada berapa ratus bahkan ribu itu rekaman, dan yang paling parah ketiaka partisi /var sudah penuh, saya harus memindahkan file file tersebut ke directory lain dan harus di pisah berdasarkan bulan, karna nanti nya file file ini akan di akses oleh orang orang internal untuk men-track  masalah berdasarkan log telepon ini (biasanya orang internal meminta file ini dengan menyebutkan tanggal /bulan).

oke inti nya saya harus memindahkan file file rekaman ini ke dalam partisi lain yang di pisah berdasarkan bulan, dan nanti nya file file ini bisa di akses samba.

Berikut contoh list file nya.

Screenshot_2
List Log Telp

Nak karna file yang harus di pindah lumayan banyak dan saya harus melakukan nya secara rutin maka saya membuat script sederhana untuk menyederhanakan pekerjaan saya.

Berikut ini script nya :

#!/usr/local/bin/perl -w

use strict;

my $date = `date`;
chomp $date;
my ($day, $month, $tanggal, $hour, $zone, $year) = split (/\s+/, $date);

my $directory = "/data/Rekaman/";
my $source = "/var/sss/asterisk/xxx/";

my %months = ( Jan => "01",
        Feb => "02",
        Mar => "03",
        Apr => "04",
        May => "05",
        Jun => "06",
        Jul => "07",
        Aug => "08",
        Sep => "09",
        Oct => 10,
        Nov => 11,
        Dec => 12
);

foreach my $bulan(keys %months) {
        my $folder = "$directory$year$months{$bulan}";
        #print "$folder\n";
        if (not -d $folder) {
                if (not -e "$folder.tar.gz") {
        system("mkdir $folder");
        print "Folder $folder telah di buat\n";
                        }
                }
        opendir (DIR, $source) or die $!;
        while (my $file = readdir(DIR)) {
                if ($file =~ /$year$months{$bulan}/){
                system("mv -v $source$file $folder");
                #print "$file sudah di pindahkan ke $folder\n";
                        }
                }
        my $recent = "$year$months{$month}";
                if ($recent - "$year$months{$bulan}" >= 3) {
                        #print "Folder yang akan di archive adalah $folder\n";
                        if (not -e "$folder.tar.gz") {
                        system("tar -cvzf $folder.tar.gz $folder");
                        system ("rm -R $folder");
                                
                        }
                 }
        }

Oh iya script ini juga akan meng-compress folder yang “umur” nya sudah lebih tua atau sama dengan dengan bulan sekarang dengan format .tar.gz.

Saya jalankan script di atas via crontab setiap tanggal satu setiap bulan nya pada jam 1 dini hari.

Screenshot_4
Crontab menjalankan script move_record.pl

dan berikut file file yang sudah di pindahkan.

Screenshot_5
Setelah file dipindah dan di compress

Artikel referensi : https://notets.wordpress.com/2017/09/03/memindahkan-file-berdasarkan-tanggal-nama/