Sauvegarde batabases via mysqldump impossible (1045)

#1
Bonjour,

Je souhaite sauvegarder une base de données mysql de mon hébergement via cette commande CRON toute simple :
Code:
mysqldump --opt -u USER -pPASSWORD BASE > /home/DOMAINE/public_html/Backup/data.sql
Seulement j'obtiens cette erreur :
mysqldump: Got error: 1045: Access denied for user 'USER'@'localhost' (using password: YES) when trying to connect
Donc je suis bien identifié mais je n'ai pas les droits nécessaires pour faire la sauvegarde. J'ai essayé avec le couple user/mdp du cpanel et celui défini pour la base de données. Résultat identique dans les deux cas alors que j'ai bien donné tous les droits possible à l'utilisateur.

Y'a-t-il une solution ?
Merci d'avance :)
 
#5
Merci de ton aide David77.
En effet, travaillant avec CakpePHP, je cherchais un plugin de sauvegarde me convenant. Puis je suis tombé sur mysqldump, etc.

J'ai utilisé ton premier lien en le retravaillant à ma façon. Ça marche et ça fait ce qu'on lui demande. Sauvegarde de database simplement.

Merci à vous deux pour votre aide. :)
 
#8
Bien sûr, voici donc ce que j'ai fait pour mettre en place une sauvegarde de mes bases de données de façon automatique :

Etape 1 : Création du script dtbBackup.php dans public_html/Backup par exemple :
PHP:
<?php  

  /* HMS_BACKUP.PHP 
     Holomarcus MySQL Database Backup    
     
     Version 1.0 - August 15th, 2003 
     Changelog: see bottom of script. 
      
     (c)2003 Holomarcus (http://www.holomarcus.nl)
     Modified & Distributed by Custom Request (http://customrequest.com)  
     You can distribute this script and use it freely as 
     long as this header is not edited in this script. 
      
     With HMS_BACKUP you can make a backup of your MySQL-database. 
     This backup can be sent by e-mail or uploaded through FTP. 
      
     This script doesn't need privileges to execute *nix commands. 
     It's 100% pure PHP. 
      
     The script needs write-privileges on the directory it resides in! 
      
     Change the necessary settings below... 
  */ 

  $dbhost        = 'localhost';  // hostname usually localhost 
  $dbuser        = 'user';      // username for MySQL database 
  $dbpass        = 'pass';    // Password for MySQL database 
  $dbnames       = array('dtb_1', 'dtb_2', 'dtb_3);      // MySQL Databases Name 

  $use_gzip      = 'yes';        // Change to 'no' if you don't want files gzipped 

  $remove_file   = 'no';        // Change to 'yes' if you want to delete the backup file from your account after sending. Pick yes to save server space 

  $use_email     = 'no';          // Change to 'yes' if you want the backup to be sent through email. If you pick yes, fill out the next 3 lines 
  $send_to       = '[email protected]';   // email address for backup file
  $send_from     = '[email protected]'; // email address sending the email, doesn't matter can be same as above
  $subject       = "MySQL Database ($dbname) Backup - " . date("j F Y"); // this is the subject of the email being sent to you

  $use_ftp       = 'no'; // Change to 'yes' if you want the backup file uploaded to a remote FTP server? If you pick yes, you must fill out the next 4 lines
  $ftp_server    = 'ftp.yourdomain.com';   // FTP address
  $ftp_user_name = 'user';   // FTP username
  $ftp_user_pass = 'xxxxxxxx';   // FTP password
  $ftp_path      = "/db_backups";  // Path to upload on FTP server

  $echo_status = 'yes';   // Change to 'no' if you want the script to work silently (nothing will be sent to the screen)


$path = make_dir(); 

foreach ($dbnames as $dbname) 
{
  $db = mysql_connect("$dbhost","$dbuser","$dbpass"); 
    mysql_select_db("$dbname",$db); 
   
  if ($echo_status == 'yes') { 
    print "MySQL Database Backup...";
    print "Starting Process...";
    print "Backup dumpfile in progress..."; 
  } 

  $result = false;
  $result = mysql_query("show tables from $dbname"); 

  $newfile = '';

  while (list($table) = mysql_fetch_row($result)) { 
    $newfile .= get_def($table); 
    $newfile .= "\n\n"; 
    $newfile .= get_content($table); 
    $newfile .= "\n\n"; 
    $i++; 
    if ($echo_status == 'yes') { 
      print "Dumped table $table..."; 
    } 
  } 

    $file_name = $dbname . "-" . date("Ymd-Hi") . ".sql"; 
    $file_path = $path . $file_name; 

  if ($use_gzip == "yes") { 
    $file_name .= ".gz"; 
    $file_path .= ".gz"; 
    $zp = gzopen($file_path, "wb9"); 
    gzwrite($zp,$newfile); 
    gzclose($zp); 

    if ($echo_status == 'yes') { 
      print "Gzip-file is created..."; 
    } 
  } else { 
    $fp = fopen($file_path, "w"); 
    fwrite($fp, $newfile); 
    fclose($fp); 

    if ($echo_status == 'yes') { 
      print "<br>SQL-file is created...<br>"; 
    } 
  } 


/* Uncomment this to use email  */

  // if ($use_email == 'yes') { 
  //   $fileatt_type = filetype($file_path); 
   
  //   $headers = "From: $send_from"; 
   
  //   // Read the file to be attached ('rb' = read binary) 
  //   $fp = fopen($file_path,'rb'); 
  //   $data = fread($fp,filesize($file_path)); 
  //   fclose($fp); 
   
  //   // Generate a boundary string 
  //   $semi_rand = md5(time()); 
  //   $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
   
  //   // Add the headers for a file attachment 
  //   $headers .= "\nMIME-Version: 1.0\n" ."Content-Type: multipart/mixed;\n" ." boundary=\"{$mime_boundary}\""; 
   
  //   // Add a multipart boundary above the plain message 
  //   $message = "This is a multi-part message in MIME format.\n\n" ."--{$mime_boundary}\n" ."Content-Type: text/plain; charset=\"iso-8859-1\"\n" ."Content-Transfer-Encoding: 7bit\n\n" . 
  //   $message . "\n\n"; 
   
  //   // Base64 encode the file data 
  //   $data = chunk_split(base64_encode($data)); 
   
  //   // Add file attachment to the message 
  //   $message .= "--{$mime_boundary}\n" ."Content-Type: {$fileatt_type};\n" ." name=\"{$file_name}\"\n" ."Content-Disposition: attachment;\n" ." filename=\"{$file_name}\"\n" ."Content-Transfer-Encoding: base64\n\n" . 
  //   $data . "\n\n" ."--{$mime_boundary}--\n"; 
   
  //   // Send the message 
  //   $ok = @mail($send_to, $subject, $message, $headers); 
     
  //   if ($echo_status == 'yes') { 
  //     print "<br>Mail is sent...<br>"; 
  //   } 
  // } 
   

/* Uncomment this to use ftp  */

  // if ($use_ftp == 'yes') { 
  //   if ($use_gzip == 'yes') { 
  //     $mode = FTP_BINARY; 
  //   } else { 
  //     $mode = FTP_ASCII; 
  //   } 
  //   $ftp_id       = ftp_connect($ftp_server); 
  //   $login_result = ftp_login($ftp_id, $ftp_user_name, $ftp_user_pass); 
  //   $upload       = ftp_put($ftp_id, $ftp_path . $file_name, $file_path, $mode); 
  //   ftp_close($ftp_id); 

  //   if ($echo_status == 'yes') { 
  //     print "<br>Backup is uploaded to FTP server<br>"; 
  //   } 
  // } 

  if ($remove_file == "yes") { 
    unlink($file_name); 
    if ($echo_status == 'yes') { 
      print "<br>File is deleted...<br>"; 
    } 
  } 

  if ($echo_status == 'yes') { 
    print "<br>Back up done!<p>";
    print "</body></html>";
  } 
}
  
  //You can send a email alert 
  mail('[email protected]', 'Subject', 'Message'); 

  function make_dir() { 
    $page = split("/", getenv('SCRIPT_NAME')); 
    $n = count($page)-1; 
    $page = $page[$n]; 
    $page = split("\.", $page, 2); 
    $extension = $page[1]; 
    $page = $page[0]; 
    $script     = "$page.$extension"; 
    $base_url     = "http://".$_SERVER['SERVER_NAME']; 
    $directory     = $_SERVER['PHP_SELF']; 
    $url_base = "$base_url$directory"; 
    $url_base = ereg_replace("$script", '', "$_SERVER[PATH_TRANSLATED]"); 

    $path = $url_base; 

    return $path; 
  } 

  function get_def($table) { 
    $def = ""; 
    $def .= "DROP TABLE IF EXISTS $table;\n"; 
    $def .= "CREATE TABLE $table (\n"; 
    $result = mysql_query("SHOW FIELDS FROM $table") or die("Table $table not existing in database"); 
    while($row = mysql_fetch_array($result)) { 
      $def .= "    $row[Field] $row[Type]"; 
      if ($row["Default"] != "") $def .= " DEFAULT '$row[Default]'"; 
      if ($row["Null"] != "YES") $def .= " NOT NULL"; 
      if ($row[Extra] != "") $def .= " $row[Extra]"; 
      $def .= ",\n"; 
    } 
    $def = ereg_replace(",\n$","", $def); 
    $result = mysql_query("SHOW KEYS FROM $table"); 
    while($row = mysql_fetch_array($result)) { 
      $kname=$row[Key_name]; 
      if(($kname != "PRIMARY") && ($row[Non_unique] == 0)) $kname="UNIQUE|$kname"; 
      if(!isset($index[$kname])) $index[$kname] = array(); 
      $index[$kname][] = $row[Column_name]; 
    } 
    while(list($x, $columns) = @each($index)) { 
      $def .= ",\n"; 
      if($x == "PRIMARY") $def .= "   PRIMARY KEY (" . implode($columns, ", ") . ")"; 
      else if (substr($x,0,6) == "UNIQUE") $def .= "   UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")"; 
      else $def .= "   KEY $x (" . implode($columns, ", ") . ")"; 
    } 
    $def .= "\n);"; 
    return (stripslashes($def)); 
  } 

  function get_content($table) { 
    $content=""; 
    $result = mysql_query("SELECT * FROM $table"); 
    while($row = mysql_fetch_row($result)) { 
      $insert = "INSERT INTO $table VALUES ("; 
      for($j=0; $j<mysql_num_fields($result);$j++) { 
        if(!isset($row[$j])) $insert .= "NULL,"; 
        else if($row[$j] != "") $insert .= "'".addslashes($row[$j])."',"; 
        else $insert .= "'',"; 
      } 
      $insert = ereg_replace(",$","",$insert); 
      $insert .= ");\n"; 
      $content .= $insert; 
    } 
    return $content; 
  }
Dans cet état, le script ne fait que créer des fichiers sql dans le dossier public_html/Backup. A chacun ensuite de déplacer les fichier en lieu sûr.
Je précise que je n'ai pas testé les parties commentées (email et ftp). J'ai par contre rajouté le fait de pouvoir sauvegarder plusieurs bases à la fois ($dtbnames = array() et foreach()).

Etape 2 : Ajout de la commande Cron
Dans le cPanel, trouver la section Tâches Cron. Puis ajouter une commande du type :
Code:
00	3	*	*	6	php -q /home/USER/public_html/Backup/dtbBackup.php >/dev/null 2>&1
Ici, exécution de la commande tous les samedis (6) à 3 heures du matin. Notez l'utilisation de ">/dev/null 2>&1" pour éviter de recevoir un mail contenant le log des actions effectuées.

Voilà, ça dépanne bien :)
 
#10
Autre script

Perso, je fais un backup des trois éléments importants (public_html, mails et bases de données)

Pour ce faire, j'ai créé directement à la racine (/home/(user)/ et non /home/(user)/public_html) l'arborescence suivante :

/home/(user)
---/backups
--------/files
--------/bdd
--------/mail

Puis j'ai créé un script appelé backup.sh dans /home/(user)/backups :

Code:
#!/bin/sh

USER="identifiant cpanel"

DBADMIN="nom d'un utilisateur avec tous les droits sur toutes les bases (sans le user_)"
DBPW="mot de passe de cet utilisateur"

DB1="nom de la première base (sans le user_)"
DB2="nom de la deuxième base (sans le user_)"

DATE=`date -I`

mysqldump -u ${USER}_${DBADMIN} -p$DBPW ${USER}_${DB1} | gzip > /home/$USER/backups/bdd/bddbackup_${DB1}_${DATE}.sql.gz
mysqldump -u ${USER}_${DBADMIN} -p$DBPW ${USER}_${DB2} | gzip > /home/$USER/backups/bdd/bddbackup_${DB2}_${DATE}.sql.gz

tar czf /home/$USER/backups/files/sitebackup_$DATE.tar.gz -C / home/$USER/public_html ;

tar czf /home/$USER/backups/mail/mailbackup_$DATE.tar.gz -C / home/$USER/mail ;

find /home/$USER/backups/bdd/bdd* -mtime +7 -exec rm {} \;
find /home/$USER/backups/files/site* -mtime +7 -exec rm {} \;
find /home/$USER/backups/mail/mail* -mtime +7 -exec rm {} \;
C'est un exemple pour 2 bdd, il suffit d'enlever ou ajouter des lignes, sur le même modèle pour plus.

Il faut bien sûr rendre backup.sh executable (changement des droits de 644 à 744).

Puis une tâche cron (dans mon cas une fois par jour) avec la commande : /home/(user)/backups/backup.sh

Les trois dernières lignes du script se chargent de supprimer les fichiers de plus de 7 jours (dans cet exemple)

Je ne sais pas si ça fonctionne pour n'importe quel cpanel mais chez moi, ça tourne bien.

EDIT : il faut laisser (je crois) les "" pour entrer les paramètres en début de script
 
Dernière édition:
#14
Bonjour,

Comme je te l'avais dit sur l'autre fil, j'ai essayé d'adapter ton script pour ne sauver (dans un premier temps) que 2 bdd.

Outre le paramétrage du début j'ai donc conservé ça :

Code:
DATE=`date -I`

mysqldump -u ${USER}_${DBADMIN} -p$DBPW ${USER}_${DB1} | gzip > /home/$USER/backups/bdd/bddbackup_${DB1}_${DATE}.sql.gz
mysqldump -u ${USER}_${DBADMIN} -p$DBPW ${USER}_${DB2} | gzip > /home/$USER/backups/bdd/bddbackup_${DB2}_${DATE}.sql.gz

