Script de back up mysql automatique

snaquekiller Messages postés 13 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 29 décembre 2009 - 29 déc. 2009 à 10:40
eric59161 Messages postés 1 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 17 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;	
?>


merci d'avance.

1 réponse

eric59161 Messages postés 1 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 17 février 2010
17 févr. 2010 à 18:12
Bonsoir, comment ajouter
"la ligne suivante dans votre crontab :"

Merci d'avance pour votre réponse.

Eric Chlon
Rejoignez-nous