NazzTazz
25/03/2008, 23h35
Ok, j'editerai le titre du sujet
$cmd = 'mysqldump -h '.host. ' -u '.user. ' --password="' .pass. '" ' .$base.' > ' .last_d_dir.'/'.$base.'.sql';
#! /usr/bin/php
/*------------------------------------------------------------
Backup automatique de toutes les bases de données d'un serveur.
--------------------------------------------------------------
Nécéssite: Php4+ avec l'extention mysql
Fonctionne en mode PHP-CLI ( ligne de commande ) en root.
Installation:
wget http://nazztazz.ovh.org/sql_backups
chmod +x ./sql_backups
Puis, ajouter la ligne suivante dans votre crontab:
0 3 * * * root /chemin/vers/sql_backups >/dev/null 2>&1
Usage libre.
------------------------------------------------------------*/
#--------------------------------------------------------------------------------------
# SECTION A MODIFIER POUR L'ADAPTER A VOTRE SERVEUR
#--------------------------------------------------------------------------------------
# Ip ou Hostname du serveur SQL
define ('host', '127.0.0.1');
# Utilisateur avec lequel se connecter ( root dans la majorité des cas )
define ('user', 'root');
# Mot de passe pour l'utilisateur SQL
define ('pass', 'mot_passe_root');
/* ---------------------------------------------------------------------------------------
Note:
----
Si vous desirez utiliser les repertoires par defaut du script de sauvegarde, copiez ceci
dans un terminal ssh:
mkdir /root/dumps && mkdir /root/dumps/backups && mkdir /root/dumps/backups/hier
mkdir /root/dumps/backups/semaine-derniere && mkdir /root/dumps/backups/mois-dernier
------------------------------------------------------------------------------------------*/
# Repertoire pour la sauvegarde quotidienne
define ('last_d_dir', '/root/dumps/backups/hier');
# Repertoire pour la sauvegarde hebdomadaire
define ('last_w_dir', '/root/dumps/backups/semaine-derniere');
# Repertoire pour la sauvegarde mensuelle
define ('last_m_dir', '/root/dumps/backups/mois-dernier');
#---------------------------------------------------------------------------------------
# PLUS RIEN A MODIFIER
#---------------------------------------------------------------------------------------
define ('EOL', "\n");
$debug = false;
if (pass == 'mot_passe_root')
die('Oops, un oubli ? Il faut configurer le script de backup.');
@mysql_connect(host, user, pass)
or die('Verifier vos infos de connexion sql.');
print '--------------------------------------------------------------'.EOL;
print 'BACKUP AUTOMATIQUE'. EOL;
print '--------------------------------------------------------------'.EOL.EOL;
touch (last_d_dir.'/last_backup');
$sQr = mysql_query('SHOW DATABASES;');
$bases = array();
print 'Les bases suivantes seront sauvegardees:'.EOL.EOL;
while ($row = mysql_fetch_array($sQr))
{
$bases[] = $row[0];
print $row[0]. EOL;
}
print EOL;
mysql_close();
foreach($bases AS $base)
{
print 'Sauvegarde de '.$base. '... ';
$cmd = 'mysqldump -h '.host. ' -u '.user. ' --password=' .pass. ' ' .$base.' > ' .last_d_dir.'/'.$base.'.sql';
if ($debug)
print EOL.'debug: '.$cmd.EOL;
else
exec($cmd);
print '[ OK ]'. EOL;
}
if (time() - @filemtime(last_w_dir.'/last_backup') > 60*60*24*7)
{
print 'Le backup de la semaine est trop vieux, mise a jour... ';
$cmd = 'cp '.last_d_dir.'/* '.last_w_dir;
if ($debug)
print EOL.'debug: '.$cmd.EOL;
else
exec($cmd);
touch (last_w_dir.'/last_backup');
print '[ OK ]'. EOL.EOL;
}
if (time() - @filemtime(last_m_dir.'/last_backup') > 60*60*24*30)
{
print 'Le backup du mois est trop vieux, mise a jour... ';
$cmd = 'cp '.last_d_dir.'/* '.last_m_dir;
if ($debug)
print 'debug: '.$cmd.EOL;
else
exec($cmd);
touch (last_m_dir.'/last_backup');
print '[ OK ]'. EOL.EOL;
}
?>