Aperçu
Bien que Vultr dispose d'un système de sauvegarde pour les images système entières, cela fonctionne au niveau du bloc et nécessite que la sauvegarde soit restaurée sur une machine virtuelle avant de pouvoir restaurer les données. De plus, les sauvegardes ne sont stockées que pendant une courte durée et ne fournissent pas une véritable solution de sauvegarde incrémentielle.
Enter Duplicity - Duplicity s'appuie sur la légendaire rsync et offre la possibilité de stocker des sauvegardes incrémentielles ainsi que de chiffrer les données au repos via GPG. Il est compatible Posix et transfère uniquement les deltas entre les exécutions de sauvegarde, réduisant ainsi les besoins globaux en bande passante.
Configuration de l'environnement
Terminologie
- Hôte source - Serveur dont les données seront sauvegardées. Pour ce tutoriel, il a l'adresse IP: 10.1.10.1
- Hôte de sauvegarde - Serveur de destination pour les sauvegardes. Pour ce tutoriel, il a l'adresse IP: 10.1.10.2
- / backupdir - Répertoire source sur l'hôte source utilisé pour les sauvegardes dans ce didacticiel. Vous pouvez modifier cela en fonction de votre environnement.
- / destdir - Répertoire de destination sur l'hôte de sauvegarde utilisé pour les sauvegardes dans ce didacticiel. Vous pouvez modifier cela en fonction de votre environnement.
- Sauvegarde complète - Copie complète de l'ensemble de données source.
- Sauvegarde incrémentielle - Copie de toutes les modifications apportées depuis la dernière sauvegarde.
Installation de Duplicity
Ubuntu 14.04:
sudo apt-get update
sudo apt-get install duplicity python-paramiko
CentOS (nécessite EPEL):
sudo yum install duplicity python-paramiko
Ubuntu 12.04 / Debian 7:
sudo apt-get update
sudo apt-get install ncftp python-paramiko python-pycryptopp lftp python-boto python-dev librsync-dev
wget https://launchpad.net/duplicity/0.7-series/0.7.02/+download/duplicity-0.7.02.tar.gz
tar xzvf duplicity*
cd duplicity*
sudo python setup.py install
Nous devons installer à partir des sources car le paquet Duplicity dans Debian 7 et Ubuntu 12.04 est cassé en raison d'un changement dans la bibliothèque SSH backend.
Vérifiez que Duplicity est installé en exécutant:
duplicity -v
Il doit renvoyer la sortie suivante (la version peut être différente):
duplicity 0.6.18
Configuration de l'authentification sans clé pour SSH
L'étape suivante consiste à configurer l'authentification basée sur certificat pour SSH entre l'hôte de sauvegarde et l'hôte source. Cela permettra au serveur source de SSH dans l'hôte de sauvegarde sans saisir de phrase secrète. Vultr a un excellent article qui explique comment procéder: Comment générer des clés SSH .
Sauvegardes
Exécution de la première sauvegarde (complète)
Lançons une sauvegarde complète! Cela enverra une copie complète des données du serveur source à la destination.
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Vous pouvez ajouter des dossiers supplémentaires en incluant plusieurs --include="[dir]"
instructions.
Le --no-encryption
spécifie que les données ne doivent pas être chiffrées à destination. Les données seront chiffrées pendant le transport lors de leur passage dans le tunnel SSH.
L' --exclude="**" /
option est une astuce pour sauvegarder tout ce qui se trouve uniquement dans la liste d'inclusion (et rien d'autre).
Exécution d'une sauvegarde incrémentielle
L'exécution d'une sauvegarde incrémentielle est très simple - il suffit de changer l' full
indicateur en incremental
indicateur.
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Automatisation
Écrire des scripts automatisés
Devoir exécuter ces commandes chaque fois que vous avez besoin d'une sauvegarde est un problème - et si nous avions des scripts pour le gérer pour nous?
Script de sauvegarde complète
Exécutez la commande.
nano /usr/local/bin/backup-full
Ajoutez le contenu suivant.
#!/bin/bash
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Script de sauvegarde incrémentielle
nano /usr/local/bin/backup-incremental
Ajoutez le contenu suivant.
#!/bin/bash
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Rendre les scripts exécutables
Pour rendre les scripts exécutables, exécutez la commande suivante.
chmod +x /usr/local/bin/backup-*
Vous pouvez maintenant effectuer une sauvegarde en exécutant backup-full
et à backup-incremental
partir du shell. Plutôt cool!
Configuration de cron
Rendons les sauvegardes automatiques! En configurant cron pour exécuter les scripts ci-dessus à des moments spécifiés, nous pouvons nous assurer que les sauvegardes sont effectuées à intervalles réguliers.
Exécutez la commande suivante.
crontab -e
Ajoutez ce qui suit au bas du fichier.
10 01 * * 1,2,3,4,5,6 backup-incremental
10 01 * * 7 backup-full
Cela exécutera une sauvegarde complète tous les dimanches à 1 h 10 et exécutera également des sauvegardes incrémentielles tous les deux jours à 1 h 10.
Restauration
Godzilla a détruit Seattle et nous devons pouvoir récupérer les données du VPS de sauvegarde à New York!
duplicity --no-encryption --file-to-restore / ssh://user@backupserver:22/destdir/
Si nous devons restaurer des données d'il y a 3 jours:
duplicity --no-encryption -t 3D --file-to-restore / ssh://user@backupserver:22/destdir/
L' -t 3D
option signifie restaurer une sauvegarde d'il y a trois jours. Des options similaires comme -t 1M
(il y a un mois) ou -t 5H
(il y a 5 heures) fonctionnent également.