Sauvegardes incrémentales avec Duplicity vers un Qnap TS-219 PII sous Debian Wheezy

Suivez-moi aussi sur Identi.ca ou sur Twitter.

Après l’installation de Debian Wheezy sur mon Qnap TS-219 PII, j’ai décidé d’utiliser le programme duplicity pour réaliser des sauvegardes incrémentales des données de mes postes de travail, rdiff-backup dont j’ai déjà parlé n’étant plus maintenu depuis un long moment (1).Je voulais en effet que la fréquence de la sauvegarde soit assez courte, de l’ordre de la demi-heure. Les sauvegardes incrémentales s’avèrent parfaitement adaptées à ce type d’utilisation, d’où le choix de ce programme.

Proposed Debian Logo

Installation

J’ai procédétrès simplement , en installant duplicity sur mes deux stations de travail, les deux sous Debian Wheezy :

# apt-get update && apt-get install duplicity

Configuration

Sur le serveur Qnap TS-219 PII également sous Debian Wheezy, j’ai créé des répertoires avec le chemin suivant :  /backups/{fixe,portable}

Au niveau des postes clients, j’utilise la crontab des utilisateurs concernés pour lancer duplicity. La commande suivante permet d’éditer la crontab de l’utilisateur courant (si un message vous indique que vous n’avez pas le droit d’utiliser la crontab, il faut ajouter l’utilisateur en question dans /etc/cron.allow) :

# crontab -e

Puis j’ajoute les lignes suivantes :

*/30 * * * * duplicity remove-older-than 1M –force ssh://root@mynas//backups/fixe >> /var/log/duplicity.log 2>&1 && duplicity –no-encryption /home/user ssh://root@mynas//backups/fixe >> /var/log/duplicity.log 2>&1

0 0 * * 1 duplicity full –no-encryption /home/user ssh://root@mynas//backups/fixe >> /var/log/duplicity.log 2>&1

La première commande de la première ligne lance la suppression des données qui sont plus vieilles qu’un mois. C’est une durée de rétention qui me paraît suffisamment longue, mon but n’étant pas de faire de l’archivage mais de la sauvegarde. C’est à voir en fonction de vos besoins et de votre capacité de stockage. La seconde commande de la première ligne permet la sauvegarde en elle-même;

La seconde ligne indique de procéder à une sauvegarde complète tous les lundis à 00:00 , et ce afin que la commande chargée du nettoyage des sauvegardes dont l’âge est supérieur à un mois s’exécute bien [merci à mes lecteurs pour ce rajout].

Veillez à ce que votre fichier /var/log/duplicity soit bien accessible par l’utilisateur qui lance la commande duplicity.

Gérer la rotation des journaux

Afin de faire propre il faut également configurer logrotate pour que votre fichier ne grossisse pas démesurément. Il faut créer le fichier /etc/logrotated.d/duplicity et y ajouter le contenu suivant :

/var/log/duplicity.log {
 rotate 7
 daily
 compress
 missingok
}
debian-logo

Je garde une semaine de journaux afin de pouvoir identifier la cause d’une éventuelle erreur empêchant les sauvegardes de s’effectuer.

Chiffrement

Il s’agit donc d’un mécanisme très simple de sauvegarde de vos données vers un ordinateur tierce, ici le Qnap TS-219 PII. Duplicity offre une très intéressante option, la possibilité de chiffrer vos données avec une clé GPG. À moins d’être un bot et d’effectuer vous-même vos sauvegardes, la partie automatisation de cette tâche vous intéressera.

Pour l’utiliser vous devez accorder une confiance suffisante à la clé GPG que vous utilisez pour chiffer et/ou signer. Si vous souhaitez signer votre sauvegarder vous devrez exporter à l’intérieur de votre script la variable PASSPHRASE contenant phrase de passe de votre clé GPG. Vous pouvez également utiliser l’agent GPG. Au niveau de la ligne de commande, il suffira de rajouter l’option –encrypt-key pour préciser la clé de chiffrement et/ou –sign-key pour la clé utilisée pour signer la sauvegarde.

Restauration des données

Comme il est toujours bon de vérifier la restauration des données dans la mise en place d’un système de sauvegarde, nous nous positionnons dans /tmp et passons la commande suivante pour restaurer le répertoire documents présents sur notre serveur :

$ duplicity –no-encryption –file-to-restore documents  ssh://root@mynas//backups/fixe /tmp/documents

Nous précisons de ne pas chercher à déchiffrer quoique ce soit avec l’option –no-encryption puisque nous n’avons pas chiffré pendant la sauvegarde. Nous utilisons l’option –file-to-restore afin de choisir quel répertoire ou fichier nous souhaitons restaurer, puis nous précisons la source de nos données et en dernier argument le répertoire où sauver les données. Plusieurs choses à noter :

  • l’option –no-encryption est nécessaire sinon il vous sera demandé une phrase de passe et la restauration échouera tant que vous ne rentrerez pas quelque chose.
  • plusieurs erreurs bizarres (exceptions PythonCollectionsError: No backup chains found)sont survenues quand je tatonnais pour trouver le bon chemin en définissant ma source. Mais une fois que j’ai identifié la bonne syntaxe, plus d’erreurs et le shell rend la main silencieusement en ayant accompli le travail
  • si vous précisez un répertoire ou un fichier de sortie qui existe déjà, la restauration échoue pour éviter d’écraser quoique ce soit.

En conclusion, je suis plutôt content de cette solution de sauvegarde. Le serveur de sauvegarde est discret et plutot silencieux (comme décrit dans l’article plus haut) et la solution de sauvegardes incrémentales est flexible et facilement configurable.

Et vous ? Utilisez-vous Duplicity ou un autre programme pour réaliser vos sauvegardes incrémentales ? N’hésite pas à laisser votre témoignages dans les commentaires.

(1) : quoique la liste de diffusion de rdiff-backup s’est  remise à bouger , à voir dans les prochains mois


Vus : 4477
Publié par Carl Chenet : 277