OVH Community, votre nouvel espace communautaire.

Sauvegarder et restaurer son site web PHP et sa base SQL


vieuxbrice
10/01/2010, 10h52
Bonjour,

un peu tard peut être... mais cela peut toujours être utile...

les caractères -- ne sont pas à remplacer, ce sont les caractères utilisés dans la ligne de commande pour indiquer l'option avec laquelle on exécute la commande.

Ici :

--host=hostname -> option pour indiquer le serveur

et ainsi de suite...

Bonne journée.

buenaventura
24/06/2009, 11h35
Citation Envoyé par enycu
[CENTER][B]Sauvegarder son site web php et sa base SQL
Bonjour

Cette manip me parait très intéressante. Une question, par quoi remplacer concrètement les caractères -- qui figurent dans la ligne de code:

mysqldump --host=serveur_sql --user=nom_de_la_base --password=mot_de_passe nom_de_la_base

Merci

enycu
27/03/2008, 20h51
J'ai fait une petite mise à jour de l'article. J'ai y ajouté la note suivante, concernant la restauration:
Un conseil: vérifiez comment s'affiche les caractères accentués sur votre site web après restauration. À cause de certaines incohérences entre le latin1 et l'utf8, on peut avoir des mauvaises surprises. Par exemple: j'ai un blog où tout est en utf-8 (texte, charset html, interclassement SQL en utf-8, etc.), tout est cohérent depuis sa création. Si je fais un dump (sauvegarde) de la base en utf8 avec mon script, puis une restauration avec bigdump.php en utf8, le site web n'affiche pas bien les caractères accentués. J'au dû faire un dump en latin1 puis restaurer avec bigdump.php en utf8 pour retrouver une situation normale. Pensez-y.

Je crois que le serveur SQL d'OVH doit être fondamentalement en latin1 quoiqu'il arrive. Un encodage différent fonctionne parfaitement, mais il faut être vigilant. Vous avez maintenant toutes les informations pour régler le problème.

enycu
29/10/2007, 21h54
Si vous avez un problème de sauvegarde et de restauration, NE REPONDEZ PAS A CET ARTICLE.
Créez un nouvel article dans le bon forum ici. Cet espace est consacré aux guides et astuces, pas à l'entraide qui se fait ici.

N'hésitez pas à compléter cet article par vos trucs, astuces et vos conseils.

enycu
29/10/2007, 21h49
Restaurer son site web php et sa base SQL
(Partie 2)


3- Restaurer le site web:
Cela est facile. Tout d'abord, si vous avez modifié les droits des fichiers en 404 et dossier en 505 comme expliqué dans un article précédent, vous ne pourrez les supprimer ou les remplacer. Refaites les commandes en donnant aux fichiers les droits 604 aux fichiers et 705 aux dossiers. Puis effacez complètement votre site web. Vous ne savez pas quelles traces et fichiers cachés a laissé le pirate, il faut rebâtir sur une base saine. Ensuite, par FTP envoyez votre sauvegarde vers votre site. Puis remodifiez les droits des fichiers et dossiers comme discuté précédemment.


4- Restaurer la base SQL:
Si votre sauvegarde est à jour, vous avez l'esprit tranquille. Si votre site est très actif et qu'il s'est passé trop de temps entre votre dernière sauvegarde et le piratage, faites une sauvegarde de la base vieille d'une semaine comme expliquée ci-dessus. Cependant, vous n'aurez pas la certitude que cette base est saine.

a) Restauration par phpMyadmin:
Contrairement à la sauvegarde, la restauration par phpMyadmin a une grosse limite: la taille maximum autorisée pour uploader un fichier par le Web. Cette taille varie en fonction de votre offre d'hébergement, de 2, 8 à 16 Mo.
Pour connaître cette limite, créez un fichier info.php avec le code suivant:
Code PHP:
phpinfo();
?>
Envoyez ce fichier par FTP, ouvrez-le avec votre navigateur web, et cherchez la ligne: upload_max_filesize pour connaître la taille maximum.

Si votre sauvegarde MySQL est donc inférieure à cette limite, vous pouvez le faire.
Un conseil: si votre "dump" ou sauvegarde a été faite avec phpMyadmin, vous pouvez faire la restauration de la même manière, sinon, allez à la méthode par script PHP expliquée au point suivant.

