Eseguire il backup di un database MySQL con PHP

Uno script per salvare le tabelle del nostro database, funzionante con PHP 7

La premura più importante che deve avere un webmaster è quella di eseguire continui backup dello spazio web che gestisce, sia lato file che lato database. Per quanto riguarda i file basta utilizzare un qualunque client ftp, ma per quanto riguarda il database non sempre si ha la possibilità di utilizzare client in locale.

Per agevolare la procedura di backup è possibile utilizzare il seguente script

<?php/
function backup_tables($host,$user,$pass,$name,$tables = '*') {/
$link = mysqli_connect($host,$user,$pass,$name);/
$handle = fopen('db-backup-'.$name.'-'.time().'-'.(md5(time())).'.sql','w+');/

if($tables == '*'){/
   $tables = array();/
   $result = mysqli_query($link,'SHOW TABLES');/
   while($row = mysqli_fetch_row($result)) {/
      $tables[] = $row[0];/
   }/
} else {/
   $tables = is_array($tables) ? $tables : explode(',',$tables);/
}/
$return='';/
foreach($tables as $table) {/
   $result = mysqli_query($link,'SELECT * FROM '.$table);/
   $num_fields = mysqli_num_fields($result);/
   $return.= 'DROP TABLE '.$table.';';/
   $row2 = mysqli_fetch_row(mysqli_query($link,'SHOW CREATE TABLE '.$table));/
   $return.= "\n\n".$row2[1].";\n\n";/
   fwrite($handle,$return);/
   for ($i = 0; $i < $num_fields; $i++) {/
      while($row = mysqli_fetch_row($result)) {/
         $return= 'INSERT INTO '.$table.' VALUES(';/
            for($j=0; $j < $num_fields; $j++) {/
               $row[$j] = addslashes($row[$j]);/
               $row[$j] = preg_replace("/\n/","/\\n/",$row[$j]);/
               if (isset($row[$j])) {/
                  $return.= '"'.$row[$j].'"';/
               } else {/
                  $return.= '""';/
               }/
               if ($j < ($num_fields-1)) {/
                  $return.= ',';/
               }/
            }/
            $return.= ");\n";/
            fwrite($handle,$return);/
         }/
      }/
   }/
   mysqli_close($link);/
   fwrite($handle,$return);/
   fclose($handle);/
}/
?>

che si occupa di generare lo script sql della creazione e il popolamento di ogni singola tabella del database indicato nei parametri di input. Ci basta pianificare un job che richiami il nostro script php contenente anche le istruzioni per spedirci l’sql per mail ed il gioco è fatto.

Controlliamo ciclicamente il funzionamento dei link nei nostri articoli. Se noti dei link che non funzionano segnalacelo tra i commenti. Se hai apprezzato l'articolo considera l'idea di sostenere il blog anche con una piccola donazione. Grazie. Patreon / Ko-fi / Liberapay / Paypal

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *