Comment sauvegarder ma base phpmyadmin de façon automatique
Résolu
flexi2202
Messages postés
3822
Date d'inscription
Statut
Membre
Dernière intervention
-
flexi2202 Messages postés 3822 Date d'inscription Statut Membre Dernière intervention -
flexi2202 Messages postés 3822 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Comment sauvegarder ma base phpmyadmin de façon automatique
- Logiciel de sauvegarde automatique gratuit - Guide
- Réponse automatique thunderbird - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Base de registre - Guide
- Sommaire automatique word - Guide
19 réponses
Bonjour,
Je pense que tout est marqué dans cette doc.
Que n'as tu pas compris ?
As tu vérifié que la fonction exec était autorisée sur le serveur ?
Tu as mis ton site sur un hébergement.. ou en local sur ton ordi ?
As tu configuré le script php ( les 4 variables ) en y mettant les infos de connexion à ta bdd ?
As tu créé la tâche planifié ?
Si tu le lances à la main (sans les tâches planifiées ) est-ce que ça marche ou ça t'affiche une erreur ?
Bref, il faudrait un peu plus de détails....
Je pense que tout est marqué dans cette doc.
Que n'as tu pas compris ?
As tu vérifié que la fonction exec était autorisée sur le serveur ?
Tu as mis ton site sur un hébergement.. ou en local sur ton ordi ?
As tu configuré le script php ( les 4 variables ) en y mettant les infos de connexion à ta bdd ?
As tu créé la tâche planifié ?
Si tu le lances à la main (sans les tâches planifiées ) est-ce que ça marche ou ça t'affiche une erreur ?
Bref, il faudrait un peu plus de détails....
bonsoir jordane
merci pour m avoir éclairé
je m suis donc déjà arrêté avec la fonction exec
et je suis allé voir la documentation de php pour savoir comment je pourrais la tester
et le résultat ne s est pas fait attendre
Attention: exec () a été désactivé pour des raisons de sécurité dans ...
donc cela est mort avec cette technique
existe t il un autre moyen ??
merci pour m avoir éclairé
je m suis donc déjà arrêté avec la fonction exec
et je suis allé voir la documentation de php pour savoir comment je pourrais la tester
<?php // Affiche le nom d'utilisateur qui fait tourner le processus php/http // (sur un système ayant "whoami" dans le chemin d'exécutables) $output=null; $retval=null; exec('whoami', $output, $retval); echo "Returned with status $retval and output:\n"; print_r($output); ?>
et le résultat ne s est pas fait attendre
Attention: exec () a été désactivé pour des raisons de sécurité dans ...
donc cela est mort avec cette technique
existe t il un autre moyen ??
Jordane
merci pour ta réponse
mais avec le peu de connaissance que j ai comment veux tu que je puisse pondre un truc pareil mdrrrr
je vais regarder si je vois un script qui traine
merci pour ta réponse
mais avec le peu de connaissance que j ai comment veux tu que je puisse pondre un truc pareil mdrrrr
je vais regarder si je vois un script qui traine
Tu sais comment exécuter des requêtes SQL en PHP ?
Tu sais comment écrire dans un fichier depuis un script PHP ?
La réponse devrait être oui vu tous les codes PHP que tu as déjà poster sur ce forum.
Je pense que ceci devrait correspondre à tes besoins
https://blog.site-web-creation.net/mysql-backup/
Pense bien à tout lire cette fois :-)
Tu sais comment écrire dans un fichier depuis un script PHP ?
La réponse devrait être oui vu tous les codes PHP que tu as déjà poster sur ce forum.
Je pense que ceci devrait correspondre à tes besoins
https://blog.site-web-creation.net/mysql-backup/
Pense bien à tout lire cette fois :-)
oui en effet Jordane
merci pour la réponse , l astuce et le lien que j étais justement en train de tester
transmission de pensée mdrrr
la sauvegarde a bien fonctionner
demain je regarde a cela
Si votre hébergeur ne propose pas ce type de prestation, Google vous proposera quelques adresses avec la recherche suivante : crontab gratuit.
passe une bonne nuit et merci d être la pour nous
merci pour la réponse , l astuce et le lien que j étais justement en train de tester
transmission de pensée mdrrr
la sauvegarde a bien fonctionner
demain je regarde a cela
Si votre hébergeur ne propose pas ce type de prestation, Google vous proposera quelques adresses avec la recherche suivante : crontab gratuit.
passe une bonne nuit et merci d être la pour nous
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour a tous
voila je viens de découvrir que sur mon hébergeur je pouvais lui demander d effectuer des taches cron
pour des buts d essai je lui demande d exécuter le script de ma page php une fois toutes les 10 mm mais cela ne fonctionne pas
pourtant lorsque je lance mon fichier de sauvegarde php de façon manuelle cela fonctionne
voila je viens de découvrir que sur mon hébergeur je pouvais lui demander d effectuer des taches cron
pour des buts d essai je lui demande d exécuter le script de ma page php une fois toutes les 10 mm mais cela ne fonctionne pas
pourtant lorsque je lance mon fichier de sauvegarde php de façon manuelle cela fonctionne
je viens de voir qu il fallait que je fasse ceci
https://www.000webhost.com/forum/t/cron-job/23865/15
donc dans mon cas si j ai bien compris
étape 1
créer un fichier php cron_caller3.php
étape 2
y mettre ce code avec mon lien vers mon script
etape 3
et dans la tache de cron indiquer le lien du fichier "cron_caller3.php"
mais cela ne fonctionne pas non plus
https://www.000webhost.com/forum/t/cron-job/23865/15
donc dans mon cas si j ai bien compris
étape 1
créer un fichier php cron_caller3.php
étape 2
y mettre ce code avec mon lien vers mon script
<? php file_get_contents (' http://dclxvi.co.uk/httpdocs/crons/cron_exemple.php ');
etape 3
et dans la tache de cron indiquer le lien du fichier "cron_caller3.php"
mais cela ne fonctionne pas non plus
merci pour la reponse
oui c est bien ce que j ai fait mais sans succes
c est bien ce qu il explique que j ai fais
oui c est bien ce que j ai fait mais sans succes
c est bien ce qu il explique que j ai fais
merci de l aide
bon je vais essayer d etre hyper clair
en fait j ai dans un premier temps
j ai crée un fichier test22.php
dans lequel mon script ce trouve , celui du site
lors du premier essai j ai configure cron avec le chemin ou ce trouve ce fichier
mais cela n a pas fonctionne(test22.php)
ensuite en cherchant je pensais avoir trouve cette solution
https://www.000webhost.com/forum/t/cron-job/23865/15
j ai donc créer un autre fichier php "cron_caller.php"
avec l intérieur de celui ci
j ai donc indiquer a cron l emplacement de ce fichier cron_caller.php
mais cela ne fonctionne pas non plus
bon je vais essayer d etre hyper clair
en fait j ai dans un premier temps
j ai crée un fichier test22.php
dans lequel mon script ce trouve , celui du site
lors du premier essai j ai configure cron avec le chemin ou ce trouve ce fichier
mais cela n a pas fonctionne(test22.php)
ensuite en cherchant je pensais avoir trouve cette solution
https://www.000webhost.com/forum/t/cron-job/23865/15
j ai donc créer un autre fichier php "cron_caller.php"
avec l intérieur de celui ci
<? php file_get_contents (' https://peche-perle.000webhostapp.com/test22.php');
j ai donc indiquer a cron l emplacement de ce fichier cron_caller.php
mais cela ne fonctionne pas non plus
Je réitère donc ma réponse précédente...
Dans le lien que tu as trouvé tu as appliqué ce que l'utilisateur avait mis dans sa question...
Or, il faut appliquer la réponse qui lui a été donnée...
Dans la cron, il faut bien mettre le chemin vers ton script PHP mais en le préfixe en par le programme Php.
Un truc du genre :
Et au cas où, il faut voir la documentation de ton hébergeur concernant la mise en place de tâches cron.
Dans le lien que tu as trouvé tu as appliqué ce que l'utilisateur avait mis dans sa question...
Or, il faut appliquer la réponse qui lui a été donnée...
Dans la cron, il faut bien mettre le chemin vers ton script PHP mais en le préfixe en par le programme Php.
Un truc du genre :
php -f chemin/vers/ton/script.php
Et au cas où, il faut voir la documentation de ton hébergeur concernant la mise en place de tâches cron.
jordane merci
je comprends pas comment j ai pas vu cette reponse avec cette ligne
donc cela commence a être plus clair
mais je me retrouve devant un soucis
quoi mettre a la place de YOUR_CPANEL_USERNAME
mon pseudo ??
car mon fichier est situe a cet emplacement public_html/file.php
public_html étant la racine ...
de plus lorsque je regarde ou je dois rentrer le lien ca semble bizarre aussi

