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.