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