je comprends pas comment j ai pas vu cette reponse avec cette ligne
donc cela commence a être plus clair
mais je me retrouve devant un soucis
quoi mettre a la place de YOUR_CPANEL_USERNAME
mon pseudo ??
car mon fichier est situe a cet emplacement public_html/file.php
public_html étant la racine ...
de plus lorsque je regarde ou je dois rentrer le lien ca semble bizarre aussi

ah voila
je pense avoir compris mon erreur
mais cela ne solutionne pas le soucis
j ai donc repris ce morceau de code qui est dans le fichier cron_caller.php
et j ai essaye de remplacer
YOUR_CPANEL_USERNAME
par le nom d utilisateur
par l id de la base de donnée
par le nom de la base de donnée
mais rien ne se sauvegarde
je pense avoir compris mon erreur
mais cela ne solutionne pas le soucis
j ai donc repris ce morceau de code qui est dans le fichier cron_caller.php
php -f /home/YOUR_CPANEL_USERNAME/public_html/test22.php
et j ai essaye de remplacer
YOUR_CPANEL_USERNAME
par le nom d utilisateur
par l id de la base de donnée
par le nom de la base de donnée
mais rien ne se sauvegarde
En faisant une très très longue recherche d'environ 4 secondes je suis tombée là-dessus
https://www.000webhost.com/forum/t/how-to-create-a-cron-job/80320
Donc, via cette interface, il suffit en effet, de ne mettre que le fichier php à exécuter.
Si il est à la racine de ton site sinon il faut mettre le chemin à partir de la racine vers ce fichier.
Si ça ne fonctionne toujours pas, il faudra
- nous montrer à quel endroit se situe le fichier par rapport à la racine de ton site
- que tu nous montre une capture écran de ce que tu as paramétré
- que tu nous montre le contenu du script.
https://www.000webhost.com/forum/t/how-to-create-a-cron-job/80320
Donc, via cette interface, il suffit en effet, de ne mettre que le fichier php à exécuter.
Si il est à la racine de ton site sinon il faut mettre le chemin à partir de la racine vers ce fichier.
Si ça ne fonctionne toujours pas, il faudra
- nous montrer à quel endroit se situe le fichier par rapport à la racine de ton site
- que tu nous montre une capture écran de ce que tu as paramétré
- que tu nous montre le contenu du script.
bonsoir jordane
merci pour l aide
ah ben oui cette page c est un de mes premiers essai mais qui n a rien donne et bien évidement le script est bien a la racine du site
je pensais aussi que cela serait aussi simple que cela ...
enfin soit
voila ou ce situe le fichier avec le script de backup il s appelle "test22.php"
comme tu peux le voir il est bien a la racine

