Le script ci dessous permet de faire une sauvegarde compressée de la base de données MySQL dans le répertoire DB_Backup préalablement créé à la racine de votre site.
Le nom du script contient la date de la génération et j’ai rajouté une fonction qui permet d’effacer, après la génération de la sauvegarde, tous les fichiers de sauvegarde vieux de plus de $NbJours jours.
Script de sauvegarde utilisé sur mes sites hébergés chez 1&1.
<?php $serveur = "nom_serveur" $utilisateur = "nom_user"; $motDePasse = "mdp"; $base = "nom_BDD"; $dir_backup = getenv('DOCUMENT_ROOT')."/DB_Backup"; MYSQL_CONNECT($serveur, $utilisateur, $motDePasse) or die ( "<h1>Serveur MySQL non disponible</h1>"); MYSQL_SELECT_DB($base) or die ( "<h1>Base non disponible</h1>"); // Génération du fichier de sauvegarde dans le répertoire $dir_backup system(sprintf( 'mysqldump --opt -h%s -u%s -p"%s" %s | gzip > %s/SauveBD_'.date("d_n_Y_H_i_s").'.sql.gz', $serveur, $utilisateur, $motDePasse, $base, $dir_backup )); $NbJours = 7; // Suppression des vieux fichiers de sauvegarde $folder = new DirectoryIterator($dir_backup); foreach($folder as $file){ if( ($file->isFile()) && (!$file->isDot()) ) { if (time() - $file->getMTime() > $NbJours*24*3600) unlink($file->getPathname()); } } ?>
Attention, si votre base de données Mysql est trop lourde, il est plus prudent de créer un fichier de sauvegarde par table.
Script de sauvegarde de la BDD pour bases lourdes
<?php $result = MYSQL_QUERY("SHOW TABLES"); $numrow = MYSQL_NUM_ROWS($result); for($i = 0;$i < $numrow;$i++) { $table = MYSQL_RESULT($result,$i); // echo "Sauvegarde de la table ".$table; system(sprintf("mysqldump --opt -h $serveur -u $utilisateur -p"$motDePasse" $base $table | gzip > %s/$table.sql.gz",$dir_backup)); } ?>
Laisser un commentaire
Participez-vous à la discussion?N'hésitez pas à contribuer!