Sauvegarde planifiée de site Prestashop chez OVH

Petit nouveau ! | 6 Messages

21 juin 2016, 15:50

Bonjour,

J'ai un site e-commerce basé sur Prestahshop chez OVH.
Je voudrais planifier des sauvegardes de mon site.

Je sais que je peux créer une tâche CRON (via l'espace client OVH) qui éxécutera un script PHP se trouvant sur mon serveur.

Mais je ne sais pas quel script je dois écrire pour faire une sauvegarde de mon site (base de données + fichiers).

D'avance merci pour votre aide.

Petit nouveau ! | 6 Messages

21 juin 2016, 17:36

Ovh m'a redirigé vers un guide pour faire les sauvegardes de la base de données

Voilà leur script:
system("mysqldump --host=adresse --user=mon_user --password=mon_mot_de_passe nom_de_la_base > nom_de_la_base.sql");

Est-il possible de modifier ce script de façon à ce que la base soit sauvegardée dans un dossier avec la date de la sauvegarde?

Merci

ViPHP
ViPHP | 5881 Messages

21 juin 2016, 20:02

Voilà leur script:
system("mysqldump --host=adresse --user=mon_user --password=mon_mot_de_passe nom_de_la_base > nom_de_la_base.sql");

Est-il possible de modifier ce script de façon à ce que la base soit sauvegardée dans un dossier avec la date de la sauvegarde?
A priori vous pouvez utiliser plusieurs commandes sur le même appel à system() en séparant par ";".
Pour créer un dossier, c'est la commande mkdir().

Cela donnerait donc quelquechose comme cela :

Code : Tout sélectionner

system("mkdir nom_du_dossier; mysql_dump ... >nom_du_dossier/nom_de_la_base.sql");

Petit nouveau ! | 6 Messages

22 juin 2016, 15:12

Cela fonctionne comme suit :

Code : Tout sélectionner

<? // SAUVEGARDE DE LA BASE DE DONNEES AVEC AJOUT DE LA DATE ET DE L'HEURE AU NOM DU FICHIER .SQL // On va chercher la date $date = date('d-m-y-h'); // On crée un nom de fichier pour la base de données $filename="ovh_prestashop-" . $date; // La commande system ("mysqldump --host=ip_du_site --user=nom-user --password=mot-de-passe nom_de_la_base > $filename.sql"); echo "C'est fini. La base est disponible par FTP"; ?>

Petit nouveau ! | 6 Messages

22 juin 2016, 15:29

Ce que je voudrais faire maintenant, c'est copier le fichier SQL, dont la fin du nom change puisque c'est une date, vers un serveur FTP automatiquement.
J'arrive à copier un fichier qui a un nom fixe (fichier.sql) mais pas un fichier qui à un nom qui change (fichier-date.sql).

Quelle doit être la syntaxe du nom du fichier dans le script suivant?

Code : Tout sélectionner

<?php $ftp_host = 'ip_du_ftp'; $ftp_user = 'user_du_ftp'; $ftp_pass = 'mot-de-passe'; $local_file = "fichier-date.sql"; $distant_file = "./chemin_sur_le_serveur_ftp/fichier-date.sql"; // on établit la connexion au serveur $conn_id = ftp_connect($ftp_host); // on se connecte en tant qu'utilisateur $login_result = ftp_login($conn_id, $ftp_user, $ftp_pass); // on active le mode passif ftp_pasv($conn_id, true); // si on est connecté avec succès, on transfère le fichier if($login_result && ftp_put($conn_id, $distant_file, $local_file, FTP_ASCII)){ // si le transfert a fonctionné, on supprime le fichier local // unlink($local_file); } // on clos la connexion ftp_close($conn_id); echo "C'est fini. La base est maintenant sur le serveur FTP."; ?>

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7239 Messages

22 juin 2016, 19:00

Bonjour,

Tu peux utiliser glob() pour faire une recherche sur les fichiers *.sql dans un répertoire précis :
http://fr.php.net/glob
Quand tout le reste a échoué, lisez le mode d'emploi...