IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Automatiser ses sauvegardes


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 10
    Par défaut Automatiser ses sauvegardes
    Bonjour,

    Je suis néophyte en php.

    J'ai réalisé un site php avec plusieurs bases mysql.

    Actuellement pour faire mes sauvegardes, je vais dans phpmyadmin, je récupere via l'interface un zip de sauvegarde de chaque base mysql, et je recupere aussi le contenu de mon site via FTP.

    C'est assez fastidieux.

    Je cherche un moyen pour automatiser cela en php executé périodiquement avec webcron.org.

    -Comment faire en php pour sauvegarder une base mysql dans un fichier?

    -Comment faire pour récupérer une archive compressée de son espace FTP?

    Merci

  2. #2
    Membre Expert
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 291
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 291
    Par défaut
    Fais une recherche sur ce forum sur "dump". Regarde également les PHP et MySql, il me semble qu'il y a des infos là-dessus.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Par défaut
    salut bon je tes fais un script pour la sauvegarde de tout tes tables sql
    avec sauvegarde dans un dossier sur ton serveur (repertoir sql a creer) et ensuite envoi par mail de la sauvegarde ta juste a définir les variable au debut du script et colle ca dans une page execute la page et voila

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    <?php
    //sauvegarde des table sql par slyderkiller@msn.com
     
    /*
    liste des variable a remplire ci-dessous
    */
    	$dbchemin='sql.free.fr'; //emplacement de la base de données
    	$base = 'nom_base'; //nom de la base de donnée
    	$dbuser='login_base'; //login de la base de données
    	$dbpass='pass_base'; //mot de passe de la base de données
       $dbconnect=@mysql_connect($dbchemin,$dbuser,$dbpass);
     
       $dir = 'sql/'; //chemin du repertoir de sauvegarde (doit etre créé)
       $mail = 'ton_mail@free.fr'; //ton mail
     
    /*
    voila plus rien a toucher execute la page et regarde tes mail
    */
     
       function Compacter($base) { // Permet de compacter la base avant de lancer toute la procédure 
          $tables = mysql_list_tables($base); 
          while ($enr = mysql_fetch_row($tables)) 
             @mysql_query("OPTIMIZE TABLE ".$enr[0]);
        }
     
       if($connexion = $dbconnect) { // on effectue la connexion 
     
          Compacter($base); 
     
          $select_base=@mysql_select_db($base); // Selection de la base de données 
     
          // CREATION DU FICHIER 
     
          $fname = $dir."backup_".$base.".sql"; //emplacement du fichier de sauvegarde
          $f2 = fopen($fname,"w"); 
     
          fputs($f2,"# Sauvegarde de la base de données\n"); 
          fputs($f2,"# Batch par Alexis BOGEMANS - 2006\n\n"); 
          $tables = mysql_list_tables($base); 
          while ($enr = mysql_fetch_row($tables)) { 
             fputs($f2,"# Les tables traitées sont ".$enr[0].";\n"); 
          } 
          fputs($f2,"\n"); 
          $tables = mysql_list_tables($base); 
          while ($enr = mysql_fetch_row($tables)) { 
             fputs($f2,"DELETE FROM $enr[0];\n"); 
          } 
     
          $tables = mysql_list_tables($base); 
          while ($enr = mysql_fetch_row($tables)) { 
             $res = mysql_query("SELECT * FROM $enr[0]"); 
             // le nombre de champs de la table 
             $champs = mysql_num_fields($res);  
             // Pour chaque ligne 
             while($val=mysql_fetch_array($res)) { 
                $tmp = "INSERT INTO ".$enr[0]." VALUES("; 
                $c=0; 
                // Pour chaque champ 
                while($c < $champs) { 
                   // Une virgule sauf au premier 
                   if($c>0) $tmp .= ", "; 
                   // Le contenu du champ 
                   $tmp .= "'".AddSlashes($val[$c])."'"; 
                   $c++; 
                } 
                $tmp .= ");\n"; 
                // Ecrit la ligne 
                fputs($f2,$tmp); 
             } 
          } 
          fclose($f2);
     
       }
     
      //envoi par mail de la sauvegarde
    $boundary='didondinaditondelosdudosdodudundodudindon';
    //En-têtes du mail
    $headers="From: ".$mail."\r\n
    MIME-Version: 1.0\r\n
    Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n\n";
     
    //Corps du mail en commençant par le message principal
    $body="--". $boundary ."\n
    Content-Type: text/plain; charset=ISO-8859-1\r\n\n
    Voici la sauvegarde sql de ton site.\n\n";
     
    // Piece jointe
     
    $fichier=file_get_contents($fname);
    /* On utilise aussi chunk_split() qui organisera comme il faut l'encodage fait en base 64 pour se conformer aux standards */
    $fichier=chunk_split($fichier);
     
    //Ecriture de la pièce jointe
    $body = $body . "--" .$boundary. "\n".$fichier ;
     
    //Fermeture de la frontière
    $body = $body . "--" . $boundary ."--";
     
    //Envoi du mail
    mail($mail, "sauvegarde sql", $body, $headers);
     
     
       ?>

  4. #4
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Si tu est sur un dédié utilises plutot un script shell.
    Avec à l'intérieur un cp, un mysqldump, gz de tout sa.
    Et puis après tu pourrais imaginer un envoi en FTP sur un autre serveur de backup.
    Ou juste une copie sur un autre dd.

    C'est peut être possible en mutu, mais je n'ai jamais essayé.

  5. #5
    Scurz
    Invité(e)
    Par défaut
    Utilise mysqldump, c'est très simple à utiliser, regarde sur la doc de mysql, très bien expliquée.
    Si c'est un serveur sous Linux, utilises la console, bien plus rapide .
    Tu peux même y mettre un cron si tu souhaites faire une sauvegarde régulière.

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. automatisation de sauvegarde fichier journal.
    Par ylarvor dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/06/2007, 16h13
  2. automatiser la sauvegarde d'une bdd
    Par griese dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 17/07/2006, 17h23
  3. Réponses: 6
    Dernier message: 29/05/2006, 23h45
  4. automatiser les sauvegardes avec mysql administrator
    Par beckham07 dans le forum Outils
    Réponses: 1
    Dernier message: 09/03/2006, 13h58
  5. Bien faire ses sauvegardes
    Par Pigoulou dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 04/01/2005, 08h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo