Le labo

Bidouilles et prises de notes en vrac

Accueil > Docs > Backup simple du VPS des tydebs

Backup simple du VPS des tydebs

mercredi 22 juillet 2015, par b_b

La machine en question ne dispose que de 40Go d’espace disque, du coup on est trop juste pour appliquer nos scripts de backup habituels.

Le nouvelle méthode se base sur un script unique qui reprend le fonctionnement du script précédent pour la sauvegardes des bases SQL et qui utilise rsync pour la sauvegarde des fichiers des sites.

Les sauvegardes sont effectuées sur un hébergement mutualisé d’OVH.

Mise en place des clés SSH

Afin de permettre à rsync de se connecter au serveur de backup, on va mette en place des clés SSH sur celui-ci. [1]

Depuis le serveur de production, logué en tant que root, générez une clé RSA (sans préciser de passphrase) et affichez son contenu :

ssh-keygen -t rsa -b 2048
cat ~/.ssh/id_rsa.pub

Copiez le contenu de la clé et loguez-vous sur le serveur de backup en ssh.

À la racine de l’hébergement mutualisé, créez un répertoire .ssh et appliquez lui les droits suffisants :

mkdir .ssh
chmod 700 .ssh

Créez le fichier contenant les clés autorisées et collez-y le contenu de la clé copiée depuis le serveur de production :

nano .ssh/authorized_keys

Puis, réglez les droits du fichier en question :

chmod 644 .ssh/authorized_keys

Et voilà, vous pouvez utiliser rsync depuis votre serveur de production vers le serveur de backup sans avoir à entrer de mot de passe.

Script de backup

Voici le script que j’utilise pour envoyer les sauvegardes vers le répertoire state situé à la racine du serveur de backup :

https://gist.github.com/brunob/2861a663967ba5796d89

Ce que fait le script :

  • sauvegarde de toutes les bases de données dans un sous répertoire de /var/state (à créer s’il n’existe pas)
  • synchronisation du répertoire /var/www en excluant les répertoires tmp/ et local/ des sites SPIP hébergés
  • synchronisation du répertoire /etc/apache2/sites-available pour sauvegarder les vhosts d’Apache
  • transfert des dumps SQL avec lftp puis suppression de l’ancienne archive sur le serveur de backup et en local

Notez la subtilité lftp -u ${user_ftp},dumb dans la commande lftp, qui permet de passer un mot de passe "bidon" à lftp afin qu’il utilise notre clé SSH pour l’identification (au lieu d’afficher une demande de mot de passe). Ainsi on ne stocke pas de mot de passe dans le script.