Re: prosim o pomoc se scriptem
Cizek.Milan
Cizek.Milan at seznam.cz
Fri Sep 8 13:35:12 CEST 2006
> snazim se napsat jednoduchy scriptik na zalohu jedne DB z mysq a protoze
> s tim zacinam potreboval bych poradit s nekolika drobnostmi(pro vas,pro
> me zatim nadlidskej ukol)
Ahoj,
ja mam neco v podobneho v perlu (sh az tak neovladam). Kontrola spravnosti zalohy se da overit resultcodem z mysqldump - je to nejjistejsi. Preci jen ten soubor tam mit muzes, ale treba neuplny nebo poskozeny. Cele bych to upravil jako funkci a tu nasledne volal pro vice databazi. Jinak je jeste moznost zalohovat vsechny db. Tady je perl kdyztak reseni - staci jen upravit cesty (pouzivam pod BSD i Win).
Milan
#!/usr/bin/perl
my $path = "D:/Dochazka/";
my $filename = $path.&getbackupname(time());
# uchovvat starych zaloh?
my $oldercnt = 5;
sub getbackupname()
{
my($timestamp) = @_;
my($day,$month,$year) = (localtime($timestamp))[3,4,5];
return sprintf "backup-%02d.%02d.%d.sql",$day,$month+1,1900+$year;
}
sub mysqldump()
{
my($host,$db,$user,$pass) = @_;
my $params = "-vC --opt --databases $db --host=$host --user $user";
if ($pass ne undef)
{ $params .= " --password=$pass"; }
my($command) = "C:/PHPdev/MySQL/bin/mysqldump $params > $filename";
return system($command);
}
if (&mysqldump("localhost","db","root","") == 0)
{
print "Export sucessfull.\n";
foreach $soubor (glob($path."backup-??.??.????.sql"))
{
@fileinfo = stat($soubor);
$soubory{$soubor} = $fileinfo[9];
}
print "Delete older backups...\n";
my $count = 0;
foreach $soubor (sort {$soubory{$b}<=>$soubory{$a}} keys %soubory)
{
if ($count > $oldercnt)
{
print "-- $soubor => $soubory{$soubor}\n";
unlink($soubor);
}
$count++;
}
}
else
{
print "Export error (unfinished file deleted).\n";
unlink($filename);
}
More information about the Users-l
mailing list