2010-02-03 5 views
3

Je dois effectuer une sauvegarde quotidienne d'une base de données MySQL, et l'envoyer de préférence par e-mail à l'adresse e-mail de mon choix.Sauvegarde (et envoi par courrier électronique) d'une base de données MySQL complète via PHP

Est-ce possible? Quel est le SQL pour générer un fichier de sauvegarde? Comment puis-je ajouter ce fichier en pièce jointe à l'e-mail envoyé?

Merci pour l'aide, j'ai vraiment besoin de faire ces sauvegardes! Je sais comment appeler un script via cronjob, donc le quotidien n'est pas un problème.

+0

N'oubliez pas que vous voulez aussi le GZIP, de préférence sous forme de code ZIP chiffré avec un mot de passe. – TravisO

+2

Par courtoisie pour le destinataire et les administrateurs des serveurs de messagerie, vous devriez envisager de stocker le fichier quelque part (FTP, etc.) et d'envoyer un lien par courrier électronique au lieu du fichier complet. Un endroit où j'ai travaillé a été paralysé un jour quand quelqu'un a fait exactement ce que vous proposez avec un énorme fichier de sauvegarde. –

+0

Je sais comment gzip, je peux le faire. En ce qui concerne la liaison, cela pourrait ne pas fonctionner puisque c'est pour éviter la perte de données en cas de panne – Cyclone

Répondre

3

Vous pouvez utiliser exec pour appeler mysqldump dans la ligne de commande pour créer une sauvegarde de votre base de données dans un fichier de votre choix. Puis, en PHP, vous pouvez localiser le fichier et le télécharger en pièce jointe et l'envoyer. Je ne sais pas si l'envoi de la base de données en toute sécurité par e-mail, s'il y a des solutions alternatives que je pourrais suggérer, je ne sais pas.

Par le commentaire de Tom, jetez un oeil à PHP Zlib et creating GZIP files "on the fly" pour compresser les fichiers via PHP.

+1

Vous voudrez probablement le goudronner/gzip aussi, à moins que ce ne soit trivialement petit. – Tom

10

Il suffit de déposer un shell de commande et exécutez une commande mysql_dump comme ceci:

mysqldump <DB name> -u<user> -p<password> | gzip -c > /backup/`date +%Y-%m-%d`.sql.gz 

De ce point vous pouvez simplement utiliser la commande mail (je ne sais pas la syntaxe de la main pour joindre un fichier) .

+0

Arg, j'ai manqué de votes aujourd'hui, mais très belle réponse. Donnez-moi 7 heures, je vais revenir à +1 –

+0

J'utilise aussi cette approche dans un crontab chez mon hébergeur. En outre, je gorges/gzip les fichiers d'applications Web associés. – spoulson

+0

Cela fonctionnerait via PHP? – Cyclone

2

automatique MySql script de sauvegarde

Ce script trouve toutes les bases de données MySQL sur votre serveur, les sauvegarde individuellement jusqu'à, les compresse et stocke le fichier dans un répertoire spécifié et/ou des e-mails pour vous. Il a été mis à jour depuis la publication publique initiale et inclut plusieurs nouvelles fonctionnalités.

http://www.dagondesign.com/articles/automatic-mysql-backup-script/

+0

Y a-t-il un moyen de sauvegarder une seule base de données? – Cyclone

0

Je l'habitude d'utiliser

sauvegarde de base de données MySQL ===================== http://restkultur.ch/personal/wolf/scripts/db_backup

Cependant, il est un peu vieux, et je ne suis pas sûr si elles ont mis à jour la version etc. Mais cela fonctionne bien, et vous donne beaucoup d'options de sauvegarde (combien de jours à garder, mois, ainsi que l'endroit où stocker le fichier - il peut être téléchargé via FTP vers un autre serveur pour une sécurité redondante).

+0

Je n'ai malheureusement pas ce genre d'accès – Cyclone

+0

Que voulez-vous dire par contrôle? Dans le cas où je vous induis en erreur avec des discussions de FTp etc ... C'est aussi simple que l'installation de wordpress, vraiment. Téléchargez-le, configurez le mot de passe d'accès mysql, sélectionnez db, sélectionnez les fréquences et vous avez terminé. Par défaut, les fichiers .sql sont stockés dans le dossier de l'application. Ou devrais-je dire "répertoire" au lieu de "dossier" puisque nous parlons de serveurs Apache? : P – jeffkee

+0

Non, le problème est de pouvoir accéder/backups /, mon site web est stocké dans/home// – Cyclone

Questions connexes