Programmer ses backups Dotclear grâce à un script bash et CRON
Par NiKo le dimanche 22 janvier 2006, 12:16 - Dotclear
- Lien permanent -
14 commentaires -
Tags :
Si vous avez la chance de posséder un accès SSH à votre hébergement Dotclear (ou autre), voici un petit script bash permettant de sauvegarder l'intégralité des fichiers de votre blog ainsi que la base de données dans une seule et unique archive.
Le script envoie même le fichier d'export de la base de données compressée par email à l'adresse de votre choix. À l'heure des comptes GMail de 2Go, le poids et la quantité des pièces jointes ne devraient pas poser de problèmes 
Associé à une tâche CRON, ce système permet de vous assurer de toujours posséder une copie de sauvegarde de votre blog.
Prérequis : Pour utiliser la fonction d'envoi par mail de la sauvegarde SQL compressée, Mutt, le client de messagerie en ligne de commande doit être installé sur le serveur [1].
Voici le script (que vous pourrez adapter à votre convenance et à vos besoins) :
#!/bin/bash HOME="<repertoire_personnel>" # exemple : /home/users/toto DIR_BLOG="$HOME<chemin_vers_le blog>" # exemple : /public_html/dotclear DIR_BACKUP="$HOME<chemin_vers_le_repertoire_de_sauvegardes>" # exemple : /backup SQL_HOST="<votre_hôte_mysql>" SQL_USER="<votre_nom_d_utilisateur_mysql>" SQL_PASS="<votre_mot_de_passe_mysql>" SQL_BASE="<votre_base_mysql>" CURRENTDATE=$(date +%Y%m%d) MAIL_TO="<votre_adresse_email>" MAIL_SUBJECT="[$CURRENTDATE] Sauvegarde SQL" MAIL_MESSAGE="En pièce jointe la base de données en date du $CURRENTDATE" DBDUMP_FILENAME="sql$CURRENTDATE.sql" echo "Export de la base de données..." touch $DIR_BACKUP/$DBDUMP_FILENAME mysqldump -h $SQL_HOST -u $SQL_USER --password=$SQL_PASS $SQL_BASE > $DIR_BACKUP/$DBDUMP_FILENAME echo "Compression de l'export..." tar czf $DIR_BACKUP/$DBDUMP_FILENAME.tar.gz $DIR_BACKUP/$DBDUMP_FILENAME echo "Création de l'achive globale..." tar czf $DIR_BACKUP/puc$CURRENTDATE.tar.gz $DIR_BLOG $DIR_BACKUP/$DBDUMP_FILENAME.tar.gz echo "Envoi de la sauvegarde MySQL par email à $MAIL_BACKUP..." echo $MAIL_MESSAGE | mutt -s $MAIL_SUBJECT -a $DIR_BACKUP/$DBDUMP_FILENAME.tar.gz $MAIL_TO echo "Suppression des fichiers tempporaires..." rm -f $DIR_BACKUP/$DBDUMP_FILENAME rm -f $DIR_BACKUP/$DBDUMP_FILENAME.tar.gz echo "Sauvegarde effectuée dans $DIR_BACKUP/puc$CURRENTDATE.tar.gz"
Personnellement, j'ai stocké ce script dans un dossier bin à la racine de mon répertoire personnel et l'ai nommé backup.sh et lui ai attribué les droits d'utilisation pour l'utilisateur courant (moi) :
$ chmod u+x ~/bin/backup.sh
On peut tester le script en l'executant :
$ ~/bin/backup.sh
Il est également possible de plannifier l'execution de ce script à intervalle régulière ; par exemple tous les dimanches à 23h00. Pour cela, il faut éditer notre fichier crontab :
$ crontab -e
Dans l'éditeur (généralement, Vi), ajoutez cette ligne [2] :
0 23 * * 0 ~/bin/backup_puc.sh
Vous noterez que le script est assez brut de décoffrage, notamment en ce qui concerne la gestion d'erreurs (absente). N'hésitez pas à proposer vos suggestions en commentaire 
14 commentaires (Ajouter un commentaire)
NiKo> suggestion postée en tb
Voili, voilou ...
gmail via GmailFS pour être une bonne idée non ? En même temps on ne sait pas vraiment combien de temps Google laissera faire de ses serveurs des disques virtuels...
L'idée derrière tout ça est bien évidemment d'avoir un lieu de stockage décentralisé. J'aime bien GMail parcequ'on peut y gérer des labels et des règles automatiques. Mais on pourrait imaginer le même genre de script fonctionnant avec un service de stockage en ligne... Suggestions bienvenues.
Oui c'est vrai
Le souci est de générer de l'encapsulation au format MIME et non juste uuencodé.
AMHA, le mail n'est pas la solution. Bien que l'on dispose de beaucoup d'espace en termes de stockage, on est par exemple limité par la taille maxi des messages. Je suis en train de mettre au point une solution de sauvegarde utilisant FTP (pages perso de free -> 1Go
).
Mais je sais, cela ne répond pas à la question
Talou & Chris > Non justement, j'ai bien tenté ça mais ça m'envoie un mail avec le corps de la pièce jointe en texte brut, du genre :
C'est indispensable le base64 ? Un bête
devrait suffir, non ?
> Ba c'est déjà un tar.gz de tout le blog, images comprises donc.
Ouppss.. effectivement..désolé..
Ba c'est déjà un tar.gz de tout le blog, images comprises donc.
Sinon pour le restore, un
tar xvzfde l'archive (qui contient aussi le tar.gz de la base sql... Tu as raison, je vais écrire le script qui le fait automatiquement.ahhh..c'est vrai qu'un ptit backup régulier c'est utile..
merci Niko..
Comment on restaure ? avec un : mysql -u USER -p PASS BASEDEDONNEE < backup As tu déjà testé un restore ?
Sinon pour améliorer le script, on pourait ajouter un tar.gz des répertoires (pour les images etc...) ?
Sinon ya des hebergeurs qui te font une backup automatisée et reguliere de tes bases de données, c'est quand meme plus classe et ca necessite pas de shell
Ouaip. L'idée était à la base d'éviter de passer par PHP, mais pourquoi pas.
Pour ce qui est de l'encodage en base 64 voivi une solution en PHP basé sur MD5
Tu dois pouvoir facilement le porter en Perl
Ca y est, je crois à la télépathie !
Ce WE, je réfléchissais au meilleur moyen de sauvegarder mon environnement (blog, fichiers de conf DNS, Postfix, LDAP, mes mails etc).
Et ... pan, NiKo pond cet article !
Allez, je trackbak-e dès que j'ai des choses à ajouter, promis et ... merci pour l'aspect DotClear
La discussion continue ailleurs
Script shell de sauvegarde automatique de comptes web
Cet article présente la réalisation d'un script shell permettant de sauvegarder tous les comptes web d'un serveur et de les transférer par FTP sur un serveur distant.
Programmer ses backups Dotclear grâce à un script bash et CRON
Si vous avez la chance de posséder un accès SSH à votre hébergement Dotclear (ou autre), voici un petit script bash permettant de sauvegarder l'intégralité des fichiers de votre blog ainsi que la base de données dans une seule et unique archive.
Une save ? Quelle save ?
A l'image de NiKo, la sauvegarde de mon environnement me titille depuis quelques jours. Le tout dans le même contexte que NiKo à savoir un accès SSH disponible sur mon environnement. Mes objectifs : sauvegarde régulière (mensuelle,...
Sauvegardes externalisées...
Qui n'a jamais pesté pour ne pas avoir fait de sauvegarde de sa base de ses données et n'a pas perdu totu ou partie de son labeur... J'ai moi même eu l'occasion de le faire il n'y a pas si longtemps que ça... ! ALors que ça fait partie de mon...