Il est bien connu qu’on ne peut jamais être trop paranoïaque en ce qui concerne les sauvegardes système. Quand il s’agit de protéger et de préserver des données précieuses, il vaut mieux aller au-delà et s’assurer que vous pouvez compter sur vos sauvegardes en cas de besoin.
Même aujourd’hui, lorsque certains fournisseurs de cloud et d’hébergement proposent des sauvegardes automatisées pour les VPS à un coût relativement bas, vous feriez bien de créer votre propre stratégie de sauvegarde en utilisant vos propres outils afin d’économiser de l’argent et peut-être l’utiliser pour acheter un espace de stockage supplémentaire ou obtenir un VPS plus grand.
Intéressant, n’est-ce pas ? Dans cet article, nous vous montrerons comment utiliser un outil appelé Duplicity pour sauvegarder et chiffrer des fichiers et des répertoires. De plus, l’utilisation de sauvegardes incrémentielles pour cette tâche nous aidera à économiser de l’espace.
Cela dit, commençons.
Installation de l’outil de sauvegarde Duplicity sous Linux
Pour installer Duplicity dans les distributions basées sur RHEL, vous devrez d’abord activer le référentiel EPEL (vous pouvez omettre cette étape si vous utilisez Fedora lui-même).
Sur RHEL9:
subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
Sur CentOS9, AlmaLinux9, Rocky Linux9:
dnf config-manager --set-enabled crb dnf install epel-release
Sur RHEL8:
subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Sur CentOS9, AlmaLinux9, Rocky Linux9:
dnf config-manager --set-enabled powertools dnf install epel-release
Puis exécutez,
dnf install duplicity
Pour les distributions basées sur Debian telles que Ubuntu et Linux Mint.
sudo apt update sudo apt install duplicity
En théorie, de nombreuses méthodes pour se connecter à un serveur de fichiers sont prises en charge, bien que seuls ssh/scp/sftp, l’accès aux fichiers locaux, rsync, ftp, HSI, WebDAV et Amazon S3 aient été testés en pratique jusqu’à présent.
Une fois l’installation terminée, nous utiliserons exclusivement sftp dans divers scénarios, à la fois pour sauvegarder et restaurer les données.
Notre environnement de test se compose d’une RHEL8 (à sauvegarder) et d’une Debian11 (serveur de sauvegarde).
Création de clés SSH pour la connexion sans mot de passe au serveur distant
Commençons par créer les clés SSH sur notre machine RHEL et les transférer vers le serveur de sauvegarde Debian.
Si vous exécutez SSH sur un port différent, alors la commande ci-dessous suppose que le démon sshd écoute sur le port XXXXX dans le serveur Debian. Remplacez AAA.BBB.CCC.DDD par l’IP réelle du serveur distant.
ssh-keygen -t rsa ssh-copy-id [email protected] ssh-copy-id -p XXXXX [email protected]
Ensuite, vous devez vous assurer que vous pouvez vous connecter au serveur de sauvegarde sans utiliser de mot de passe :
ssh [email protected]

Maintenant, nous devons créer les clés GPG qui seront utilisées pour le chiffrement et le déchiffrement de nos données :
gpg2 --full-gen-key
Vous serez invité à saisir :
- Type de clé
- Taille de la clé
- Durée de validité de la clé
- A passphrase

Pour créer l’entropie nécessaire à la création des clés, vous pouvez vous connecter au serveur via une autre fenêtre de terminal et effectuer quelques tâches ou exécuter quelques commandes pour générer de l’entropie (sinon, vous devrez attendre longtemps pour que cette partie du processus se termine).
Une fois les clés générées, vous pouvez les répertorier comme suit :
gpg --list-keys

