110 lines
3.2 KiB
Perl
110 lines
3.2 KiB
Perl
#!/usr/bin/perl
|
|
|
|
BEGIN { use lib '/usr/home/cfg' ; require push_inc ; }
|
|
|
|
use CGI::Carp qw(fatalsToBrowser);
|
|
use strict;
|
|
use DBI;
|
|
use Date::Calc qw(:all);
|
|
use Date::Manip;
|
|
|
|
#-------------------------------------------------------------------------------
|
|
|
|
my @ARGV = split(/\&/, $ENV{'QUERY_STRING'});
|
|
my $debug = $ARGV[0] ;
|
|
|
|
# test link : https://www.itvadmin.co.za/cgi-bin/scripts/cron/mysql_backup.pl?1
|
|
|
|
#-------------------------------------------------------------------------------
|
|
|
|
my ($now_sec,$now_min,$now_hour,$now_dd,$now_mm,$now_year,$now_wday,$now_yday,$isdst)=localtime();
|
|
|
|
$now_sec = sprintf("%02d", $now_sec) ;
|
|
$now_min = sprintf("%02d", $now_min) ;
|
|
$now_hour = sprintf("%02d", $now_hour) ;
|
|
|
|
$now_year += 1900;
|
|
|
|
$now_dd = sprintf("%02s", $now_dd) ;
|
|
$now_mm = sprintf("%02s", $now_mm + 1) ;
|
|
my $now_yy = sprintf("%02s", $now_year - 2000) ;
|
|
|
|
exit if $now_hour > 21 || $now_hour < 8 ;
|
|
|
|
# my ($bkyear,$bkmonth,$bkday) = Add_Delta_Days($now_year,$now_mm,$now_dd,-7) ;
|
|
|
|
# $bkmonth = sprintf("%02s", $bkmonth) ;
|
|
# $bkday = sprintf("%02s", $bkday) ;
|
|
|
|
my $err = '' ;
|
|
|
|
my $date1 = &ParseDate("$now_mm/$now_dd/$now_yy");
|
|
|
|
my $date2 = &DateCalc($date1,"- 7 days",\$err);
|
|
|
|
my $bkyear = substr($date2,0,4);
|
|
my $bkmonth = substr($date2,4,2);
|
|
my $bkday = substr($date2,6,2);
|
|
|
|
#-------------------------------------------------------------------------------
|
|
|
|
my $db = "itv_admin_db";
|
|
my $dbhost = "localhost";
|
|
my $dbuser = "itv_admin_user";
|
|
my $dbpass = "!Ja16Q7P0X3SVTWr";
|
|
my $date = "`date +%Y-%m-%d`";
|
|
my $path = "/home/mysqlbak";
|
|
my $ext = "bz2";
|
|
|
|
if ($debug) { print "Content-type: text/html\n\n"; }
|
|
|
|
flush_old($path,$ext);
|
|
my($dbh,$sth,$query);
|
|
|
|
my $dsn = "DBI:mysql:$db;host=$dbhost";
|
|
$dbh = DBI->connect($dsn,$dbuser,$dbpass,{PrintError => 0, RaiseError => 1}) or die "Unable to connect, $DBI::errstr";
|
|
$query = qq^SHOW DATABASES^;
|
|
$sth = $dbh->prepare($query);
|
|
$sth->execute();
|
|
|
|
while(my $ref = $sth->fetchrow_array()) {
|
|
unless ($ref eq 'itv_admin_db') { next ; }
|
|
if ($debug) { print "ref=$ref \n"; }
|
|
my @bp = `mysqldump --user=$dbuser --password=$dbpass --add-drop-table $ref | bzip2 -1 > $path/$ref.$date.$now_hour$now_min.$ext`;
|
|
}
|
|
|
|
$sth->finish();
|
|
$dbh->disconnect();
|
|
|
|
my $dow = Day_of_Week($now_year,$now_mm,$now_dd);
|
|
our $ftp_file_name = "itv_admin_db.$dow.bz2" ;
|
|
&uploader_filmfreight("$path/itv_admin_db.$now_year-$now_mm-$now_dd.$now_hour$now_min.$ext","/mysqlbak",$ftp_file_name,'n') ;
|
|
|
|
# - - - - - - - - - - - - - - - - -
|
|
if ($debug) { print "Done."; }
|
|
# - - - - - - - - - - - - - - - - -
|
|
|
|
sub flush_old {
|
|
my ($path,$ext) = @_;
|
|
opendir BP_DIR,"$path" or die "Cannot open $path: $!\n";
|
|
my @old_backups = grep { /\.$ext$/ } readdir BP_DIR;
|
|
closedir BP_DIR;
|
|
|
|
for (@old_backups) {
|
|
my ($db_bk_name,$db_bk_date,$db_bk_time,$db_bk_ext) = split(/\./);
|
|
$db_bk_date =~ s/\-//g;
|
|
my $bk_7_days_back_date = "$bkyear$bkmonth$bkday";
|
|
# print "<br>1. $_ -> $db_bk_date = $bkyear$bkmonth$bkday" ;
|
|
if ($db_bk_date > $bk_7_days_back_date) { next; }
|
|
# print "<br>2. $_ -> $db_bk_date = $bkyear$bkmonth$bkday" ;
|
|
my @args = ("rm","-f","$path/$_");
|
|
system(@args);
|
|
}
|
|
}
|
|
|
|
# - - - - - - - - - - - - - - - - -
|
|
|
|
use common ;
|
|
use uploader ;
|
|
|
|
1; |