L'utilitaire duplicity
est un outil en ligne de commande permettant d'effectuer des sauvegardes incrémentielles de fichiers et dossiers.
Il effectue la sauvegarde en créant des archives TAR chiffrées avec GnuPG. Ces archives sont alors envoyées dans un répertoire de sauvegarde local ou distant – les protocoles distants pris en charge sont FTP, SSH/SCP, Rsync, WebDAV/WebDAVs et Amazon S3. Puisque duplicity
repose sur librsync
, les sauvegardes incrémentielles sont économes en espace de stockage : seules les parties modifiées des fichiers sont prises en considération.
Duplicity est installé par défaut sur Ubuntu, en effet cette version de la distribution inclut le logiciel Déjà Dup, qui est une interface graphique pour duplicity.
Pour installer Duplicity sur une variante d'Ubuntu, il suffit d'Installer le paquet duplicity.
Un exemple simple de copie de sauvegarde du dossier personnel d'un utilisateur (/home/utilisateur/
) vers un dossier local backup/
dans un disque dur externe monté en /media/DisqueExterne/
(/media/DisqueExterne/backup/
):
utilisateur@ordinateur:~$ duplicity --no-encryption /home/utilisateur /media/DisqueExterne/backup
Dans l'exemple suivant, la sauvegarde sera chiffrée avec une phrase de passe (qu'il ne faut surtout pas oublier !!) et enregistrée sur un disque externe. Les répertoires "–exclude" ne seront pas sauvegardés.
usr@pc:~$ PASSPHRASE="PHRASE DE PASSE POUR LE CHIFFRAGE" usr@pc:~$ export PASSPHRASE usr@pc:~$ duplicity --volsize 50 --exclude "/home/$USER/Téléchargements" --exclude "/home/$USER/.local/share/Trash" /home/$USER "file:///media/DisqueExterne/backup" usr@pc:~$ unset PASSPHRASE
Ne pas oublier de nettoyer aussi le fichier .bash_history qui peut contenir la phrase de passe en clair.
Par exemple avec :
usr@pc:~$ sed -i '/^PASSPHRASE=.*/d' /home/usr/.bash_history;
Alternatives :
# - ne pas oublier l'espace au début de la ligne pour dire à bash de ne pas stocker la ligne dans l'historique # - PASSPHRASE ne sera connu que pour cette execution de duplicity usr@pc:~$ PASSPHRASE="PHRASE DE PASSE POUR LE CHIFFRAGE" duplicity --volsize 50 --exclude "/home/$USER/Téléchargements" --exclude "/home/$USER/.local/share/Trash" /home/$USER "file:///media/DisqueExterne/backup" # si vous souhaitez garder la ligne de sauvegarde dans l'historique usr@pc:~$ PASSPHRASE="$(head -1)" duplicity --volsize 50 --exclude "/home/$USER/Téléchargements" --exclude "/home/$USER/.local/share/Trash" /home/$USER "file:///media/DisqueExterne/backup" # vous ne voulez pas montrer le mot de passe ? usr@pc:~$ stty -echo; PASSPHRASE="$(head -1)" duplicity --volsize 50 --exclude "/home/$USER/Téléchargements" --exclude "/home/$USER/.local/share/Trash" /home/$USER "file:///media/DisqueExterne/backup"; stty echo
Une sauvegarde complète consiste à sauvegarder tous les répertoires dans leur intégralité. Une sauvegarde incrémentale est plus économe en volume de stockage car, à partir d'une première sauvegarde complète, elle se contente de sauvegarder les différences. Toutefois il faut de temps en temps remettre la base de données à jour. Dans l'exemple suivant c'est tous les mois :
usr@pc:~$ duplicity --no-encryption --full-if-older-than 1M /home/$USER "file:///media/DisqueExterne/backup"
Au bout d'un certain temps, les sauvegardes anciennes ne sont plus utiles. On peut donc les supprimer. Dans l'exemple suivant, les sauvegardes âgées de plus d'une année sont supprimées :
usr@pc:~$ duplicity remove-older-than 1Y --no-encryption /home/$USER "file:///media/DisqueExterne/backup"
usr@pc:~$ duplicity --no-encryption list-current-files --verbosity 8 file:///media/DisqueExterne/backup
ou
usr@pc:~$ PASSPHRASE="PHRASE DE PASSE POUR LE CHIFFREMENT" usr@pc:~$ export PASSPHRASE usr@pc:~$ duplicity list-current-files ${disqueDeSauvegarde}/RepPerso usr@pc:~$ usr@pc:~$ unset PASSPHRASE sed -i 's/PASSPHRASE="PHRASE DE PASSE POUR LE CHIFFREMENT"//g' /home/usr/.bash_history; sed -i '/^$/d' .bash_history)
usr@pc:~$ duplicity restore --verbosity 8 --no-encryption --file-to-restore /home/utilisateur file:///media/DisqueExterne/backup
ou
usr@pc:~$ PASSPHRASE="PHRASE DE PASSE POUR LE CHIFFREMENT" usr@pc:~$ export PASSPHRASE usr@pc:~$ duplicity restore --verbosity 8 --file-to-restore home/usr/ file:///media/DisqueExterne/backup usr@pc:~$ usr@pc:~$ unset PASSPHRASE sed -i 's/PASSPHRASE="PHRASE DE PASSE POUR LE CHIFFREMENT"//g' /home/usr/.bash_history; sed -i '/^$/d' .bash_history)
On souhaite restaurer le fichier MonTexte.odt situé dans le répertoire /home/usr/Documents/Textes dans sa dernière version. Cette restauration portera le nom de MonTexteRestaure.odt :
usr@pc:~$ duplicity restore --verbosity 8 --no-encryption --file-to-restore Documents/Textes/MonTexte.odt file:///media/DisqueExterne/backup /home/usr/Documents/Textes/MonTexteRestaure.odt
Si je souhaite que la version restaurée soit la version d'il y a 3 jours (3D) :
usr@pc:~$ duplicity restore -t 3D --verbosity 8 --file-to-restore Documents/Textes/MonTexte.odt file:///media/DisqueExterne/backup /home/usr/Documents/Textes/MonTexteRestaure.odt
Déjà Dup (prononcer dé-ja-doop) est un utilitaire de sauvegarde très simple. Interface graphique pour l'outil duplicity
, Déjà Dup a pour but de cacher les complexités relatives à une bonne façon d'effectuer des copies de sauvegarde (chiffrement, sauvegardes locales ou en réseau, fréquence de la prise des sauvegardes…) pour se concentrer sur l'essentiel : effectuer des sauvegardes de votre système et de vos données personnelles de manière sécuritaire, complète et fiable.