ensuite le paramétrage dans cron ou j appelle le fichier cron_caller.php
qui contient ceci
<?php
file_get_contents('php -f /home/id15539226/public_html/test22.php');
?>

mais je ne suis pas rester les bras croises j ai essaye une multitude de choses
merci pour l aide
ah ben oui cette page c est un de mes premiers essai mais qui n a rien donne et bien évidement le script est bien a la racine du site
je pensais aussi que cela serait aussi simple que cela ...
enfin soit
voila ou ce situe le fichier avec le script de backup il s appelle "test22.php"
comme tu peux le voir il est bien a la racine

ensuite le paramétrage dans cron ou j appelle le fichier cron_caller.php
qui contient ceci
<?php
file_get_contents('php -f /home/id15539226/public_html/test22.php');
?>

mais je ne suis pas rester les bras croises j ai essaye une multitude de choses
Mais non... où as tu été chercher qu'il fallait mettre cette ligne de code
Dans la fenêtre : https://img-19.ccm2.net/enGa34W7wLUEwAphzzv4HTkuT5I=/9574140b62ad496ab5b3d6548358db54/ccm-ugc/ecran6.jpg
C''est directement test22.php qu'il faut mettre à la place de my-script.php
Reste à nous montrer le code de ton fichier test22.php
file_get_contents('php -f /home/id15539226/public_html/test22.php');
Dans la fenêtre : https://img-19.ccm2.net/enGa34W7wLUEwAphzzv4HTkuT5I=/9574140b62ad496ab5b3d6548358db54/ccm-ugc/ecran6.jpg
C''est directement test22.php qu'il faut mettre à la place de my-script.php
Reste à nous montrer le code de ton fichier test22.php
merci de ton aide
comme je te l ai explique a plusieurs reprises
j ai tester de cette façon en indiquant
test22.php
mais cela ne fonctionne pas

