Recherche de site Web

Duplicity – Créer des sauvegardes incrémentielles cryptées sous Linux


L’expérience montre qu’on ne peut jamais être trop paranoïaque à propos des sauvegardes du système. Lorsqu'il s'agit de protéger et de préserver des données précieuses, il est préférable de faire un effort supplémentaire et de vous assurer que vous pouvez compter sur vos sauvegardes si le besoin s'en fait sentir.

Même aujourd'hui, alors que certains fournisseurs de cloud et d'hébergement proposent des sauvegardes automatisées pour les VPS à un coût relativement faible, 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 ensuite de l'utiliser pour acheter du stockage supplémentaire ou obtenez un plus gros VPS.

Ça a l'air intéressant? Dans cet article, nous allons vous montrer 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) :

yum update 
yum install epel-release
OR
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Alors cours,

yum install duplicity

Pour Debian et ses dérivés :

sudo apt update 
sudo apt install duplicity

En théorie, de nombreuses méthodes de connexion à un serveur de fichiers sont prises en charge, même si seuls ssh/scp/sftp, l'accès aux fichiers locaux, rsync, ftp, HSI, WebDAV et Amazon S3 ont é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 est constitué d'un boitier RHEL 8 (à sauvegarder) et d'une machine Debian 11 (serveur de sauvegarde).

Création de clés SSH pour une connexion sans mot de passe au serveur distant

Commençons par créer les clés SSH dans notre box RHEL et les transférer sur le serveur de sauvegarde Debian.

Si vous exécutez SSH sur un autre port, la commande ci-dessous suppose que le démon sshd écoute sur le port XXXXX du serveur Debian. Remplacez AAA.BBB.CCC.DDD par l'adresse IP réelle du serveur distant.

ssh-keygen -t rsa
ssh-copy-id [email 
ssh-copy-id -p XXXXX [email   

Ensuite, vous devez vous assurer que vous pouvez vous connecter au serveur de sauvegarde sans utiliser de mot de passe :

ssh [email 

Nous devons maintenant créer les clés GPG qui serviront au cryptage et au déchiffrement de nos données :

gpg2 --full-gen-key

Vous serez invité à saisir :

  • Type de clé
  • Taille de clé
  • Combien de temps la clé doit être valide
  • Une phrase secrète

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 cette partie de le processus à terminer).

Une fois les clés générées, vous pouvez les lister comme suit :

gpg --list-keys

La chaîne surlignée en jaune ci-dessus est connue sous le nom d'ID de clé publique et constitue un argument demandé pour chiffrer vos fichiers.

Création d'une sauvegarde Linux avec Duplicity

Pour commencer simple, sauvegardons uniquement le répertoire /var/log, à l'exception de /var/log/anaconda et /var/log/sa.

Puisqu'il s'agit de notre première sauvegarde, elle sera complète. Les exécutions suivantes créeront des sauvegardes incrémentielles (sauf si nous ajoutons l'option complète sans tiret juste à côté de duplicité dans la commande ci-dessous) :

PASSPHRASE="tecmint" duplicity --encrypt-key 115B4BB13BC768B8B2704E5663C429C3DB8BAD3B --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://[email //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 la double barre oblique dans la commande ci-dessus ! Elles sont utilisées pour indiquer un chemin absolu vers un répertoire nommé /backups/rhel8 dans la zone de sauvegarde et C'est là que les fichiers de sauvegarde seront stockés.

Remplacez YourPassphraseHere, YourPublicKeyIdHere et RemoteServer par la phrase secrète que vous avez saisie précédemment, l'ID de clé publique GPG et par l'adresse IP ou le nom d'hôte de la sauvegarde. serveur, respectivement.

Votre résultat doit ressembler à l'image suivante :

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

Une deuxième exécution de la même commande génère une taille et une durée de sauvegarde beaucoup plus réduites :

Restauration des sauvegardes Linux à l'aide de Duplicity

Pour réussir à restaurer un fichier, un répertoire avec son contenu ou l'intégralité de la sauvegarde, la destination ne doit pas exister (la duplicité n'écrasera pas un fichier ou un répertoire existant). Pour clarifier, supprimons le journal cron dans la boîte CentOS :

rm -f /var/log/cron

La syntaxe pour restaurer un seul fichier à partir du serveur distant est la suivante :

PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore filename sftp://root@RemoteHost//backups/rhel8 /where/to/restore/filename

où,

  • filename est le fichier à extraire, avec un chemin relatif vers le répertoire qui a été sauvegardé
  • /where/to/restore est le répertoire du système local dans lequel nous souhaitons restaurer le fichier.

Dans notre cas, pour restaurer le journal principal cron à partir de la sauvegarde distante, nous devons exécuter :

PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore cron sftp://[email :XXXXX//backups/rhel8 /var/log/cron

Le journal cron doit être restauré à la destination souhaitée.

De même, n'hésitez pas à supprimer un répertoire de /var/log et à le restaurer à l'aide de la sauvegarde :

rm -rf /var/log/mail
PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore mail sftp://[email :XXXXX//backups/rhel8 /var/log/mail

Dans cet exemple, le répertoire mail doit être restauré à son emplacement d'origine avec tout son contenu.

Autres fonctionnalités de Duplicity

A tout moment vous pouvez afficher la liste des fichiers archivés avec la commande suivante :

duplicity list-current-files sftp://[email :XXXXX//backups/rhel8

Supprimez les sauvegardes de plus de 6 mois :

duplicity remove-older-than 6M sftp://[email :XXXXX//backups/rhel8

Restaurer monfichier dans le répertoire gacanepa tel qu'il y a 2 jours et 12 heures :

duplicity -t 2D12h --file-to-restore gacanepa/myfile sftp://[email :XXXXX//remotedir/backups /home/gacanepa/myfile

Dans la dernière commande, nous pouvons voir un exemple d'utilisation de l'intervalle de temps (tel que spécifié par -t) : une série de paires où chacune est constituée d'un nombre suivi d'un des caractères s, m, h, D, W, M, ou Y (indiquant respectivement les secondes, les minutes, les heures, les jours, les semaines, les mois ou les années).

Résumé

Dans cet article, nous avons expliqué comment utiliser Duplicity, un utilitaire de sauvegarde qui fournit un cryptage prêt à l'emploi pour les fichiers et les répertoires. Je vous recommande fortement de consulter le site Web du projet Duplicity pour plus de documentation et d'exemples.

Nous avons fourni une page de manuel de duplicité au format PDF pour votre commodité de lecture, qui constitue également un guide de référence complet.

N'hésitez pas à nous faire savoir si vous avez des questions ou des commentaires.