- Effacement de la base SQL:
Connectez-vous à votre interface phpMyadmin:
http://pma.ovh.net/
Entrez le nom de la base SQL et son mot de passe, puis en haut de la colonne de gauche, cliquez sur le nom de la base. Puis dans la fenêtre principale, cliquez sur "Tout cocher" et dans le menu qui suit, choisissez "Supprimer". Confirmer la suppression des "Tables" en cliquant sur "Oui".

- Restauration de la base:
On va importer la nouvelle base de données. Cliquez sur l'onglet "Importer". Cliquez sur "Parcourir" pour sélectionner sur votre ordinateur la sauvegarde. ATTENTION: si la sauvegarde vient d'être faite avec phpMyadmin, c'est-à-dire en ayant suivi la procédure décrite ci-dessus, sélectionnez le jeu de caractères "utf8" (il y a de fortes chances que ce jeu de caractères soit le bon, sinon, prenez "latin1"). Si la sauvegarde a été réalisée autrement, choisissez le jeu de caractères correspondant. Sinon, les caractères accentués vont mal s'afficher sur le site web. Cliquez sur Exécuter. Et n'oubliez pas de vous déconnecter une fois finie en cliquant sur l'icône Exit.

b) Restauration par script PHP:
Si vous avez dépassé la limite parce que votre base SQL est trop grosse, un excellent script peut vous aider, il s'agit de BigDump http://www.ozerov.de/bigdump.php . L'interface est en anglais. Il faut simplement entrer les paramètres de sa base SQL et choisir le bon jeu de caractères "utf8" ou "latin1". Si vous avez utilisé le script de sauvegarde ci-dessus, vous savez quel jeu de caractères vous avez utilisé, alors qu'on est moins sûr avec phpMyadmin.

- Effacement de la base SQL:
Connectez-vous à votre interface phpMyadmin:
http://pma.ovh.net/
Entrez le nom de la base SQL et son mot de passe, puis en haut de la colonne de gauche, cliquez sur le nom de la base. Puis dans la fenêtre principale, cliquez sur "Tout cocher" et dans le menu qui suit, choisissez "Supprimer". Confirmer la suppression des "Tables" en cliquant sur "Oui". Et n'oubliez pas de vous déconnecter une fois finie en cliquant sur l'icône Exit.

- Restauration de la base:
Par FTP, envoyez bigdump.php et votre sauvegarde SQL dans un même dossier. Avec votre navigateur web, ouvrez bigdump.php, il devrait lister votre base. Puis cliquez sur Start Import. Normalement, tout doit bien se passer et une fenêtre devrait vous dire que la base a été restaurée.
Sinon, il vous faudra faire une sauvegarde table par table de votre base SQL pour réduire la taille des fichiers. Faites-le simplement avec phpMyadmin comme expliqué ci-dessus. Si cela n'est pas suffisant, consultez les forums, il existe de nombreuses astuces.
Puis par FTP, effacez bigdump.php et la sauvegarde SQL. Ne conservez jamais bigdump, un pirate pourrait s'en servir très facilement pour contrôler votre site web.
Un conseil: vérifiez comment s'affiche les caractères accentués sur votre site web après restauration. À cause de certaines incohérences entre le latin1 et l'utf8, on peut avoir des mauvaises surprises. Par exemple: j'ai un blog où tout est en utf-8 (texte, charset html, interclassement SQL en utf-8, etc.), tout est cohérent depuis sa création. Si je fais un dump (sauvegarde) de la base en utf8 avec mon script, puis une restauration avec bigdump.php en utf8, le site web n'affiche pas bien les caractères accentués. J'au dû faire un dump en latin1 puis restaurer avec bigdump.php en utf8 pour retrouver une situation normale. Pensez-y.

5- Récupitulatif. Vous avez sur votre ordinateur:
a) votre site web complet (fichiers HTML, images, et autres fichiers),
b) tous les fichiers à jour de votre blog, forum, cms, gallery, wiki avec les fichiers config, htaccess, les plugins, modules, thèmes, templates et vos modifications,
c) les dossiers uploads, logs, etc. que vous mettez régulièrement à jour,
d) une sauvegarde récente de votre base MySQL.


