1. Sauvegardes standards non-incrémentés
Tout d'abord, vous devez configurer les clefs publiques et privées pour ssh. Voici comment faire:
Sur le serveur sur lequel vous envoyez vos sauvegardes (nous le nommerons backup-server), généré la paire de clefs publique et privée, avec une phrase secrète vide. Vous pouvez effectuer cela en utilisant:
ssh-keygen -t rsa
Ensuite téléversez la clef publique qui est située dans .ssh/id_rsa.pub sur le serveur de sauvegarde (backup-server), et mettez la sur le VPS dans:
/root/.ssh/authorized_keys2
vérifiez sur le serveur de sauvegarde que vous pouvez vous connecter en ssh sur le VPS sans devoir entrer aucun mot de passe. Ensuite installer rsync sur chacun des serveurs avec apt-get install rsync. Depuis le serveur de sauvegarde, vous devez pouvoir taper:
rsync --delete -e ssh -azvp hostname-of-vps.com:/var/www /local/destination
avec /local/destination étant votre chemin de destination local sur le serveur de sauvegarde.
Le mieux est alors de faire une sauvegarde automatique de toutes vos bases de données en utilisant un petit script sur le VPS. Quelque chose comme éa devrait pouvoir le faire:
#!/bin/bash
pushd /var/www
mysqldump -c --all-databases >backup.sql
gzip backup.sql
popd
2. Utilisation de automysqlbackup pour sauvegarder vos bases de données
Vous pouvez utilisez automysqlbackup pour effectuer une sauvegarde quotidienne de vos bases de données. Vous trouverez ce script sur sourceforge, il est d'ailleurs relativement simple à comprendre, nous n'allons donc pas nous étendre sur son fonctionnement. Juste une précision, nous utiliserons /var/www/sql_backup comme destination nous avons donc juste besoins de sauvegarder l'intégralité de /var/www soit tout ce qui est inclus dans la sauvegarde de rsync, incluant les exportations de bases de données.
Sauvegardes incrémentées en utilisant dirvish:
Premièrement, créez un utilisateur dirvish sur le serveur que vous voulez sauvegarder. Ce serveur DOIT avoir les droits pour pouvoir exécuter rsync, donc éditez /etc/sudoers et ajouter une ligne comme celle-ci:
dirvish ALL = NOPASSWD: /usr/bin/rsync
ensuite depuis le serveur de sauvegarde, vous aurez besoins d'accéder à ce fichier. En root, sur le serveur de sauvegarde, générez une clef avec ssh-keygen (la façon de faire est décrite ci-dessous), avec une phrase secrète vide. copiez le résultat .ssh/id_rsa.pub dans le fichier /home/dirvish/.ssh/authorized_keys2 du serveur de sauvegarde. Ensuite essayez de vous logger, le terminal ne devrait vous demander aucun mot de passe.
Ensuite, installez dirvish sur le serveur de sauvegarde (lé oé sont stockées les sauvegardes):
apt-get install dirvish
Puis éditez /etc/dirvish/master.conf avec un contenu comme celui-ci:
bank:
/backup
index: text
exclude:
lost+found/
/proc
/sys
/etc/mtab
/var/cache/apt
core
*~
.nfs*
/tmp/*
Runall:
host1.example.com
host2.example.com
image-default: m%d
expire-default: +7 days
rsh: ssh -o "BatchMode yes" -o "StrictHostKeyChecking no"
La séquence bank: est le chemin oé vous stockez vos sauvegardes. Il peut y en avoir plus d'un. Runall: correspond à ce que vous avez sauvegarder. Ce peut être ce que vous voulez. Pour chacune des lignes du runall, vous devez créer un répertoire. Pour cet exemple vous aurez besoins, pour les créer, d'exécuter les commandes suivantes:
mkdir -p /backup/host1.example.com/dirvish
mkdir -p /backup/host2.example.com/dirvish
Aprés cd dans le premier répertoire et éditez default.conf. Ajoutez ce qui suit au fichier:
rsync-client: sudo rsync
client: dirvish@node0103.gplhost.com
tree: /var/www/sites
Maintenant vous êtes presque prét. Vous devez juste initialiser la première sauvegarde (ce qui peut prendre du temps). Faite ceci avec cette simple commande:
dirvish --vault host1.example.com --init
Cela va créer la première sauvegarde de rsync, c'est pour cela que ce peut étre long. Soyez donc patient. Une fosi fait, vous n'avez rien d'autre à faire. Le paquet de dirvish inclus déjà les tables cron pour exécuter les tâches suivantes.
Et c'est tout, c'est cool! Assez simple, non?