Il est important de réaliser des backups de ses différentes installations. Il est important aussi de pouvoir récupérer un backup et en extraire les données.
Actuellement, j’ai automatisé mes backups sur du stockage type S3 de chez Scaleway (vous pouvez bénéficier gratuitement de 75Go de stockage, ce n’est pas négligeable).
On va donc évoquer maintenant la récupération des données telles que nous les avons sauvegardées avec duplicity via cette méthode
Je ne suis pas fan de la restauration « in place », c’est à dire que vous remettez tout exactement en place. En effet, pour que cela fonctionne, il faut une sauvegarde tip top et des scripts de récupération qui sont 100% valides (ce qui est rarement le cas à cause de la diversité de projets à gérer).
Je suis donc contraint de gérer la restauration des données manuellement. Pour se faire, il faut :
- De quoi récupérer mes sauvegardes (S3 Browser pour Windows, Transmit pour macOS)
- De quoi extraire mes sauvegardes pour récupérer les fichiers (de préférence un machine virtuelle avec Linux et Duplicity installé)
Récupération des fichiers de sauvegarde
Lors de la création d’un bucket, nous avons récupéré 3 informations :
- L’url de connexion S3_HOST (exemple : s3.fr-par.scw.cloud)
- Un identifiant unique S3_ACCESS_ID (exemple: SCWxxxxx)
- Une clé d’accès pour cet identifiant S3_ACCESS_KEY
Vous pouvez vous rendre sur votre console Scaleway, section clé API pour générer de nouveaux identifiants spécifiques si nécessaire
S3 Browser
Dans le logiciel, faire Accounts puis Add New Account
Dans Display name, entrez ce que vous souhaitez, c’est de l’affichage
Dans Account type, sélectionnez S3 Compatible Storage (sauf si vous êtes sur du S3 pur de chez Amazon)
Dans REST Endpoint, Acces Key ID et Secret Accesss Key, saisissez les informations S3_HOST, S3_ACCESS_ID puis S3_ACCESS_KEY
Vous pouvez cochez la case Encrypt Access Key with a password si vous souhaitez que le logiciel mémorise la clé d’accès.
Gardez cochée la case Use secure transfer
Puis validez votre saisie avec Add new account
Vous devriez avoir la liste de buckets affichée sur la gauche ainsi que le contenu de chaque bucket sur la droite
Transmit
Dans la fenêtre, ajouter un nouveau serveur. Dans la fenêtre qui se présente remplissez les informations suivantes
Pour Protocole, choisir Amazon S3
Pour les champs Adresse, ID de clé d’accès et Secret, saisissez les informations S3_HOST, S3_ACCESS_ID puis S3_ACCESS_KEY
Laissez vide le champ Chemin distant puis validez la fenêtre.
Duplicity
Par défaut, Duplicity réaliser un backup complet (full), c’est à dire avec tous les fichiers, puis il réalise des backups incrémentaux (inc). Les backups incrémentaux ne contiennent que les fichiers différents et sont donc normalement plus petits que les backup complets.
Si la taille des objets à sauvegarder est trop importante, il y aura plusieurs volumes (.vol1 .vol2 etc etc)
Ci dessous un exemple de backup. On voit un fichier « full » tous les 2 jours et un fichier « inc » les jours où il n’y a pas eu un backup full. Nous sommes le 22 Aout, nous voyons des fichiers dont la date est au 15 Aout, nous avons donc 8 jours de sauvegarde.
Nous voulons récupérer les fichiers qui ont étés archivés au 22 Aout (donc le tout dernier backup). Il nous faut donc récupérer tous les fichiers full (à la date du 21 Aout) puis tous les fichiers inc depuis la date du full jusqu’à aujourd’hui
On place nos fichiers dans notre machine virtuelle, puis on exécute la commande
duplicity restore file://_chemin-backup_/ /_chemin-restauration_/ --no-encryption
Exécuter la commande ci dessus en root ou via sudo (sinon vous aurez l’erreur [Errno 1] Operation not permitted)
Dans la commande, file:// est obligatoire, suivi du chemin. Si votre backup est dans /tmp/backup et la restauration est dans /tmp/restore, la commande devient
duplicity restore file:///tmp/backup/ /tmp/restore/ --no-encryption
Une fois la commande exécutée, vous trouverez vos fichiers dans le dossier de restauration. Il ne reste plus qu’à récupérer les fichiers dont vous avez besoin.
Si vous avez spécifié un mot de passe pour vos sauvegardes, il faudra utiliser les commandes suivantes
PASSPHRASE="_MOT_DE_PASSE_"
export PASSPHRASE
duplicity restore file:///tmp/backup/ /tmp/restore/
unset PASSPHRASE