6- Si vous faites la restauration après un piratage, modifiez vos mots de passe FTP et MySQL. Puis, n'oubliez pas de modifier les fichiers config.inc.php ou équivalents qui ont besoin de votre nouveau mot de passe SQL.

enycu
29/10/2007, 21h48
Sauvegarder son site web php et sa base SQL
(Partie 1)

Cet article et le suivant viennent du How-To sur Sécuriser et protéger son site web des attaques des pirates et hackers. J'ouvre un nouvel article afin que les personnes puissent le trouver facilement.


Comme pour votre ordinateur, la conservation d'une copie de sauvegarde de votre site web est impérative.


1- Préparer la sauvegarde du site web:
Ayez toujours sur votre ordinateur la copie de votre site web. Si vous avez installé un blog, forum, cms, gallery, wiki, conservez-en une copie opérationnelle avec les fichiers config, htaccess, les plug-ins, modules additionnels, thèmes, templates et vos modifications.
Si vous mettez votre logiciel web à jour, faites la même chose avec votre sauvegarde.
Si votre site contient un dossier d'upload et des logs, allez les récupérer régulièrement. Pour simplifier cette dernière tâche, le script ci-dessous va faire une sauvegarde au format ZIP d'un fichier de log. Au lieu de télécharger une centaine de petits fichiers textes, tout sera regroupé en un fichier ZIP.

Code PHP:
/*Assurez-vous que le dossier de destination de la sauvegarde est cree. Il peut etre soit dans le dossier www ou ailleurs. Ici nous le mettons ailleurs avec les droits 705 */
/* Modifiez vos parametres */
$uploads "/home/loginftp/www/uploads"/* chemin absolu du dossier uploads a sauvegarder sans le / final */
$repsauvegarde "/home/loginftp/sauvegarde/";  /* chemin absolu du repertoire de sauvegarde */
$zipuploads "mesuploads"/* nom du fichier zip de la sauvegarde sans mettre le .zip a la fin */

/* On va mettre 2 dossiers differents dans un meme fichier zip */
/* Modifiez vos parametres */
$logs1 "/home/loginftp/www/telechargement/logs"/* chemin absolu du dossier logs des telechargements a sauvegarder sans le / final */
$logs2 "/home/loginftp/www/session/logs"/* chemin absolu du dossier logs des sessions a sauvegarder sans le / final */
$repsauvegarde "/home/loginftp/sauvegarde/";  /* chemin absolu du repertoire de sauvegarde */
$ziplogs "meslogs"/* nom du fichier zip de la sauvegarde sans mettre le .zip a la fin */
/* C'est tout. Placez ce fichier par FTP quelque part sur votre serveur Web, dans un endroit discret. */
/* Puis ouvrez-le avec votre navigateur web et suivez les instructions. */