find /home/$USER/backups/bdd/bdd* -mtime +7 -exec rm {} \;
Est-ce que ça te parait correct ? (je sais, je suis nul en scripts :( )

Par contre dans la commande cron, je ne saisis pas trop s'il faut saisir

/backups/backup.sh
ou si il faut obligatoirement saisir le /home/(user) avant sachant que je ne vois dans filezilla que /backups directement sour le / ?

Dernière question de nul. Comment peut on tester la commande sans passer par cron pour vérifier que ça fonctionne ?

Désolé pour ces questions basiques et merci pour ton aide.

Jean-Philippe
 
#15
Bonjour,

Pas de problème, il n'y a pas de question stupide. En même temps, ce script est largement inspiré de ce qu'on peut trouver sur le web, que j'ai adapté et corrigé.

Ce que tu donnes me parait correct. Par contre si tu ne prends que les bdd, tu n'est pas sûr d'avoir une synchro avec les fichiers du site. Autant, les mails, tu peux les virer, mais les fichiers, je les aurais gardés. D'autant plus que ça ne te fait qu'un unique fichier zip, BEAUCOUP plus rapide à rapatrier qu'une arborescence. Depuis que j'utilise des fichiers compressés, je n'utilise plus du tout les softs ftp comme filezilla, je ne passe plus que par le gestionnaire de fichiers de cPanel, c'est largement suffisant.

Quant à la dernière ligne, tout dépend de ce que tu veux faire. Je n'ai plus en tête l'utilisation que tu faisais de l'ex sauvegarde cPanel mais si tu rapatries manuellement ces fichiers, chaque jour, tu peux t'abstenir de conserver 7 jours complets de sauvegarde.

Pour cron, il faut tout saisir : /home/(user)/backups/backup.sh (sans oublier de passer les droits à 744, il doit être exécutable).

Pour l'essayer, certains sur ce forum seront certainement plus doués que moi pour le faire plus simplement que je ne le fais, mais comme on est en dehors de public_html, inutile d'essayer de l'appeler directement par le navigateur, donc je vois deux solutions :
- soit tu es sûr de l'heure du serveur et tu déclenches une tâche à une heure précise
- ou ce que je fais (mais ce n'est pas très réglo et il ne faut surtout pas oublié de l'arrêter) : je demande une tâche toutes les minutes pour essayer, dès qu'un fichier arrive dans le répertoire, j'annule la tâche cron, je vérifie et si ça roule, je paramètre un lancement par jour
 
#16
Merci beaucoup pour toutes tes explications et ta patience.

J'ai testé avec le script que je t'ai soumis et avec la commande complète /home/(user)... parce qu'en rapatriant un fichier avec r1soft on voit bien que c'est cette arborescence qu'il voit.
Et donc ça a marché le tonnerre de dieu. J'ai essayé avec deux bases en programmant un déclenchement toutes les heures et en fixant la date dans les 10mn suivantes. C'est comme ça que j'ai vu que ça marchait.

Maintenant je fais le test avec toutes mes bdd, ce qui pour moi est un minimum.
Dans une premier temps, je vais programmer le cron juste avant la sauvegarde r1soft, de telle façon que r1soft sauve également le backup des bdd puisqu'il sauve tout le home.

Mais sur le fond, tu as raison. Si ça marche et tant que PH ne met pas à disposition un r1soft qui permet de récupérer des fichiers et des bdd synchro, je vais également sauver les fichiers. Mais je ne veux pas le faire maintenant car on est en pleine journée et j'ai peur que ça charge un peu le serveur.

Donc, plan d'attaque.
1- vérifier si je peux backuper toutes mes bdd et le temps que ça prend
2- programmer le cron avant le lancement de r1soft cette nuit en fonction du temps que ça a pris en 1
3- tester comme ça ce soir.

Si tout est ok demain matin, j'ajouterai la sauvegarde du public_html et je ferai tourner le tout dans la nuit, peut-être aussi avant le r1soft (mais c'est pas sur) de façon à faire ceinture et bretelles : mon backup + mon backup dans r1soft.

Il reste juste un point. J'ai vu qu'on pouvait être prévenu par mél que la tâche cron était lancée, j'ai donné mon adresse mais je ne reçois rien. Es-tu dans le même cas ?

Jean-Philippe
 
#17
Merci beaucoup pour toutes tes explications et ta patience.

Il reste juste un point. J'ai vu qu'on pouvait être prévenu par mél que la tâche cron était lancée, j'ai donné mon adresse mais je ne reçois rien. Es-tu dans le même cas ?

Jean-Philippe
Oui, j'ai remarqué la même chose. En fait, je n'ai reçu des mails que quand je m'étais planté dans les paramètres des bdd (mauvais noms ou mauvais mot de passe) donc, ne rien recevoir, c'est bon signe :)
 
#19
Cette méthode fonctionne-t-elle sur un mutualisé ?

J'ai encore la "chance" d'avoir le backup du cPnael là ou je suis mais je compte changer de serveur pour venir sur un français (toujours chez PH), or cette fonction n'est pas activée et avec R1 les BD ne sont pas accessibles.

Donc je compte utiliser ce script...

Est-il moins gourmand que celui de cPanel ?
 
#20
Salut David,

