OVH Community, votre nouvel espace communautaire.

Sauvegarde Automatique J-1 J-7 J-30 (SQL)


NazzTazz
25/03/2008, 22h35
Ok, j'editerai le titre du sujet

MightyDucks
25/03/2008, 08h46
A ce sujet, j'ai écrit la même chose pour sauvegarder les fichiers et les transférer sur le FTP backup ovh.

Dès que je le termine le met à dispo!

NazzTazz
24/03/2008, 12h09
Oui tu as tout a fait raison

Je n'y ai pas pensé pour la simple raison que tous mes mots de passe matchent [0-9a-z], mais c'est une erreur.

MightyDucks
20/03/2008, 13h49
Vraiment bien ce script !

Petite modification à apporter tout de même :
Code PHP:
 $cmd 'mysqldump -h '.host' -u '.user' --password="' .pass'" ' .$base.' > ' .last_d_dir.'/'.$base.'.sql'
J'ai encapsulé le pass car les caractères spéciaux sont plus ou moins bien pris par le shell. ( ; , : / $ etc)

Je pense d'ailleurs que les autres champs peuvent aussi être encapsulé pour éviter tous problèmes

kitkiller
24/02/2008, 14h25
Bonjour,



Tout d'abord merci pour ton script de backup, mais j'ai un petit soucis, utilisant php 5, je ne trouve pas /usr/bin/php, dans /usr/bin il n'y a rien en rapport avec php :/ Une idée ?



Merci d'avance

NazzTazz
21/02/2008, 00h20
Bonjour.

Si ca peut servir a quelqu'un, voici un script que j'ai mis au point pour effectuer des sauvegardes regulieres de mes bases de données.

Il tient a jour 3 copies:

Hier
Semaine derniere
Mois dernier

Il est a votre disposition.

Code PHP:
#! /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(hostuserpass)
    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;
  }

?>