#!/usr/bin/perl -w
#
#
#
sub init_targetdir
{

	my $d = shift;
	my $target='/backups/tmp/';
	my $backupdir = $target.$d;
	chop($backupdir);
	my $ent;

	opendir(TARGETDIR, $target);
	while ($ent = readdir(TARGETDIR))
	{
		if ($ent ne "." && $ent ne "..") {
		my $cmd = "/bin/rm -fr ".$target.$ent;
		system($cmd);
		}
	}
	closedir(TARGETDIR);
	mkdir($backupdir, 0700) ;
	return($backupdir);

}


my $d=`date +'%Y.%m.%d'`;
my $datadir = "/var/lib/mysql";
my $rsync='/usr/bin/rsync';
my $remote_target='rsync://212.43.194.74/in_databases/full_dumps/';
my ($ent, $user, $pass, @databases);

$user = "root";
$pass = "password";

my $backupdir = init_targetdir($d);
if ( -d $backupdir ) {
	opendir(DATADIR, $datadir);
	while ($ent = readdir(DATADIR))
	{
		if ((-d $datadir."/".$ent) && $ent ne '.' && $ent ne '..' && $ent ne "mysql")
		{
			print "Dumping ".$ent."... ";
			my $dump = $backupdir."/".$ent.".sql.gz";
			my $cmd = "/usr/local/bin/mysqldump  --all --add-drop-table --user=$user --password=$pass $ent |gzip -9 -c - > $dump 2>/var/tmp/out.xx";
			system($cmd);
			print "Done.\n";
		}
	}
	my $cmd = $rsync." -aHx ".$backupdir." ".$remote_target;
	print $cmd;
	system($cmd);
	system("rm -rf $backupdir");
	closedir(DATADIR);
	my @st = stat("/var/tmp/out.xx");

	if ($st[7] > 0) {
	system("cat /var/tmp/out.xx | mail  toto\@toto.fr -s [DB_BACKUP_PROBLEM:IN]") if ($st[7] > 0);
	unlink("/var/tmp/out.xx");
	}
}