Tu es exactement dans le même cas que moi. J'étais avec un Performance mutualisé à Montréal avec cette sauvegarde très pratique par cpanel et j'ai cru naïvement retrouver la même chose à Paris. Fatal error. Tu as peut-être vu le sujet que j'ai créé et qui raconte mes aventures. Régression depuis la migation.

Je teste le script de netpresence qui marche bien avec les bdd. Cette nuit je vais tester la sauvegarde bdd+fichier. On verra. Quant à la charge ça dépend sûrement de ce que tu héberges. Mais de toute façon, la situation est simple. A l'heure actuelle PH ne propose pas de possibilité de sauvegarde synchro bdd+fichiers que tu puisses rapatrier en local tant qu'ils n'ont pas implémenté la version de r1soft qui le permet. Donc, l'alternative c'est soit que tu laisses tout chez eux en te disant que tu demanderas une restauration en cas de pépin et tu renonces à un backup local fiable, soit que tu utilises un script en cron pour te débrouiller tout seul.

Cela dit, je peux te confirmer que ça va beaucoup plus vite à Paris qu'à Montréal. C'est vraiment dommage que cette histoire de sauvegarde gâche une partie du paysage.
 
Dernière édition par un modérateur:
#21
Oui j'avais suivi cela avec intérét ;)

Monscript actuel (utilisant la fonction du cPanel) va plus loin en uploadant chez moi la sauvegarde, chose que je ne pourrait plus faire avec ce script malheureusement :(

Mais se dire que je pourrais toujours retrouver une sauvegarde "synchrne" fichiers et bases de données c'est un soulagement.

Merci pour les résultats futurs de tes tests ;)

Tu es sur un mutualisé également ?
Car j'ai la crainte que ça ne puisse pas marcher sur un mutualisé en fait...
 
#22
Bonjour David77

Il y a peut-être une possibilité d'uploader les fichiers en local, mais là, ça dépasse mes compétences :) (et je ne sais pas si c'est faisable).

Je ne peux pas dire si c'est moins ou plus gourmand que la fonction native, mais j'ai envie de dire, le problème n'est plus là ...

En tout cas, je suis sur du mutualisé revendeur et ça marche, mais je ne suis plus chez PH. Le script tourne actuellement sur 4 sites sans problèmes. J-Philippe pourra te préciser ce point pour PH.
 
#23
Oui, je suis en mutualisé, sur un Hybride Multi.

Ca a tourné pour les bdd cette nuit à 1h50 sachant que chez moi le backup r1soft tourne à 2h (je ne sais pas si c'est pareil pour tout le monde).
Donc, ce matin, j'avais le backup des bdd de 1h50 dans le backup r1soft de 2h. C'est déja bien comme ça puisque ça fait un petit décalage de 10mn, d'ailleurs j'aurais pu le mettre à 1h55, ça serait aussi passé avec de la marge.

Ce matin, vers 8h30, j'ai quand même tenté la sauvegarde de la bdd et des fichiers. Ca a marché au poil. Pas d'alerte de charge. Sauvegarde rapide vu la taille de mes fichiers qui ne sont pas si gros que ça d'ailleurs.

Donc, comme prévu, j'ai programmé la crontab pour lancer le script toutes les nuits. Par contre je pense que je vais modifier le script pour ne garder que les 5 dernières sauvegardes, ça devrait me suffire (mais d'un autre côté, pourquoi se compliquer la vie ? :) )

Donc, je ne peux que recommander le script de netpresence qui est à la fois simple (même moi j'ai compris ce qu'il fait :eek:) , et efficace. Et remercier netpresence pour son aide.
 
Dernière édition:
#24
Juste un mot pour ceux qui sont en mutualisé (en tout cas c'est mon cas avec un hybride multi), on ne peut pas faire la sauvegarde des mails en utilisant le script, le répertoire home/$USER/mail n'existe pas.
Le reste marche sans problème.

Et en prime je confirme qu'on ne reçoit de message à l'adresse indiquée dans "Adresse électronique Cron" qui s'il y a eu plantage. Je viens de tester avec le mail :). Mais en fin de compte je trouve ça pas mal. Ca évite d'avoir des messages qui disent ok et ça permet d'attirer l'attention uniquement quand il le faut.

Donc tout baigne.

Edit : va falloir que je passe chez l'ophtalmo. Le répertoire mail n’existait pas dans filezilla, j'ai eu un message d'erreur comme je le raconte au dessus. Et maintenant dans filezilla, je le vois. Ca doit être un script magique :) Mais je ne comprends pas.

Edit2 : pour éviter les risques, j'ai fait un second script backupmel.sh qui ne reprend que la fonction de sauvegarde des messages. Et là ça marche. On dirait qu'il fallait lancer une première fois pour faire apparaître le répertoire. Bref, j'ai donc créé une nouvelle tâche cron que j'ai programmée à une autre heure que celle des bdd et des fichiers puisque là je n'ai pas besoin de synchro.

Résultat des courses cette nuit. Si ça tourne bien, je n'y touche plus ... jusqu'à la prochaine ;)
 
