Faire un backup de son blog sur Amazon S3

On utilise Amazon S3 depuis 3 mois pour les fichiers statiques de 64k. Il s’agit d’un service d’hébergement très performant et bon marché utilisant l’infrastructure de serveurs d’Amazon. Mais S3 sert également à faire des backups, ce qui nous intéresse plus particulièrement dans ce billet.

J’avais déjà vu cet article de Paul Stamatiou qui explique comment faire un backup de son site avec ce service, mais je n’avais pas vraiment pris le temps de tester. Je suis tombé sur un billet de Christina Warren qui m’a décidé, puisqu’il décrit toute la procédure pour faire un backup d’un (gs) Grid-Service de Media Temple sur Amazon S3. Justement le même hébergement que 64k.
La procédure devrait également fonctionner si votre hébergement dispose d’un accès SSH et de Ruby On Rails, mais elle est principalement destinée aux (gs) Grid-Service. Mais bon comme presque tout le monde en a un ^-^

Pour commencer, connectez-vous en SSH à votre serveur :

ssh serveradmin%monblog.com@monblog.com

Récupérez S3Sync avec wget :

wget http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz

Décompressez l’archive

tar xvzf s3sync.tar.gz

Excécutez cette série de commande :

rm s3sync.tar.gz
cd s3sync
mkdir certs
cd certs
wget http://mirbsd.mirsolutions.de/cvs.cgi/~checkout~/src/etc/ssl.certs.shar
sh ssl.certs.shar
cd ..
mkdir s3backup

Cela va supprimer l’archive, créer les différents dossiers et mettre en place les certificats SSL nécessaires à S3.

Maintenant il faut aller dans le dossier /users/.home/s3sync que vous venez de créer et éditer le fichier s3config.yml.sample avec vos aws_access_key et aws_secret_access_key.

aws_access_key_id: XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ssl_cert_dir: /home/XXXXX/users/.home/s3sync/certs
AWS_CALLING_FORMAT: SUBDOMAIN

ssl_cert_dir correspond au chemin vers votre dossier SSL, c’est-à-dire /home/xxxxx/users/.home/s3sync/certs où xxxx est le nom de votre serveur. Vous pouvez connaitre ce dernier en tapant pwd en mode console. Il faut également ajouter cette ligne : AWS_CALLING_FORMAT: SUBDOMAIN.
Sauvez ce fichier et renommer le en s3config.yml.

Editez le fichier s3config.rb et remplacer la ligne avec confpath = [xxxxx] par

confpath = ["./", "#{ENV['S3CONF']}", "#{ENV['HOME']}/.s3conf", "/etc/s3conf"]

Maintenant téléchargez le script backup_server.sh et modifiez-le avec vos paramètres (le dossier de votre blog à sauvegarder, le nom de votre serveur à la place de xxxxx, vos paramètres MySQL, le nom de votre bucket S3, etc).

Placer ce fichier dans le dossier /data et modifier ses permissions (755) :

chmod a+x backup_server.sh

Vous pouvez maintenant testez le script :

cd data
./backup_server.sh

Si tout fonctionne vous devriez trouver les backups sous forme d’archive gzip sur votre bucket Amazon S3.

Backup Amazon S3

Backup Amazon S3

Pour peaufiner le tout, il ne reste plus qu’à configurer une tâche journalière qui va s’occuper de faire ça automatiquement. Il faut vous rendre dans l’interface de votre (gs) Grid-System et cliquer sur Cron Jobs. Le chemin de votre est script est :

/home/xxxxx/data/backup_server.sh

Et voilà, votre blog sera désormais sauvegardé chaque jour !

11 commentaires

11 commentaires


  1. 1. Le 28 juillet 2008 à 12:56  par Marin

    J’imagine que tu dois encore supprimer les anciens backups à la main sinon tes archives auront une taille monstre (et tu devras payer un peu plus pour ton S3).

    Pour l’instant, je ne backupe que mes db’s via WordPress Database Backup http://www.ilfilosofo.com/blog/wp-db-backup et mon themes et autre a chaque fois qu’il y a une nouvelle version de WP

  2. 2. Le 28 juillet 2008 à 12:58  par Ced

    @marin: Non il écrase à chaque fois l’ancien backup

  3. 3. Le 28 juillet 2008 à 19:50  par Marin

    Donc si ton blog est corrompu pendant que tu fais une semaine sans écran, tu n’auras pas de backup correct :(

  4. 4. Le 28 juillet 2008 à 20:23  par Vinch

    @Marin : ce serait quand même pas de bol que le backup soit corrompu pile au moment où tu en as besoin. Je vais configurer ce machin là aussi, ça peut servir car j’ai pas de bol pour l’instant de ce point de vue là…

  5. 5. Le 29 juillet 2008 à 9:33  par Ced

    @Marin: sinon comme on peut configurer jusque 5 cron, il suffit de mettre 5 scripts et un au lundi, un au mardi, etc lol

  6. 6. Le 9 août 2009 à 18:30  par guymauve

    Salut Ced,

    Je m’intéresse à une solution de ce type pour mes 3 sites. (j’en ai marre de servage)

    Est-ce possible de sauvegarder les fichiers statiques mais aussi la db ?

    Merci d’avance.

  7. 7. Le 9 août 2009 à 22:47  par Ced

    Oui ce tuto fait un backup des fichiers et des db. Mais depuis j’ai changé d’hébergeur, je te déconseille Media Temple qui vraiment trop lent. Comme mon hébergeur actuel (all2all) ne propose pas d’accès SSH, je ne sais plus utiliser cette technique. Le tuto est assez spécifique à Media Temple, je ne te garanti pas que ça fonctionne chez un autre hébergeur. Il faut au minimum avoir un accès SSH et Ruby on Rails.

  8. 8. Le 9 août 2009 à 23:39  par guymauve

    Dac merci de l’info.

    Perso je suis sur du dédié chez OVH et c’est le bonheur pour l’instant.

  9. 9. Le 10 août 2009 à 9:27  par Ced

    En dédié alors c’est possible

  1. 1 Le blog de Vincent Battaglia » En vrak - 82 Notification du 17 août 2008 à 19:52
  2. 2 Le blog de Vincent Battaglia » En vrak - 82 Notification du 17 août 2008 à 19:52

Ajouter un commentaire