le code que je t ai montre n est rien d autres qu un essai parmi tant d autres
voici le contenu de test22.php
c est le même fichier du lien que nous avions trouvé en même temps et qui fonctionne si je le lance de façon manuelle
comme je te l ai explique a plusieurs reprises
j ai tester de cette façon en indiquant
test22.php
mais cela ne fonctionne pas

le code que je t ai montre n est rien d autres qu un essai parmi tant d autres
voici le contenu de test22.php
c est le même fichier du lien que nous avions trouvé en même temps et qui fonctionne si je le lance de façon manuelle
<?php /** * Sauvegarde MySQL * * @package BackupMySQL * @author Benoit Asselin <contact@ab-d.fr> * @version backup.php, 2013/01/13 * @link http://www.ab-d.fr/ * */ error_reporting(E_ALL); ini_set('display_errors', true); /** * Sauvegarde MySQL */ class BackupMySQL extends mysqli { /** * Dossier des fichiers de sauvegardes * @var string */ protected $dossier; /** * Nom du fichier * @var string */ protected $nom_fichier; /** * Ressource du fichier GZip * @var ressource */ protected $gz_fichier; /** * Constructeur * @param array $options */ public function __construct($options = array()) { $default = array( 'host' => ini_get('mysqli.default_host'), 'username' => ini_get('mysqli.default_user'), 'passwd' => ini_get('mysqli.default_pw'), 'dbname' => '', 'port' => ini_get('mysqli.default_port'), 'socket' => ini_get('mysqli.default_socket'), // autres options 'dossier' => './', 'nbr_fichiers' => 5, 'nom_fichier' => 'backup' ); $options = array_merge($default, $options); extract($options); // Connexion de la connexion DB @parent::__construct($host, $username, $passwd, $dbname, $port, $socket); if($this->connect_error) { $this->message('Erreur de connexion (' . $this->connect_errno . ') '. $this->connect_error); return; } // Controle du dossier $this->dossier = $dossier; if(!is_dir($this->dossier)) { $this->message('Erreur de dossier "' . htmlspecialchars($this->dossier) . '"'); return; } // Controle du fichier $this->nom_fichier = $nom_fichier . date('Ymd-His') . '.sql.gz'; $this->gz_fichier = @gzopen($this->dossier . $this->nom_fichier, 'w'); if(!$this->gz_fichier) { $this->message('Erreur de fichier "' . htmlspecialchars($this->nom_fichier) . '"'); return; } // Demarrage du traitement $this->sauvegarder(); $this->purger_fichiers($nbr_fichiers); } /** * Message d'information ( commenter le "echo" pour rendre le script invisible ) * @param string $message HTML */ protected function message($message = ' ') { echo '<p style="padding:0; margin:1px 10px; font-family:sans-serif;">'. $message .'</p>'; } /** * Protection des quot SQL * @param string $string * @return string */ protected function insert_clean($string) { // Ne pas changer l'ordre du tableau !!! $s1 = array( "\\" , "'" , "\r", "\n", ); $s2 = array( "\\\\" , "''" , '\r', '\n', ); return str_replace($s1, $s2, $string); } /** * Sauvegarder les tables */ protected function sauvegarder(){ $this->message('Sauvegarde...'); $sql = '--' ."\n"; $sql .= '-- '. $this->nom_fichier ."\n"; gzwrite($this->gz_fichier, $sql); // Liste les tables $result_tables = $this->query('SHOW TABLE STATUS'); if($result_tables && $result_tables->num_rows) { while($obj_table = $result_tables->fetch_object()) { $this->message('- ' . htmlspecialchars($obj_table->{'Name'})); // DROP ... $sql = "\n\n"; $sql .= 'DROP TABLE IF EXISTS `'. $obj_table->{'Name'} .'`' .";\n"; // CREATE ... $result_create = $this->query('SHOW CREATE TABLE `'. $obj_table->{'Name'} .'`'); if($result_create && $result_create->num_rows) { $obj_create = $result_create->fetch_object(); $sql .= $obj_create->{'Create Table'} .";\n"; $result_create->free_result(); } // INSERT ... $result_insert = $this->query('SELECT * FROM `'. $obj_table->{'Name'} .'`'); if($result_insert && $result_insert->num_rows) { $sql .= "\n"; while($obj_insert = $result_insert->fetch_object()) { $virgule = false; $sql .= 'INSERT INTO `'. $obj_table->{'Name'} .'` VALUES ('; foreach($obj_insert as $val) { $sql .= ($virgule ? ',' : ''); if(is_null($val)) { $sql .= 'NULL'; } else { $sql .= '\''. $this->insert_clean($val) . '\''; } $virgule = true; } // for $sql .= ')' .";\n"; } // while $result_insert->free_result(); } gzwrite($this->gz_fichier, $sql); } // while $result_tables->free_result(); } gzclose($this->gz_fichier); $this->message('<strong style="color:green;">' . htmlspecialchars($this->nom_fichier) . '</strong>'); $this->message('Sauvegarde terminée !'); } /** * Purger les anciens fichiers * @param int $nbr_fichiers_max Nombre maximum de sauvegardes */ protected function purger_fichiers($nbr_fichiers_max) { $this->message(); $this->message('Purge des anciens fichiers...'); $fichiers = array(); // On recupere le nom des fichiers gz if($dossier = dir($this->dossier)) { while(false !== ($fichier = $dossier->read())) { if($fichier != '.' && $fichier != '..') { if(is_dir($this->dossier . $fichier)) { // Ceci est un dossier ( et non un fichier ) continue; } else { // On ne prend que les fichiers se terminant par ".gz" if(preg_match('/\.gz$/i', $fichier)) { $fichiers[] = $fichier; } } } } // while $dossier->close(); } // On supprime les anciens fichiers $nbr_fichiers_total = count($fichiers); if($nbr_fichiers_total >= $nbr_fichiers_max) { // Inverser l'ordre des fichiers gz pour ne pas supprimer les derniers fichiers rsort($fichiers); // Suppression... for($i = $nbr_fichiers_max; $i < $nbr_fichiers_total; $i++) { $this->message('<strong style="color:red;">' . htmlspecialchars($fichiers[$i]) . '</strong>'); unlink($this->dossier . $fichiers[$i]); } } $this->message('Purge terminée !'); } } // Instance de la classe ( a copier autant que necessaire, mais attention au timeout ) // Rq: pour les parametres, reprendre une ou plusieurs cles de $default ( dans la methode __construct() ) new BackupMySQL(array( 'username' => 'id1il', 'passwd' => 'Ssam', 'dbname' => 'id155' )); //new BackupMySQL(array( // 'username' => 'root', // 'passwd' => 'root', // 'dbname' => 'mabase', // 'dossier' => './dossier2/' // )); ?>
Tu peux modifier la fonction message comme ceci et lancer le script à la main (via le navigateur) pour tester
Logiquement, un fichier de log, à la racine de ton site devrait se créer. (ouvre le pour voir ce qu'il contient ) (et éventuellement montre le nous )
Ensuite, supprime le fichier via le FTP, puis regarde si, via la tâche planifiée, les logs se crééent ( et si oui, regarde ce qui s'y affiche )...
protected function message($message = ' ') { echo '<p style="padding:0; margin:1px 10px; font-family:sans-serif;">'. $message .'</p>'; file_put_contents( __DIR__ . 'log_'.date("Y-m-d").'.log', .date("Y-m-d H:i:s") . ' - ' . $message, FILE_APPEND); }
Logiquement, un fichier de log, à la racine de ton site devrait se créer. (ouvre le pour voir ce qu'il contient ) (et éventuellement montre le nous )
Ensuite, supprime le fichier via le FTP, puis regarde si, via la tâche planifiée, les logs se crééent ( et si oui, regarde ce qui s'y affiche )...
jordane merci pour la correction
voici donc ce que contient el fichier log
il y a un fichier de backup qui est venu se créer apparemment en même temps
voici donc ce que contient el fichier log
2021-05-04 20:35:43 - Sauvegarde...2021-05-04 20:35:43 - - commentaire2021-05-04 20:35:43 - - galerie_images2021-05-04 20:35:43 - - password_recover2021-05-04 20:35:43 - - pecheurs_perle2021-05-04 20:35:43 - - recup_mdp2021-05-04 20:35:43 - - utilisateurs2021-05-04 20:35:43 - <strong style="color:green;">backup20210504-203543.sql.gz</strong>2021-05-04 20:35:43 - Sauvegarde terminée !2021-05-04 20:35:43 - 2021-05-04 20:35:43 - Purge des anciens fichiers...2021-05-04 20:35:43 - Purge terminée !2021-05-04 20:36:48 - Sauvegarde...2021-05-04 20:36:48 - - commentaire2021-05-04 20:36:48 - - galerie_images2021-05-04 20:36:48 - - password_recover2021-05-04 20:36:48 - - pecheurs_perle2021-05-04 20:36:48 - - recup_mdp2021-05-04 20:36:48 - - utilisateurs2021-05-04 20:36:48 - <strong style="color:green;">backup20210504-203648.sql.gz</strong>2021-05-04 20:36:48 - Sauvegarde terminée !2021-05-04 20:36:48 - 2021-05-04 20:36:48 - Purge des anciens fichiers...2021-05-04 20:36:48 - Purge terminée !
il y a un fichier de backup qui est venu se créer apparemment en même temps
oui en effet mais bon entre temps je viens de tester une solution alternative
car je viens de lire des articles comme quoi le service mail et le service cron avaient souvent des soucis
j ai donc trouve ce service gratuit
https://cron-job.org/en/members/
que je vais tester et je reviens dire quoi
car je viens de lire des articles comme quoi le service mail et le service cron avaient souvent des soucis
j ai donc trouve ce service gratuit
https://cron-job.org/en/members/
que je vais tester et je reviens dire quoi