Dernière édition:
#26
C'est étrange ce que tu dis pour le répertoire mail car je le vois à la racine de mon FTP, et il y a toujours été :p

En tout cas merci pour ce retour, je pense l'essayer dans les prochains jours :D
 
#27
Franchement je ne sais plus. Quand j'ai eu le message d'erreur de la crontab, j'ai regardé et je ne l'ai pas vu.
Mais bon, si ça se fait je n'étais pas réveillé. En tout cas du moment que tu le vois, il n'y a pas de raison que ça ne marche pas.
 
#28
Et bien test lancé :eek:

Backup bases de données : OK
Backup "public_html" : EN COURS
Backup "mail" : VIDE

Je vais attendre voir si des fois ça ne va pas se lancer à la fin de la commande pour le "public_html"...

Je viens de regarder en vitesse si aprés on pouvait faire des transfert et apparement il existerait des méthodes mais j'avoue que je ne comprends pas tout.
Pour bien le but serait de synchroniser le contenu du dossier "backup" (sous-répertoire et fichiers) avec un dossier local...

J'ai trouvé ça sous windows : Windows batch Automatiser le transfert par FTP - Le blog du Grouik!

Au pire il y aurait ça : Télécharger SyncBackSE - SyncBack Gratuit : Réalisez vos sauvegardes et synchronisations de répert
 
#29
Moi, la récupération à la main des sauvegardes me va bien.
Comme quoi chacun a des besoins différents.

Bonne continuation (ta sauvegarde doit être terminée maintenant)
 
#30
Bah en fait je suis pas toujours devant mon PC, et comme je me suis fait un petit FTP pour ça le rapatriement automatique est un gros plus, surtout en cas d'oubli ou plantage serveur (comme j'ai déjà eu ailleurs)

Pour la sauvegarde oui ça a marché sauf pour les mails.
J'ai testé juste ça et ça a fonctionné.

Je verrai demain si tout à fonctionné ou pas, sinon je décomposerai aussi ;)
 
#31
Bon alors dans l'ordre des taches dans le fichier backup.sh, j'ai mis la compression des emails avant la compression de "public_html" et ça a fonctionné à priori.

La je viens d'installer Télécharger SyncBackSE - SyncBack Gratuit : Réalisez vos sauvegardes et synchronisations de répert sur mon PC.
La configuration se fait très rapidement et pas besoin de FTP sur son PC.
J'ai opté pour une synchronisation de type miroir serveur->PC, comme ça les sauvegardes se mettront à jour sur le PC et y seront supprimées dés qu'elles le seront sur le serveur.

Plus besoin de les télécharger 1 par 1 chaque jour, surtout que le logiciel intègre un planificateur de tache que l'on peut régler comme on le souhaite.

Et franchement ce logiciel est super pratique et relativement simple à configurer (je n'ai regardé que les options basiques car elles me suffisent)
Je vais tester et je vous dirai ce que ça vaut :D
 
#32
Tu es tentant avec cette histoire de SyncBack. J'ai donc jeté un oeil. Pour moi c'est fichu car c'est un outil windows (sauf erreur) et ça fait un bail que je n'ai plus de windows sauf sur un portable en dépannage pour des gadgets qui ne tournent qu'avec cet OS.

Sinon, cette nuit les deux scripts ont tourné nickel, méls d'un côté et fichiers+bdd de l'autre. I'm happy... En fin de compte je trouve que c'est même pas mal comme ça puisque la charge est répartie en deux fois.
 
#33
Bon alors dans l'ordre des taches dans le fichier backup.sh, j'ai mis la compression des emails avant la compression de "public_html" et ça a fonctionné à priori.
Tu m'as mis un énorme doute avec cette histoire de mail :) Bon, j'ai vérifié les sauvegardes de tous les comptes que je gère et pas de soucis, tout dort au chaud, même sans inversion de ligne :)

C'est vrai que c'est intéressant cette histoire de synchro automatique mais même souci, ça n'existe pas pour Mac :-/
 
#34
C'est d'autant plus dommage que ce genre d'outil serait bien pratique pour dupliquer sur un NAS local et donc avoir un site de repli immédiatement disponible.
Mais ça viendra peut-être un jour.
 
#35
Et bien c'est là mon but, pouvoir remettre un site fonctionnel en cas de gros pépin à l'aide d'un backup en local.

Je ne doute pas de PH, mais ayant eu de mauvaises expériences je préfére ne plus y etre confronté...

Avec mon script initiale de backup complet avec la fonction du cPanel cela l'uploadé sur un FTP perso chez moi.
Au début sur une vielle bécane avec Filezilla Server, puis sur un NAS de mon réseau.

Cela est vraiment trés pratique.

Mais bon comme mon objectif est de partir sur un serveur français de PH, il faut que je trouve une parade à ce backup de cPanel d'où ce script.

Pour le moment la synchro avec SyncBack serait une solution en local mais effectivement pas possible avec un NAS.
Du coup j'ai du dépoussiérer le vieux pc lol

