snaquekiller
Messages postés13Date d'inscriptionmercredi 20 mai 2009StatutMembreDernière intervention29 décembre 2009
-
29 déc. 2009 à 10:40
eric59161
Messages postés1Date d'inscriptionmardi 13 décembre 2005StatutMembreDernière intervention17 février 2010
-
17 févr. 2010 à 18:12
Bonjours j'ai fait un script en shell(du php a l'intérieur) sachant qu'il n'y a pas de code sources pour shell je le poste ici. Mais j'aurai besoin d'avis pour etre sur qu'il marche et que tout est bien :).
#! /usr/bin/php
<?php
/*------------------------------------------------------------
Backup automatique de toutes les bases de donnees dun serveur.
--------------------------------------------------------------
Puis, ajouter la ligne suivante dans votre crontab:
0 3 * * * root /chemin/vers/sql_backups >/dev/null 2>&1
------------------------------------------------------------*/
#--------------------------------------------------------------------------------------
# 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', 'password');
# Si on zip les base de données.
$zipage = 0;# mettre 0 pour ne pas compresser, 1 pour compresser.
/* ---------------------------------------------------------------------------------------
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 hebdomadaire
define ('last_w_dir', '/root/dumps/backups/semaine-derniere');
# Repertoire pour la sauvegarde 2fois par semaine
define ('last_2_dir', '/root/dumps/backups/deux-semaine');
# 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('Vous avez oublier de configurer le script de back-up.');
@mysql_connect(host, user, pass)
or die('Verifier vos infos de connexion sql, elles sont surement éronnées');
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();
//Sauvegarde des bases de donnees et mise dans le dossier journalier
foreach($bases AS $base)
{
print 'Sauvegarde de '.$base. '... ';
$cmd = 'mysqldump -h '.host. ' -u '.user. ' --password=' .pass. ' ' .$base.' > ' .last_w_dir .'/'.$base.'.sql';
$zip = 'tar jcf '.last_w_dir.'/'.$base_.'.sql.tar.bz2 ' .last_w_dir.'/'.$base.'.sql';
$supr = 'rm ' .last_w_dir .'/'.$base_'.sql';
if ($debug)
print EOL.'debug: '.$cmd.EOL;
else
exec($cmd);
if ($zipage ==1)
{
exec($zip);
exec($supr);
}
print $(date)': [ OK ]'. EOL;
}
// mise a jours du mois
print 'Le backup du mois est trop vieux, mise a jour... ';
$cmd = 'cp '.last_2_dir.'/* '.last_m_dir;
if ($debug)
print 'debug: '.$cmd.EOL;
else
exec($cmd);
touch (last_m_dir.'/last_backup');
print $(date)': [ OK ]'. EOL.EOL;
// mise a jours des 2semaines
print 'Le backup des 2 semaines est trop vieux, mise a jour... ';
$cmd = 'cp '.last_w_dir.'/* '.last_2_dir;
if ($debug)
print EOL.'debug: '.$cmd.EOL;
else
exec($cmd);
touch (last_2_dir.'/last_backup');
print $(date)': [ OK ]'. EOL.EOL;
?>