duplicity, un utilitaire de sauvegarde en ligne de commande

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.

Exemple simple

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

Exemple un peu plus élaboré avec mot de passe

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
unset permet d'effacer la phrase de passe de la mémoire vive.

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

Sauvegarde incrémentale toutes les semaines et complète tous les mois

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"

Effacer les sauvegardes les plus anciennes

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"

Obtenir la liste des fichiers sauvegardés

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)
L'option –verbosity permet de rendre duplicty plus bavard et savoir un peu ce qu'il fait

Restaurer la sauvegarde

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)

Restaurer un fichier particulier

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.

Voir aussi

  • duplicity.txt
  • Dernière modification: Le 14/02/2024, 10:03
  • par 82.65.139.74