Mais je reste persuadé qu'il doit être possible de le faire en PHP cette syncro et donc vers un NAS local.

Cependant mes connaissances ne sont pas du tout satisfaisante pour ça :(


D'ailleurs est-ce qu'une personne de PH pourrait nous confirmer que cette méthode utilisée pour faire des sauvegardes consomme moins de ressources que la fonction sauvegarde complète du cPanel ?
Parce que si c'est le cas il suffirait de trouver comment synchroniser en local et on aurait trouvé une alternative à la fonction du cPanel...
(Pour celles et ceux qui comme moi ont pour principe de ne pas avoir tous les oeufs dans le même panier, donc ici utiliser que la sauvegarde de R1Soft)
 

pierre_kuhn

Active Member
#36
Bonjour

Faut travailler sur rsync ;)
Mais R1soft a un backup de tout les sites donc je pense que ça dois suffire sinon pour quoi tu as pas 2 pc identique chez toi ? deux FAI ? au cas ou ....

Oui je colle bien
 
#37
J'ai 2 tours et 2 PC portables au cas où justement....
Pour le FAI j'ai pu m'arranger avec des voisins (chez des FAI différents) pour me connecter à leur wifi en cas de problème.

Et oui je n'aime pas être pris au dépourvu...
 
#38
Bonjour

Faut travailler sur rsync ;)
Mais R1soft a un backup de tout les sites donc je pense que ça dois suffire sinon pour quoi tu as pas 2 pc identique chez toi ? deux FAI ? au cas ou ....

Oui je colle bien
R1soft ne sauvegarde pas les BDD, c'est d'ailleurs le point de départ de cette discussion.

Pourquoi faire une sauvegarde d'ailleurs ? Ça ne sert à rien d'avoir des fichiers en double ;-)

Et puis pourquoi pas 2 .fr , au cas où l'hébergeur déconne ?

Mwwwwaaa je déconne ! (oups, je sens que ça ne doit pas faire rire ...)
 
#39
Et puis pourquoi pas 2 .fr , au cas où l'hébergeur déconne ?
Je n'y avais pas pensé ! C'est vrai ça. Moi, je pense que je vais acheter une seconde maison dès fois que celle-ci prendrait feu. Et puis tu as raison : pourquoi des sauvegardes? On se demande même pourquoi PH nous a mis à dispo R1SOFT. Je dirais même Mais pourquoi r1soft existe ?

Bon allez, blagues à part, on est quelques uns à être monomaniaques avec la sécurité de nos sites. Faut croire que l'air du Québec rend plus zen ;)
 
#40
Si vous pensez qu'avoir une sauvegarde sur le serveur et en local est de trop... Soit...

Mais si R1soft plante et que vous en avez besoin....

Et pour les ndd, peut etre pas 2 ".fr" mais un ".fr" et un ".com", regardez le problème de certains avec leur ".fr"....

Enfin bref, je vais en arrêter là avec cette discution :-/
 
Dernière édition:
#41
Si vous pensez qu'avoir une sauvegarde sur le serveur et en local est de trop... Soit...

Mais si R1soft plante et que vous en avez besoin....

Enfin bref, je vais en arrêter là avec cette discution :-/
Eh ! C'est de l'humour ! Tu prêches un convaincu (deux, même)

On est juste en mode satyrique sur l'intervention de pierre_kuhn et la solution miracle R1soft.
 
#42
Et en plus à mon domicile j'ai un NAS avec 2 comptes pour sauvegarder les données de mon PC portable et de ma tour (chacun me sert à des fonctions différentes).
Comme ça si l'un des 2 lache je prend celui de secours et rapatrie les sauvegardes...

Oui je suis peut être un manique de la sauvegarde, un "Monk like", mais je l'assume totalement car un support de stockage n'est pas increvable et personne n'est à l'abris d'une défaillance...

Que le webmaster qui n'a JAMAIS perdu de données (fichiers et/ou bases de données) à cause d'une confiance aveugle envers son hébergeur me jette la première pierre.

Eh ! C'est de l'humour ! Tu prêches un convaincu (deux, même)

On est juste en mode satyrique sur l'intervention de pierre_kuhn et la solution miracle R1soft.
Oui je m'en doute...
 
Dernière édition:
#45
Je dois partir en weekend mais avant, comme je ne dois pas être le seul à chercher une idée pour rapatrier les backup fait avec le script de netpresence en local, j'ai pu trouver quelques pistes :

J'en ai testé aucune pour le moment, mais aprés une lecture rapide je dirai que le 1er lien semble être la solution recherchée... Reste à savoir comment le mettre en place et le tester...

Si quelqu'un a un peu de temps ce weekend :rolleyes:

Bon weekend à vous ;)
 
#46
Salut à tous,

Me voila de retour ;)

Au bout d'une dizaine de jours, tout baigne au niveau sauvegardes. Un vrai bonheur.

Par contre j'ai un problème avec le nettoyage. J'ai fait un pur copier/coller du code de netpresence mais je retrouve des sauvegardes de plus de 7 jours. Par bien grave mais je trouve curieux que tout fonctionne normalement sauf ça.