echo "";
echo 
"1. Ce script cree automatiquement une sauvegarde du dossier $uploads \n
\n
"
;
echo 
"Le dossier est en cours de sauvegarde.......\n
"
;
if (
system("zip -qr -5 $repsauvegarde$zipuploads $uploads"));
echo 
"C'est fait. \n
"
;
echo 
"\n
"
;
echo 
"2. Sauvegarde des dossiers $logs1 et $logs2 \n
\n
"
;
echo 
"Les dossiers sont en cours de sauvegarde.......\n
"
;
if (
system("zip -qr -5 $repsauvegarde$ziplogs $logs1"));
if (
system("zip -qr -5 $repsauvegarde$ziplogs $logs2"));
echo 
"\n
"
;
echo 
"C'est fini. Vous pouvez recuperer la sauvegarde par FTP dans le dossier $repsauvegarde .\n
N'oubliez pas d'effacer ces fichiers de votre serveur par FTP car ils peuvent contenir des mots de passe ou des informations personnelles.\n
\n
"
;
?>
ATTENTION: ne cherchez pas à faire un fichier ZIP de tout votre hébergement, cela risque de ne pas marcher. Il y a 2 raisons à cela: OVH a limité le temps d'exécution d'un script à 30 secondes et la mémoire RAM allouée au traitement du script et à la manipulation des fichiers est limitée en fonction de votre offre d'hébergement (de 8 à 32 Mo, ce qui est insuffisant pour une sauvegarde de votre site web).
Pour connaître ces limites, créez un fichier info.php avec le code suivant:
Code PHP:
phpinfo();
?>
Envoyez ce fichier par FTP, ouvrez-le avec votre navigateur web, et cherchez les lignes: max_execution_time (temps d'exécution du script), memory_limit et post_max_size pour connaître la taille maximum du fichier à traiter.


2- Préparer la sauvegarde de la base MySQL:
La sauvegarde de la base MySQL s'appelle un "dump". On peut la faire depuis votre interface phpMyadmin, ou depuis un script php. OVH maintient 2 sauvegardes de votre base MySQL: la base de la veille (appelée -n) et une autre vieille d'une semaine environ (appelée -s).

a) Sauvegarde par phpMyadmin:
Pour faire une sauvegarde de votre base MySQL actuelle par phpMyadmin connectez-vous à votre interface:
http://pma.ovh.net/
Entrez le nom de la base SQL et son mot de passe, puis en haut de la colonne de gauche, cliquez sur le nom de la base. En haut de la page centrale, cliquez sur l'onglet "Exporter". Puis dans le champ Exporter qui liste toutes les tables, cliquez sur le lien "Tout sélectionner" et cochez le bouton en face de SQL. En bas de la page, cochez la case "Transmettre" et cochez la case "gzippé" pour compresser le fichier qui va être téléchargé, puis cliquez sur Exécuter. Et n'oubliez pas de vous déconnecter une fois finie en cliquant sur l'icône Exit.

Pour faire une sauvegarde de votre base MySQL vieille de 7 jours par phpMyadmin connectez-vous à votre interface avec ce lien:
Code:
http://90plan.ovh.net/phpMyadmin/index.php?db=NomDeLaBase-s&server=1&lang=fr-utf-8
Remplacez NomDeLaBase (en conservant le -s qui veut dire base vieille d'une semaine) par le nom de votre base SQL.
Remplacez 90plan par 60gp, start1g, etc., en fonction de votre offre d'hébergement.
Et faites la même chose que ci-dessus. Vous ne pourrez faire aucune modification de cette base, ni l'utiliser en production pour votre site web. Elle ne sert qu'à faire un "dump" (sauvegarde).

b) Sauvegarde par Script PHP.
L'avantage de la sauvegarde par script PHP est sa rapidité et la maîtrise de quelques options qu'on ne peut contrôler avec phpMyadmin, notamment le problème d'encodage des caractères accentués (appelé jeu de caractères). C'est pourquoi je préfère cette solution.

Code PHP:
/* Modifiez vos parametres MySQL */
$db_server   "ServeurMySQL";
$db_name     "NomDeLaBaseSQL"/* pour acceder a la base vielle de 7 jours, ajoutez -s à la fin du nom, comme ceci: NomDeLaBaseSQL-s */
$db_username "IdentifiantSQL";
$db_password "MotDePasseSQL";
$db_charset "utf8"/* mettre utf8 ou latin1 */
/* C'est tout. Placez ce fichier par FTP quelque part sur votre serveur Web, dans un endroit discret. */
/* Puis ouvrez-le avec votre navigateur web et suivez les instructions. */

echo "Ce script cree une sauvegarde de la base de donnees avec l'encodage du jeu de caracteres $db_charset .  \n
\n
Le fichier de sauvegarde est au meme endroit que ce script.  \n
\n
"
;
echo 
"Votre base est en cours de sauvegarde.......\n
"
;
if (
system("mysqldump --host=$db_server --user=$db_username --password=$db_password -C -Q -e --default-character-set=$db_charset $db_name | gzip -c > $db_name-$db_charset.sql.gz"));
echo 
"\n
"
;
echo 
"C'est fini. Vous pouvez recuperer le fichier de sauvegarde. Il s'appelle: $db_name-$db_charset.sql.gz\">$db_name-$db_charset.sql.gz (faites un clic-droit, et enregistrez sous... , ou enregistrez la cible du lien sous...) \n
\n
N'oubliez pas d'effacer ce fichier de votre serveur par FTP car il contient des mots de passe.\n
\n
"
;
?>
Après la sauvegarde, la restauration ...