La chaîne mise en surbrillance en jaune ci-dessus est connue sous le nom d’ID de clé publique, et est un argument demandé pour chiffrer vos fichiers.
Création d’une sauvegarde Linux avec Duplicity
Pour commencer simplement, ne sauvegardons que le répertoire /var/log, à l’exception de /var/log/anaconda et /var/log/sa.
Comme il s’agit de notre première sauvegarde, elle sera complète. Les exécutions suivantes créeront des sauvegardes incrémentielles (à moins que nous n’ajoutions l’option full sans tirets juste à côté de duplicity dans la commande ci-dessous):
PASSPHRASE="tecmint" duplicity --encrypt-key 115B4BB13BC768B8B2704E5663C429C3DB8BAD3B --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://[email protected]//backups/rhel8 OR PASSPHRASE="YourPassphraseHere" duplicity --encrypt-key YourPublicKeyIdHere --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://root@RemoteServer:XXXXX//backups/rhel8
Assurez-vous de ne pas manquer le double slash dans la commande ci-dessus! Ils sont utilisés pour indiquer un chemin absolu vers un répertoire nommé /backups/rhel8 dans la boîte de sauvegarde où les fichiers de sauvegarde seront stockés.
Remplacez VotrePhraseDePasseIci, VotreIDDeCléPubliqueIci, et ServeurDistant par la phrase de passe que vous avez saisie précédemment, l’ID de clé publique GPG, et par l’adresse IP ou le nom d’hôte du serveur de sauvegarde, respectivement.
Votre sortie devrait être similaire à l’image suivante:

L’image ci-dessus indique qu’un total de 86,3 Mo a été sauvegardé dans un 3,22 Mo dans la destination. Passons au serveur de sauvegarde pour vérifier notre sauvegarde nouvellement créée:

A second run of the same command yields a much smaller backup size and time:

Restauration des sauvegardes Linux à l’aide de Duplicity
Pour restaurer avec succès un fichier, un répertoire avec son contenu, ou toute la sauvegarde, la destination ne doit pas exister (duplicity ne remplacera pas un fichier ou répertoire existant). Pour clarifier, supprimons le journal cron dans la boîte CentOS:
rm -f /var/log/cron
Le syntaxe pour restaurer un seul fichier depuis le serveur distant est :
PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore filename sftp://root@RemoteHost//backups/rhel8 /where/to/restore/filename
où,
- nom_fichier est le fichier à extraire, avec un chemin relatif vers le répertoire qui a été sauvegardé
- /où/restaurer est le répertoire dans le système local où nous voulons restaurer le fichier.
Dans notre cas, pour restaurer le journal principal cron depuis la sauvegarde distante, nous devons exécuter :
PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore cron sftp://[email protected]:XXXXX//backups/rhel8 /var/log/cron
Le journal cron doit être restauré à la destination désirée.
De même, n’hésitez pas à supprimer un répertoire depuis /var/log et à le restaurer en utilisant la sauvegarde :
rm -rf /var/log/mail PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore mail sftp://[email protected]:XXXXX//backups/rhel8 /var/log/mail
Dans cet exemple, le répertoire mail doit être restauré à son emplacement d’origine avec tous ses contenus.
Utilisation de la commande Duplicity
À tout moment, vous pouvez afficher la liste des fichiers archivés avec la commande suivante :
duplicity list-current-files sftp://[email protected]:XXXXX//backups/rhel8
Supprimer les sauvegardes datant de plus de 6 mois :
duplicity remove-older-than 6M sftp://[email protected]:XXXXX//backups/rhel8
Restaurer mon_fichier à l’intérieur du répertoire gacanepa tel qu’il était il y a 2 jours et 12 heures :
duplicity -t 2D12h --file-to-restore gacanepa/myfile sftp://[email protected]:XXXXX//remotedir/backups /home/gacanepa/myfile
Dans la dernière commande, nous pouvons voir un exemple de l’utilisation de l’intervalle de temps (tel que spécifié par -t) : une série de paires où chacune se compose d’un nombre suivi de l’un des caractères s, m, h, D, W, M ou Y (indiquant respectivement les secondes, minutes, heures, jours, semaines, mois ou années).
Résumé
Dans cet article, nous avons expliqué comment utiliser Duplicity, un utilitaire de sauvegarde qui fournit le chiffrement pour les fichiers et répertoires dès le départ. Je vous recommande vivement de consulter le site Web du projet duplicity pour plus de documentation et d’exemples.
Nous avons fourni une page de manuel de duplicity au format PDF pour votre confort de lecture, c’est également un guide de référence complet.
N’hésitez pas à nous faire part de vos questions ou commentaires.
Source:
https://www.tecmint.com/duplicity-create-encrypted-incremental-linux-backup/