Voila le code
Code:
find /home/$USER/backups/bdd/bdd* -mtime +7 -exec rm {} \;
find /home/$USER/backups/files/site* -mtime +7 -exec rm {} \;
C'est bien mtime qu'il faut utiliser, pas mktime ?
 
#47
Ah oui tiens je n'avais pas fait attention à ça...
Demain ce sera le jour 8, donc il devrait effacer des sauvegardes aussi chez moi... Ca répondra à ta question... Ou pas lol

Mais c'est vrai que c'est étrange cette légère différence dans le code mais c'est peut être normal
 
#48
Salut à tous,

Me voila de retour ;)

Au bout d'une dizaine de jours, tout baigne au niveau sauvegardes. Un vrai bonheur.

Par contre j'ai un problème avec le nettoyage. J'ai fait un pur copier/coller du code de netpresence mais je retrouve des sauvegardes de plus de 7 jours. Par bien grave mais je trouve curieux que tout fonctionne normalement sauf ça.

Voila le code
Code:
find /home/$USER/backups/bdd/bdd* -mtime +7 -exec rm {} \;
find /home/$USER/backups/files/site* -mtime +7 -exec rm {} \;
C'est bien mtime qu'il faut utiliser, pas mktime ?
Salut à vous,

Je viens de faire un tour sur mon cPanel, voilà le bout de code que j'ai :

Code:
find /home/$USER/backups/bdd/bdd* -mtime +7 -exec rm {} \;
find /home/$USER/backups/files/site* -mtime +7 -exec rm {} \;
find /home/$USER/backups/mail/mail* -mtime +7 -exec rm {} \;
Je ne sais plus si c'est celui que j'avais déposé à l'origine mais il est identique à ce que tu as fait.

De mon côté, ça fonctionne bien mais effectivement, je crois me souvenir que j'avais eu une frayeur de ce genre et après vérification, toutes mes sauvegardes (qui datent de plusieurs mois maintenant) sont au nombre de 9 avec ce code. Alors pourquoi 9 et pas 7, je n'en sais rien. Je n'ai pas vraiment cherché à comprendre le sens exact de ces lignes, ça fonctionne, même si c'est bancal, donc je n'ai pas cherché plus loin :).

Maintenant, pour en avoir 7, il faut peut-être mettre +5 :)
 
#49
Abracadabra... Le script magique a encore frappé :)

Si tu me confirmes que c'est bien ce que tu as et que ça marche, je vais donc attendre. Y'a pas de raisons...
 
#50
lol
C'est bien rassurant ;)

En tout cas je ne reçois plus d'alertes de mon monitoring lors des sauvegardes donc non seulement ça fonctionne au poil mais en plus ça ne semble pas trop tirer sur les ressources.

Pour ma part je vais essayer de faire les tests pour la synchro FTP au cas où d'autres personnes seraient intéressées
 
#52
Bien sur, et d'y accéder et les utiliser comme et quand on le souhaite, comme j'ai pu le lire sur un autre topic :-/
 
#53
Salut,

Je crois que j'ai compris l'histoire du nombre de sauvegardes. En fait, le zéro compte.

Résultat :
- mtime +7 => on garde 8 sauvegardes
- mtime +4 => on garde 5 sauvegardes.

J'ai testé en laissant 7 aux fichiers et 4 aux méls et j'ai bien les 8 derniers backups fichiers et les 5 derniers backups méls.

Voili voilou.

A+
 
#55
Je reviens sur ce script qui fonctionne toujours trés bien, mais aujourd'hui j'ai reçu un email avec cette avertissement pour chaque sauvegarde de base de données :
Warning: Using unique option prefix pass instead of password is deprecated and will be removed in a future release. Please use the full name instead.
Quelqu'un a-t-il déjà eu cette avertissement ?
 
#56
Bon après quelques recherches sur internet c'est une erreur connue qui n'a rien à voir en particulier avec ce script de sauvegarde.

Pour ne plus avoir cet avertissement voilà la méthode écrite sur une multitude de sites/forums :

This warning appears because of 'pass' option in .my.cnf file:
Code:
[client]
user = root
pass = Secure_passWord

To avoid warning message just replace 'pass' option with full option 'password':
Code:
[client]
user = root
password = Secure_passWord
Je viens de faire cette manipulation et mes sites semblent fonctionner parfaitement.

A voir si demain j'ai toujours cet avertissement :rolleyes:
 
#57
Le script semble s'être exécuté correctement et aucun email d'erreur donc cette "petite" manip semble fonctionnelle si vous avez le même avertissement ;)
 

Rayman

New Member
#59
Google m'a mené ici. désolé pour le déterrage mais c'est le topic le plus abouti :)
Merci pour le code. Par contre j'obtiens cette erreur :
/usr/local/cpanel/bin/jailshell: /home/[user]/backup/backup.sh: Permission denied

Que faut-il faire pour obtenir les autorisations nécessaire ?


merci :)
 
Haut