J’avais très vaguement parlé de restic lors de mon article sur ma gestion des sauvegardes. Restic est un outil de sauvegardes dans le même genre que borg, il fonctionne de la même manière, c’est à dire via des chunks, et gère correctement la déduplication.
Lors de mes premiers tests, restic
était en version 0.9, et je l’avais trouvé beaucoup plus lent que borg
(entre 2 et 4 fois plus lent), mais j’ai décidé de le garder sous le coude. La version 0.11 de restic
est sortie, avec comme objectif d’améliorer les performances, et vous savez quoi ?! Ils ont réussi.
Je ferais surement un article comparatif entre restic
et borg
, mais la conclusion est que restic
est désormais environ 2 fois plus rapide que borg
.
Pourquoi remplacer borg et duplicati
Borg fonctionne très bien, duplicati aussi d’ailleurs, mais le problème vient surtout du fait de faire une sauvegarde d’une sauvegarde pour pouvoir faire une copie dans le cloud. Je préfère partir sur 2 sauvegardes indépendantes, car si je perds ma sauvegarde locale de 2To, puisque borg
en plus de chiffrer, utilise son organisation, il me faudra restaurer toute la sauvegarde de duplicati
avant de pouvoir restaurer via borg
, pas très pratique.
Et c’est là que restic
intervient, car en plus de faire comme borg
(sauvegarde locale et via ssh), il permet d’utiliser rclone pour faire des sauvegardes sur le cloud (gdrive, onedrive, s3, mega etc ….) et même certains en natif (backblaze, s3, minio etc …). C’est super efficace, et super simple à utiliser.
Je passerai sur l’installation, c’est du Go
, donc un simple binaire à copier, je conseille cependant d’installer minimum la version 0.11, les versions sous debian et ubuntu sont beaucoup moins performantes. Je ferai beaucoup de comparaison avec borg
, car comme j’ai dit, ces outils sont très similaires.
Utilisation
Contrairement à borg
, restic
n’a pas besoin d’avoir de serveur d’installé sur la machine cible, il utilise directement sftp.
Tout comme borg
, il est possible d’utiliser un seul repo pour plusieurs hôtes ou pour plusieurs sauvegardes différentes, même si cela n’est pas forcément conseillé.
Initialisation du repo
L’initialisation d’un repo se fait simplement, un peu comme borg
, pour un repository local ça donnerait :
$ restic -r ./restic_save init
enter password for new repository:
enter password again:
created restic repository 0e31d6c2b0 at ./restic_save
Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.
Tout comme borg
, il est possible de simplifier ça avec des variables d’environnements :
- RESTIC_PASSWORD : Pour le mdp du repo
- RESTIC_PASSWORD_COMMAND : Pour récupérer le mot de passe via une commande
- RESTIC_PASSWORD_FILE : Pour stocker le mot de passe dans un fichier
- RESTIC_REPOSITORY : Pour le nom du repo
- …. : Plein d’autres, voir docs
Et pour un repo distant, nous utiliserons ce format pour le repository type:IP|NOM|URI|autre[:repository]
:
- ssh :
restic -r ssh:user@192.168.1.123:/folder/saves init
ouexport RESTIC_REPOSITORY=ssh:user@192.168.1.123:/folder/saves && restic init
- rest :
restic -r rest:http://user:pass@save.local:8080/saves init
(Pour l’utilisation de l’API Rest compatiblerestic
,rclone
par exemple le permets) - rclone :
restic -r rclone:gdrive:/foler/saves init
(Il faut rclone sur la machine également) - …. : Plein d’autres, voir docs
Attention cependant avec le cloud, c’est beaucoup plus lent qu’en local ou en ssh, par exemple, la sauvegarde initiale que je fais après, m’a pris 7min en local, mais la même via
rclone
sur un onedrive à pris 50min (pour presque 9Go), en ssh les performances sont les mêmes que en local, à quelques secondes près.
Sauvegardes
Pour sauvegarder, nous utiliserons l’option backup
:
$ restic -r ./restic_save backup /home/xataz/Images/
enter password for repository:
repository 0e31d6c2 opened successfully, password is correct
created new cache in /home/xataz/.cache/restic
Files: 2012 new, 0 changed, 0 unmodified
Dirs: 49 new, 0 changed, 0 unmodified
Added to the repo: 8.780 GiB
processed 2012 files, 8.781 GiB in 7:10
snapshot 85a1c2ee saved
Si j’ajoute des fichiers et que je relance, en ajoutant des variables d’environnement :
$ export RESTIC_PASSWORD=azerty
$ export RESTIC_REPOSITORY=./restic_save
$ restic backup /home/xataz/Images/
repository 0e31d6c2 opened successfully, password is correct
Files: 14 new, 0 changed, 2012 unmodified
Dirs: 0 new, 3 changed, 46 unmodified
Added to the repo: 3.081 MiB
processed 2026 files, 8.784 GiB in 0:00
snapshot b427d8af saved
Déjà c’est beaucoup plus rapide, il a vraiment mis moins d’une seconde pour sauvegarder mes 14 nouveaux fichiers.
Lister les sauvegardes
Il faut pouvoir lister les sauvegardes :
$ restic snapshots
repository 0e31d6c2 opened successfully, password is correct
ID Time Host Tags Paths
---------------------------------------------------------------------------
85a1c2ee 2020-11-19 14:31:25 xataz-laptop /home/xataz/Images
b427d8af 2020-11-19 14:50:13 xataz-laptop /home/xataz/Images
---------------------------------------------------------------------------
2 snapshots
Contrairement à borg
, on ne nomme pas les sauvegardes, donc restic
génère un ID unique pour ça, ce n’est pas toujours pratique, donc pour cela nous avons …
Les tags
Les tags vont permettre de s’organiser ou de filtrer les sauvegardes, on les ajoute à la création d’un backup :
$ restic backup --tag $(date +%Y%m%d) --tag images --tag $(date +%A) /home/xataz/Images/
repository 0e31d6c2 opened successfully, password is correct
Files: 38 new, 0 changed, 2026 unmodified
Dirs: 0 new, 3 changed, 46 unmodified
Added to the repo: 7.690 MiB
processed 2064 files, 8.793 GiB in 0:00
snapshot 0f024556 saved
$ restic snapshots
repository 0e31d6c2 opened successfully, password is correct
ID Time Host Tags Paths
--------------------------------------------------------------------------------------
85a1c2ee 2020-11-19 14:31:25 xataz-laptop /home/xataz/Images
b427d8af 2020-11-19 14:50:13 xataz-laptop /home/xataz/Images
0f024556 2020-11-19 16:07:15 xataz-laptop 20201119,images,jeudi /home/xataz/Images
--------------------------------------------------------------------------------------
3 snapshots
Pour l’instant je n’ai que 3 sauvegardes, donc c’est encore visible, mais je pourrais tester ceci :
$ restic snapshots --tag 20201119
repository 0e31d6c2 opened successfully, password is correct
ID Time Host Tags Paths
--------------------------------------------------------------------------------------
0f024556 2020-11-19 16:07:15 xataz-laptop 20201119,images,jeudi /home/xataz/Images
--------------------------------------------------------------------------------------
1 snapshots
Le Host est aussi une sorte de tag, elle n’a aucune incidence sur la sauvegarde et peut être overwrité.
Rotation
Pour vous montrer la rotation, je vais recréer un autre repo, et faire des sauvegardes antidatées (c’est possible avec restic) sur 390 jours:
$ export RESTIC_PASSWORD=azerty
$ export RESTIC_REPOSITORY=./restic_save2
$ restic init
created restic repository 66dd4a3e3a at ./restic_save2
Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.
$ for i in $(seq 1 390); do
DATE=$(date "+%Y-%m-%d 00:30:00" --date "-390 days +$i days")
filename=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
head -c 1M < /dev/urandom > ../files/$filename
echo "Création de la sauvegarde n°$i/390"
restic backup --tag $(date --date "$DATE" +%Y%m%d) --time "$DATE" ../files/;
done
Cette petite boucle va boucler 390 fois, et va donc me créer une sauvegarde antidatée depuis 390 jours, entre chaque sauvegarde, il va me créer un nouveau fichier aléatoire de 1Mo. Pour info, cette boucle a duré environ 5min.
Une fois ceci fait, on se retrouve avec beaucoup de backups, il faut donc activer une rotation des backups, pour ceci nous avons forget
qui est l’équivalent de prune
pour borg
:
$ restic forget --prune --keep-daily 30 --keep-weekly 4 --keep-monthly 12 --keep-yearly 2
repository 7dbb4021 opened successfully, password is correct
Applying Policy: keep 30 daily, 4 weekly, 12 monthly, 2 yearly snapshots
keep 40 snapshots:
ID Time Host Tags Reasons Paths
------------------------------------------------------------------------------------------------------------------------
2003f87e 2019-12-31 00:30:00 xataz-laptop 20191231 monthly snapshot /home/xataz/Documents/Projects/testsave/files
yearly snapshot
6167c834 2020-01-31 00:30:00 xataz-laptop 20200131 monthly snapshot /home/xataz/Documents/Projects/testsave/files
56f2b973 2020-02-29 00:30:00 xataz-laptop 20200229 monthly snapshot /home/xataz/Documents/Projects/testsave/files
[....]
d117adb0 2020-11-19 00:30:00 xataz-laptop 20201119 daily snapshot /home/xataz/Documents/Projects/testsave/files
weekly snapshot
monthly snapshot
yearly snapshot
------------------------------------------------------------------------------------------------------------------------
40 snapshots
remove 350 snapshots:
ID Time Host Tags Paths
------------------------------------------------------------------------------------------------------
4d112069 2019-10-27 00:30:00 xataz-laptop 20191027 /home/xataz/Documents/Projects/testsave/files
63fd465f 2019-10-28 00:30:00 xataz-laptop 20191028 /home/xataz/Documents/Projects/testsave/files
[....]
21b010bf 2020-10-13 00:30:00 xataz-laptop 20201013 /home/xataz/Documents/Projects/testsave/files
93d86e1f 2020-10-14 00:30:00 xataz-laptop 20201014 /home/xataz/Documents/Projects/testsave/files
8f48f592 2020-10-15 00:30:00 xataz-laptop 20201015 /home/xataz/Documents/Projects/testsave/files
a572b1b0 2020-10-16 00:30:00 xataz-laptop 20201016 /home/xataz/Documents/Projects/testsave/files
4ee60761 2020-10-17 00:30:00 xataz-laptop 20201017 /home/xataz/Documents/Projects/testsave/files
7b7295cd 2020-10-18 00:30:00 xataz-laptop 20201018 /home/xataz/Documents/Projects/testsave/files
3f224e7d 2020-10-19 00:30:00 xataz-laptop 20201019 /home/xataz/Documents/Projects/testsave/files
b0698bdd 2020-10-20 00:30:00 xataz-laptop 20201020 /home/xataz/Documents/Projects/testsave/files
------------------------------------------------------------------------------------------------------
350 snapshots
[0:00] 100.00% 350 / 350 files deleted
counting files in repo
building new index for repo
[0:02] 100.00% 877 / 877 packs
repository contains 877 packs (1371 blobs) with 440.198 MiB
processed 1371 blobs: 0 duplicate blobs, 0 B duplicate
load all snapshots
find data that is still in use for 40 snapshots
[0:00] 100.00% 40 / 40 snapshots
found 671 of 1371 data blobs still in use, removing 700 blobs
will remove 0 invalid files
will delete 350 packs and rewrite 0 packs, this frees 28.321 MiB
counting files in repo
[0:00] 100.00% 527 / 527 packs
finding old index files
saved new indexes as [debf8d28]
remove 390 old index files
[0:00] 100.00% 390 / 390 files deleted
remove 350 old packs
[0:00] 100.00% 350 / 350 files deleted
done
Et si je vérifie mes sauvegardes :
$ restic snapshots
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
------------------------------------------------------------------------------------------------------
2003f87e 2019-12-31 00:30:00 xataz-laptop 20191231 /home/xataz/Documents/Projects/testsave/files
6167c834 2020-01-31 00:30:00 xataz-laptop 20200131 /home/xataz/Documents/Projects/testsave/files
56f2b973 2020-02-29 00:30:00 xataz-laptop 20200229 /home/xataz/Documents/Projects/testsave/files
0782bbe8 2020-03-31 00:30:00 xataz-laptop 20200331 /home/xataz/Documents/Projects/testsave/files
d38ae4cd 2020-04-30 00:30:00 xataz-laptop 20200430 /home/xataz/Documents/Projects/testsave/files
c6969e02 2020-05-31 00:30:00 xataz-laptop 20200531 /home/xataz/Documents/Projects/testsave/files
8db5e2cb 2020-06-30 00:30:00 xataz-laptop 20200630 /home/xataz/Documents/Projects/testsave/files
a0bfd39d 2020-07-31 00:30:00 xataz-laptop 20200731 /home/xataz/Documents/Projects/testsave/files
7e3c2a16 2020-08-31 00:30:00 xataz-laptop 20200831 /home/xataz/Documents/Projects/testsave/files
0e4cc400 2020-09-30 00:30:00 xataz-laptop 20200930 /home/xataz/Documents/Projects/testsave/files
77dc12b6 2020-10-21 00:30:00 xataz-laptop 20201021 /home/xataz/Documents/Projects/testsave/files
bdd230cf 2020-10-22 00:30:00 xataz-laptop 20201022 /home/xataz/Documents/Projects/testsave/files
f89c1f56 2020-10-23 00:30:00 xataz-laptop 20201023 /home/xataz/Documents/Projects/testsave/files
515db7b4 2020-10-24 00:30:00 xataz-laptop 20201024 /home/xataz/Documents/Projects/testsave/files
f40ca279 2020-10-25 00:30:00 xataz-laptop 20201025 /home/xataz/Documents/Projects/testsave/files
270b2d88 2020-10-26 00:30:00 xataz-laptop 20201026 /home/xataz/Documents/Projects/testsave/files
d2e61cab 2020-10-27 00:30:00 xataz-laptop 20201027 /home/xataz/Documents/Projects/testsave/files
ce055060 2020-10-28 00:30:00 xataz-laptop 20201028 /home/xataz/Documents/Projects/testsave/files
40b19a49 2020-10-29 00:30:00 xataz-laptop 20201029 /home/xataz/Documents/Projects/testsave/files
532bea0c 2020-10-30 00:30:00 xataz-laptop 20201030 /home/xataz/Documents/Projects/testsave/files
cc04a2fb 2020-10-31 00:30:00 xataz-laptop 20201031 /home/xataz/Documents/Projects/testsave/files
3cc179b1 2020-11-01 00:30:00 xataz-laptop 20201101 /home/xataz/Documents/Projects/testsave/files
8eb3a6a7 2020-11-02 00:30:00 xataz-laptop 20201102 /home/xataz/Documents/Projects/testsave/files
d8104ee6 2020-11-03 00:30:00 xataz-laptop 20201103 /home/xataz/Documents/Projects/testsave/files
6db0ef08 2020-11-04 00:30:00 xataz-laptop 20201104 /home/xataz/Documents/Projects/testsave/files
9125355a 2020-11-05 00:30:00 xataz-laptop 20201105 /home/xataz/Documents/Projects/testsave/files
984ef545 2020-11-06 00:30:00 xataz-laptop 20201106 /home/xataz/Documents/Projects/testsave/files
a7616509 2020-11-07 00:30:00 xataz-laptop 20201107 /home/xataz/Documents/Projects/testsave/files
8deff2c8 2020-11-08 00:30:00 xataz-laptop 20201108 /home/xataz/Documents/Projects/testsave/files
3eb12566 2020-11-09 00:30:00 xataz-laptop 20201109 /home/xataz/Documents/Projects/testsave/files
5ce603c1 2020-11-10 00:30:00 xataz-laptop 20201110 /home/xataz/Documents/Projects/testsave/files
a995bfce 2020-11-11 00:30:00 xataz-laptop 20201111 /home/xataz/Documents/Projects/testsave/files
9a50768a 2020-11-12 00:30:00 xataz-laptop 20201112 /home/xataz/Documents/Projects/testsave/files
cb6576b0 2020-11-13 00:30:00 xataz-laptop 20201113 /home/xataz/Documents/Projects/testsave/files
58c2c310 2020-11-14 00:30:00 xataz-laptop 20201114 /home/xataz/Documents/Projects/testsave/files
4015059a 2020-11-15 00:30:00 xataz-laptop 20201115 /home/xataz/Documents/Projects/testsave/files
060fe973 2020-11-16 00:30:00 xataz-laptop 20201116 /home/xataz/Documents/Projects/testsave/files
f0382a1d 2020-11-17 00:30:00 xataz-laptop 20201117 /home/xataz/Documents/Projects/testsave/files
00c19642 2020-11-18 00:30:00 xataz-laptop 20201118 /home/xataz/Documents/Projects/testsave/files
d117adb0 2020-11-19 00:30:00 xataz-laptop 20201119 /home/xataz/Documents/Projects/testsave/files
------------------------------------------------------------------------------------------------------
40 snapshots
Comment ça marche
Donc là j’ai mis 4 options, --keep-daily 30
, --keep-weekly 4
, --keep-monthly 12
, --keep-yearly 2
, cela veut dire que je garde 30 sauvegardes journalières, 4 sauvegardes hebdomadaires, 12 sauvegardes mensuelles et 2 sauvegardes annuelles.
Oui mais là on devrait avoir 48 sauvegardes (30+4+12+2) ?!!
Et bien non, car certaines sauvegardes ont plusieurs fréquences.
- Journalières : du 21/10/2020 au 19/11/2020
- Hebdomadaires : 20200119, 20201115, 20201108 et 20201101 (Les derniers jours de la semaine où il y a eu une sauvegarde)
- Mensuel : 20191231, 20200131, 20200229, 20200331, 20200430, 20200531, 20200630, 20200731, 20200831, 20200930, 20201031 et 20201119 (Les derniers jours du mois où il y a eu une sauvegarde)
- Annuel : 20191231 et 20201119 (Derniers jours de l’année où il y a eu une sauvegarde)
Pour vérifier, nous allons réduire ce nombre :
$ restic forget --prune --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --keep-yearly 2
repository 7dbb4021 opened successfully, password is correct
Applying Policy: keep 7 daily, 4 weekly, 12 monthly, 2 yearly snapshots
keep 20 snapshots:
[....]
done
$ restic snapshots
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
------------------------------------------------------------------------------------------------------
2003f87e 2019-12-31 00:30:00 xataz-laptop 20191231 /home/xataz/Documents/Projects/testsave/files
6167c834 2020-01-31 00:30:00 xataz-laptop 20200131 /home/xataz/Documents/Projects/testsave/files
56f2b973 2020-02-29 00:30:00 xataz-laptop 20200229 /home/xataz/Documents/Projects/testsave/files
0782bbe8 2020-03-31 00:30:00 xataz-laptop 20200331 /home/xataz/Documents/Projects/testsave/files
d38ae4cd 2020-04-30 00:30:00 xataz-laptop 20200430 /home/xataz/Documents/Projects/testsave/files
c6969e02 2020-05-31 00:30:00 xataz-laptop 20200531 /home/xataz/Documents/Projects/testsave/files
8db5e2cb 2020-06-30 00:30:00 xataz-laptop 20200630 /home/xataz/Documents/Projects/testsave/files
a0bfd39d 2020-07-31 00:30:00 xataz-laptop 20200731 /home/xataz/Documents/Projects/testsave/files
7e3c2a16 2020-08-31 00:30:00 xataz-laptop 20200831 /home/xataz/Documents/Projects/testsave/files
0e4cc400 2020-09-30 00:30:00 xataz-laptop 20200930 /home/xataz/Documents/Projects/testsave/files
cc04a2fb 2020-10-31 00:30:00 xataz-laptop 20201031 /home/xataz/Documents/Projects/testsave/files
3cc179b1 2020-11-01 00:30:00 xataz-laptop 20201101 /home/xataz/Documents/Projects/testsave/files
8deff2c8 2020-11-08 00:30:00 xataz-laptop 20201108 /home/xataz/Documents/Projects/testsave/files
cb6576b0 2020-11-13 00:30:00 xataz-laptop 20201113 /home/xataz/Documents/Projects/testsave/files
58c2c310 2020-11-14 00:30:00 xataz-laptop 20201114 /home/xataz/Documents/Projects/testsave/files
4015059a 2020-11-15 00:30:00 xataz-laptop 20201115 /home/xataz/Documents/Projects/testsave/files
060fe973 2020-11-16 00:30:00 xataz-laptop 20201116 /home/xataz/Documents/Projects/testsave/files
f0382a1d 2020-11-17 00:30:00 xataz-laptop 20201117 /home/xataz/Documents/Projects/testsave/files
00c19642 2020-11-18 00:30:00 xataz-laptop 20201118 /home/xataz/Documents/Projects/testsave/files
d117adb0 2020-11-19 00:30:00 xataz-laptop 20201119 /home/xataz/Documents/Projects/testsave/files
------------------------------------------------------------------------------------------------------
20 snapshots
On peut refaire le même exercice :
- Journalières : 20201113, 20201114, 20201115, 20201116, 20201117, 20201118 et 20201119 ==> 7
- Hebdomadaires : 20200119, 20201115, 20201108 et 20201101 => 4
- Mensuel : 20191231, 20200131, 20200229, 20200331, 20200430, 20200531, 20200630, 20200731, 20200831, 20200930, 20201031 et 20201119 => 12
- Annuel : 20191231 et 20201119 => 2
Ce qui nous donnerait un total de 24 sauvegardes, mais si nous enlevons les doublons, nous avons bien 20 sauvegardes.
Comme tout système de sauvegarde, il faut bien faire attention à la rétention, dans cette configuration, si je crée un fichier en début de semaine dernière et que je le supprime 2 jours après, ba là j’ai plus le fichier.
Jouer avec les tags
On peut également jouer avec les tags pour la rotation, par exemple je crée ma sauvegarde de photos avec un tag photo :
$ restic backup --tag $(date --date "$DATE" +%Y%m%d) --tag photos ~/photos
Et que dans le même repos je sauvegarde mes documents :
$ restic backup --tag $(date --date "$DATE" +%Y%m%d) --tag documents ~/documents
Mon répertoire photos n’est pas un répertoire que je sauvegarde souvent, puisque rarement modifié, je pourrais par exemple demander de garder les sauvegardes journalières pendant seulement 7 jours, et les sauvegardes hebdomadaires indéfiniment :
$ restic forget --keep-daily 7 --keep-weekly -1 --tag photos --prune
Là je n’agis donc que sur les backups avec le tag photos.
Restauration
Faire des sauvegardes c’est bien, mais il faut pouvoir les restaurer, c’est indispensable. Nous avons plusieurs outils qui nous permet de le faire.
Rechercher un fichier
J’ai supprimé par erreur le fichier nommé j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC, il faut donc rechercher ce fichier, restic
fourni la commande find
pour ceci :
$ restic find j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
repository 7dbb4021 opened successfully, password is correct
Found matching entries in snapshot 00c19642 from 2020-11-18 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot 060fe973 from 2020-11-16 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot 0e4cc400 from 2020-09-30 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot 3cc179b1 from 2020-11-01 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot 4015059a from 2020-11-15 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot 58c2c310 from 2020-11-14 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot 7e3c2a16 from 2020-08-31 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot 8db5e2cb from 2020-06-30 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot 8deff2c8 from 2020-11-08 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot a0bfd39d from 2020-07-31 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot c6969e02 from 2020-05-31 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot cb6576b0 from 2020-11-13 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot cc04a2fb from 2020-10-31 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot d117adb0 from 2020-11-19 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Found matching entries in snapshot d38ae4cd from 2020-04-30 00:30:00
/files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
On retrouve bien notre fichier, ouf !!!
On peut affiner la recherche avec quelques options :
--host
: Dans le cas d’un repos multihost (Pas forcément recommandé)--tag
: Pour filtrer sur un certain tag--newest
ou --oldest
: Pour rechercher le plus vieux ou le plus récent fichier
Et bien sûr d’autres que vous pouvez obtenir via restic find --help
.
Comparer des sauvegardes
On peut comparer deux sauvegardes avec diff
. Malheureusement il faudra utiliser les IDs des backups pour ce faire :
$ restic diff 00c19642 d117adb0
repository 7dbb4021 opened successfully, password is correct
comparing snapshot 00c19642 to d117adb0:
+ /files/6Ocl3G8kMNUEjTbsbZ5nrKN2CSEcF9Zg
Files: 1 new, 0 removed, 0 changed
Dirs: 0 new, 0 removed
Others: 0 new, 0 removed
Data Blobs: 2 new, 0 removed
Tree Blobs: 1 new, 1 removed
Added: 1.166 MiB
Removed: 169.658 KiB
Restaurer via mount
Tout comme borg
, il est possible de monter une sauvegarde :
$ restic mount testmount
repository 7dbb4021 opened successfully, password is correct
Now serving the repository at testmount
When finished, quit with Ctrl-c or umount the mountpoint.
Par contre restic
ne rend pas la main, donc dans un autre shell :
$ ls -lrt
total 0
dr-xr-xr-x 1 xataz xataz 0 déc. 1 10:34 tags
dr-xr-xr-x 1 xataz xataz 0 déc. 1 10:34 snapshots
dr-xr-xr-x 1 xataz xataz 0 déc. 1 10:34 ids
dr-xr-xr-x 1 xataz xataz 0 déc. 1 10:34 hosts
Nous pouvons voir 4 répertoires :
- tags : Les sauvegardes sont triées par tags, donc puisque je mets la date en tag, j’ai un répertoire par date, ensuite j’ai les sauvegardes correspondants à ce tag, qui sont triées par date.
- snapshots : Nous avons directement accès à toutes les sauvegardes, ici triées par date.
- ids : Moins pratique, ici les sauvegardes sont triées par ids uniques.
- hosts : C’est surtout dans le cas d’un repo pour plusieurs hôtes, un répertoire par hôte, et ensuite la liste des sauvegardes par date.
Donc pour restaurer ici, il suffit de faire un cp
du fichier désiré, et de la copier où vous voulez.
Restaurer via restore
Cette commande est pratique quand vous savez exactement le ou les fichiers qu’il vous faut.
Pour tout restaurer la sauvegarde du 30/04/2020 (d38ae4cd) dans un répertoire temporaire :
$ restic restore --target restore d38ae4cd
repository 7dbb4021 opened successfully, password is correct
restoring <Snapshot d38ae4cd of [/home/xataz/Documents/Projects/testsave/files] at 2020-04-30 00:30:00 +0200 CEST by xataz@xataz-laptop> to restore
Petit exemple pour restaurer le fichier j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC précédemment cherché en date du 30/04/2020 (id d38ae4cd) :
$ restic restore --include j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC --target restore d38ae4cd
repository 7dbb4021 opened successfully, password is correct
restoring <Snapshot d38ae4cd of [/home/xataz/Documents/Projects/testsave/files] at 2020-04-30 00:30:00 +0200 CEST by xataz@xataz-laptop> to restore
$ ls restore/files/
j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
Restaurer via dump
dump
est particulier, car il permet de lire et d’afficher un fichier, super pratique pour par exemple restaurer une base de données qu’on aurait exportée en .sql
$ restic dump d38ae4cd files/j2J4IPrcZLmJdH31Ld0xu8Bok33jdezC
### Contenu du fichier
Pour un exemple plus concret, j’ai effectué ma sauvegarde mysql comme ceci :
$ mysqldump -d dbname -u dbuser -p dbpass | restic backup --stdin --stdin-filename database_dump.sql --tag $(date +%Y%m%d) --tag mysql
Vous pourrez restaurer comme ceci :
$ restic dump latest database_dump.sql | mysql --local-infile=1 -u dbuser -p dbpass -d dbname -e "LOAD DATA LOCAL INFILE '/dev/stdin' INTO TABLE mytable FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"';"
Je n’ai pas testé ceci, mais ça devrait fonctionner sans soucis.
Divers
Gérer les accès
Restic
a un petit avantage face à borg
, il permet d’avoir plusieurs comptes pour accéder à une archive, par exemple vous avez une clé par serveur sauvegardé, et une clé pour vous, sur votre PC client qui permettra d’y accéder. L’avantage, c’est que si une clé est compromise, il vous suffit de ne révoquer que celle ci.
Commençons par lister les clés :
$ restic key list
repository 7dbb4021 opened successfully, password is correct
ID User Host Created
---------------------------------------------------
*fa335932 xataz xataz-laptop 2020-11-19 16:40:39
---------------------------------------------------
L’hôte et le User n’ont aucune incidence sur le fonctionnement, ce sont des tags pour la gestion, l’organisation.
Donc nous allons créer une clé pour toto :
$ restic key add --user toto
repository 7dbb4021 opened successfully, password is correct
enter new password:
enter password again:
saved new key as <Key of toto@xataz-laptop, created on 2020-12-01 11:07:46.936851027 +0100 CET m=+12.941241627>
Je liste les clés :
$ restic key list
repository 7dbb4021 opened successfully, password is correct
ID User Host Created
---------------------------------------------------
9f917fae toto xataz-laptop 2020-12-01 11:07:46
*fa335932 xataz xataz-laptop 2020-11-19 16:40:39
---------------------------------------------------
Pour tester la clé, je vais l’ajouter dans les variables d’environnements :
$ export RESTIC_PASSWORD=qsdfgh
Et j’essaie de lister les snapshots :
$ restic snapshots
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
------------------------------------------------------------------------------------------------------
2003f87e 2019-12-31 00:30:00 xataz-laptop 20191231 /home/xataz/Documents/Projects/testsave/files
6167c834 2020-01-31 00:30:00 xataz-laptop 20200131 /home/xataz/Documents/Projects/testsave/files
56f2b973 2020-02-29 00:30:00 xataz-laptop 20200229 /home/xataz/Documents/Projects/testsave/files
0782bbe8 2020-03-31 00:30:00 xataz-laptop 20200331 /home/xataz/Documents/Projects/testsave/files
d38ae4cd 2020-04-30 00:30:00 xataz-laptop 20200430 /home/xataz/Documents/Projects/testsave/files
c6969e02 2020-05-31 00:30:00 xataz-laptop 20200531 /home/xataz/Documents/Projects/testsave/files
8db5e2cb 2020-06-30 00:30:00 xataz-laptop 20200630 /home/xataz/Documents/Projects/testsave/files
a0bfd39d 2020-07-31 00:30:00 xataz-laptop 20200731 /home/xataz/Documents/Projects/testsave/files
7e3c2a16 2020-08-31 00:30:00 xataz-laptop 20200831 /home/xataz/Documents/Projects/testsave/files
0e4cc400 2020-09-30 00:30:00 xataz-laptop 20200930 /home/xataz/Documents/Projects/testsave/files
cc04a2fb 2020-10-31 00:30:00 xataz-laptop 20201031 /home/xataz/Documents/Projects/testsave/files
3cc179b1 2020-11-01 00:30:00 xataz-laptop 20201101 /home/xataz/Documents/Projects/testsave/files
8deff2c8 2020-11-08 00:30:00 xataz-laptop 20201108 /home/xataz/Documents/Projects/testsave/files
cb6576b0 2020-11-13 00:30:00 xataz-laptop 20201113 /home/xataz/Documents/Projects/testsave/files
58c2c310 2020-11-14 00:30:00 xataz-laptop 20201114 /home/xataz/Documents/Projects/testsave/files
4015059a 2020-11-15 00:30:00 xataz-laptop 20201115 /home/xataz/Documents/Projects/testsave/files
060fe973 2020-11-16 00:30:00 xataz-laptop 20201116 /home/xataz/Documents/Projects/testsave/files
f0382a1d 2020-11-17 00:30:00 xataz-laptop 20201117 /home/xataz/Documents/Projects/testsave/files
00c19642 2020-11-18 00:30:00 xataz-laptop 20201118 /home/xataz/Documents/Projects/testsave/files
d117adb0 2020-11-19 00:30:00 xataz-laptop 20201119 /home/xataz/Documents/Projects/testsave/files
------------------------------------------------------------------------------------------------------
20 snapshots
Puis si je supprime la clé de xataz :
$ $ restic key remove fa335932
repository 7dbb4021 opened successfully, password is correct
removed key fa335932c23f7ed6063d1d0ee541ef8864f9c832d357351aca44471bb4006123
Et que je retente avec mon ancien mot de passe :
$ export RESTIC_PASSWORD=azerty
$ restic snapshots
Fatal: wrong password or no key found
$ export RESTIC_PASSWORD=qsdfgh
$ restic snapshots
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
------------------------------------------------------------------------------------------------------
2003f87e 2019-12-31 00:30:00 xataz-laptop 20191231 /home/xataz/Documents/Projects/testsave/files
[....]
d117adb0 2020-11-19 00:30:00 xataz-laptop 20201119 /home/xataz/Documents/Projects/testsave/files
------------------------------------------------------------------------------------------------------
20 snapshots
Je peux changer de passphrase également :
$ restic key passwd
repository 7dbb4021 opened successfully, password is correct
enter new password:
enter password again:
saved new key as <Key of xataz@xataz-laptop, created on 2020-12-01 11:18:15.004958077 +0100 CET m=+10.588438048>
Avec le mdp actuel, ça ne fonctionne plus :
$ restic snapshots
Fatal: wrong password or no key found
Mais si j’exporte le bon :
$ export RESTIC_PASSWORD=jaimerestic
$ restic snapshots
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
------------------------------------------------------------------------------------------------------
2003f87e 2019-12-31 00:30:00 xataz-laptop 20191231 /home/xataz/Documents/Projects/testsave/files
[....]
d117adb0 2020-11-19 00:30:00 xataz-laptop 20201119 /home/xataz/Documents/Projects/testsave/files
------------------------------------------------------------------------------------------------------
20 snapshots
Tags
Nous pouvons ajouter des tags après sauvegarde, ou en supprimer
$ restic tag --add newtag latest
repository 7dbb4021 opened successfully, password is correct
create exclusive lock for repository
modified tags on 1 snapshots
$ restic snapshots latest
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
-----------------------------------------------------------------------------------------------------------
dbe8e35f 2020-11-19 00:30:00 xataz-laptop 20201119,newtag /home/xataz/Documents/Projects/testsave/files
-----------------------------------------------------------------------------------------------------------
1 snapshots
Je peux le supprimer :
$ restic tag --remove newtag latest
repository 7dbb4021 opened successfully, password is correct
create exclusive lock for repository
modified tags on 1 snapshots
$ restic snapshots latest
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
------------------------------------------------------------------------------------------------------
aeead31a 2020-11-19 00:30:00 xataz-laptop 20201119 /home/xataz/Documents/Projects/testsave/files
------------------------------------------------------------------------------------------------------
1 snapshots
Je peux en ajouter plusieurs d’un coup :
$ restic tag --add tag1 --add tag2 --add tag3 latest
repository 7dbb4021 opened successfully, password is correct
create exclusive lock for repository
modified tags on 1 snapshots
$ restic snapshots latest
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
-------------------------------------------------------------------------------------------------------------------
2ac8c161 2020-11-19 00:30:00 xataz-laptop 20201119,tag1,tag2,tag3 /home/xataz/Documents/Projects/testsave/files
-------------------------------------------------------------------------------------------------------------------
1 snapshots
Ou même en ajouter et supprimer en même temps :
$ restic tag --add tag4 --remove tag1 latest
repository 7dbb4021 opened successfully, password is correct
create exclusive lock for repository
modified tags on 1 snapshots
$ restic snapshots latest
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
-------------------------------------------------------------------------------------------------------------------
6b258d75 2020-11-19 00:30:00 xataz-laptop 20201119,tag4,tag2,tag3 /home/xataz/Documents/Projects/testsave/files
-------------------------------------------------------------------------------------------------------------------
1 snapshots
Ou alors tout remplacer d’un coup :
$ restic tag --set newnewtag latest
repository 7dbb4021 opened successfully, password is correct
create exclusive lock for repository
modified tags on 1 snapshots
$ restic snapshots latest
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
------------------------------------------------------------------------------------------------------
edf390e4 2020-11-19 00:30:00 xataz-laptop newnewtag /home/xataz/Documents/Projects/testsave/files
------------------------------------------------------------------------------------------------------
1 snapshots
L’utilité peut être multiple, par exemple, ajouter un tag “skip”, pour que celui-ci ne rentre pas en compte dans la rotation des sauvegardes (via un --keep-tag skip
par exemple), et garder indéfiniment, voir le contraire, car elle ne sert à rien, donc la supprimer directement.
Stats
Cela permet d’avoir quelques stats sur le repos, notamment la taille de celui-ci :
$ restic stats
repository 7dbb4021 opened successfully, password is correct
scanning...
Stats in restore-size mode:
Snapshots processed: 20
Total File Count: 6219
Total Size: 406.062 MiB
$ restic stats --mode raw-data
repository 7dbb4021 opened successfully, password is correct
scanning...
Stats in raw-data mode:
Snapshots processed: 20
Total Blob Count: 631
Total Size: 408.600 MiB
Faut être honnête, borg
est beaucoup plus verbeux sur les stats, et permets d’avoir une meilleure visu et plus d’info en un coup d’oeil.
Recover
Ceci est un peu particulier, la commande recover
va permettre de créer un snapshot qui contient tout les objets du repository complet.
Pour l’exemple, je vais supprimer tout les fichiers, en créer un nouveau, et faire une sauvegarde, je me retrouve donc avec ceci :
$ restic snapshots
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
------------------------------------------------------------------------------------------------------
2003f87e 2019-12-31 00:30:00 xataz-laptop 20191231 /home/xataz/Documents/Projects/testsave/files
6167c834 2020-01-31 00:30:00 xataz-laptop 20200131 /home/xataz/Documents/Projects/testsave/files
56f2b973 2020-02-29 00:30:00 xataz-laptop 20200229 /home/xataz/Documents/Projects/testsave/files
0782bbe8 2020-03-31 00:30:00 xataz-laptop 20200331 /home/xataz/Documents/Projects/testsave/files
d38ae4cd 2020-04-30 00:30:00 xataz-laptop 20200430 /home/xataz/Documents/Projects/testsave/files
c6969e02 2020-05-31 00:30:00 xataz-laptop 20200531 /home/xataz/Documents/Projects/testsave/files
8db5e2cb 2020-06-30 00:30:00 xataz-laptop 20200630 /home/xataz/Documents/Projects/testsave/files
a0bfd39d 2020-07-31 00:30:00 xataz-laptop 20200731 /home/xataz/Documents/Projects/testsave/files
7e3c2a16 2020-08-31 00:30:00 xataz-laptop 20200831 /home/xataz/Documents/Projects/testsave/files
0e4cc400 2020-09-30 00:30:00 xataz-laptop 20200930 /home/xataz/Documents/Projects/testsave/files
cc04a2fb 2020-10-31 00:30:00 xataz-laptop 20201031 /home/xataz/Documents/Projects/testsave/files
3cc179b1 2020-11-01 00:30:00 xataz-laptop 20201101 /home/xataz/Documents/Projects/testsave/files
8deff2c8 2020-11-08 00:30:00 xataz-laptop 20201108 /home/xataz/Documents/Projects/testsave/files
cb6576b0 2020-11-13 00:30:00 xataz-laptop 20201113 /home/xataz/Documents/Projects/testsave/files
58c2c310 2020-11-14 00:30:00 xataz-laptop 20201114 /home/xataz/Documents/Projects/testsave/files
4015059a 2020-11-15 00:30:00 xataz-laptop 20201115 /home/xataz/Documents/Projects/testsave/files
060fe973 2020-11-16 00:30:00 xataz-laptop 20201116 /home/xataz/Documents/Projects/testsave/files
f0382a1d 2020-11-17 00:30:00 xataz-laptop 20201117 /home/xataz/Documents/Projects/testsave/files
00c19642 2020-11-18 00:30:00 xataz-laptop 20201118 /home/xataz/Documents/Projects/testsave/files
edf390e4 2020-11-19 00:30:00 xataz-laptop newnewtag /home/xataz/Documents/Projects/testsave/files
1aa49e09 2020-12-01 11:37:25 xataz-laptop test /home/xataz/Documents/Projects/testsave/files
------------------------------------------------------------------------------------------------------
21 snapshots
Je lance donc mon recover, et liste le dernier snapshot :
$ restic recover
repository 7dbb4021 opened successfully, password is correct
load index files
load 43 trees
tree (43/43)
done
found 2 roots
saved new snapshot 69b027d6
$ restic snapshots latest
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
-----------------------------------------------------------------
69b027d6 2020-12-01 11:38:30 xataz-laptop /recover
-----------------------------------------------------------------
1 snapshots
On peut en lister les fichiers :
$ restic ls latest
[.....]
/0f1709b6/files/test
[.....]
/15fa7252/fac5a21d/files/xrxLQ2A6owZENtgglG9ZtDTtJzPCtdXV
/15fa7252/fac5a21d/files/xuojEiZFDdKSIbHoiNqRkSnASzV2X5AG
/15fa7252/fac5a21d/files/xwxlMXfmUZyjXpgVfVwRi1qpJivh73ke
[.....]
/15fa7252/f9f7d197/files/vd0MmI5OKlbHis6Ik5ljfhbxvm8xW4vG
/15fa7252/f9f7d197/files/yCbGYDOpTBeResfAagxu2LgNxDHHQ67B
/15fa7252/f9f7d197/files/yXn7ZzTvzoEy05MnII4X1VSTd9ih6N5k
/15fa7252/f9f7d197/files/yvXTelkYE99lQMA6gE8vO7sgQZbrTNtZ
J’avoue que je ne sais pas trop comment il gère sa tambouille, mais là nous nous retrouvons avec tous les fichiers déjà sauvegardés.
Testons un peu plus loin, je supprime ce recover, et je vais faire un forget pour ne garder que la dernière sauvegarde, mais sans prune :
$ restic forget latest
repository 7dbb4021 opened successfully, password is correct
[0:00] 100.00% 1 / 1 files deleted
$ restic forget --keep-last 1
repository 7dbb4021 opened successfully, password is correct
Applying Policy: keep 1 latest snapshots
keep 1 snapshots:
ID Time Host Tags Reasons Paths
---------------------------------------------------------------------------------------------------------------------
1aa49e09 2020-12-01 11:37:25 xataz-laptop test last snapshot /home/xataz/Documents/Projects/testsave/files
---------------------------------------------------------------------------------------------------------------------
1 snapshots
remove 20 snapshots:
ID Time Host Tags Paths
------------------------------------------------------------------------------------------------------
2003f87e 2019-12-31 00:30:00 xataz-laptop 20191231 /home/xataz/Documents/Projects/testsave/files
6167c834 2020-01-31 00:30:00 xataz-laptop 20200131 /home/xataz/Documents/Projects/testsave/files
56f2b973 2020-02-29 00:30:00 xataz-laptop 20200229 /home/xataz/Documents/Projects/testsave/files
0782bbe8 2020-03-31 00:30:00 xataz-laptop 20200331 /home/xataz/Documents/Projects/testsave/files
d38ae4cd 2020-04-30 00:30:00 xataz-laptop 20200430 /home/xataz/Documents/Projects/testsave/files
c6969e02 2020-05-31 00:30:00 xataz-laptop 20200531 /home/xataz/Documents/Projects/testsave/files
8db5e2cb 2020-06-30 00:30:00 xataz-laptop 20200630 /home/xataz/Documents/Projects/testsave/files
a0bfd39d 2020-07-31 00:30:00 xataz-laptop 20200731 /home/xataz/Documents/Projects/testsave/files
7e3c2a16 2020-08-31 00:30:00 xataz-laptop 20200831 /home/xataz/Documents/Projects/testsave/files
0e4cc400 2020-09-30 00:30:00 xataz-laptop 20200930 /home/xataz/Documents/Projects/testsave/files
cc04a2fb 2020-10-31 00:30:00 xataz-laptop 20201031 /home/xataz/Documents/Projects/testsave/files
3cc179b1 2020-11-01 00:30:00 xataz-laptop 20201101 /home/xataz/Documents/Projects/testsave/files
8deff2c8 2020-11-08 00:30:00 xataz-laptop 20201108 /home/xataz/Documents/Projects/testsave/files
cb6576b0 2020-11-13 00:30:00 xataz-laptop 20201113 /home/xataz/Documents/Projects/testsave/files
58c2c310 2020-11-14 00:30:00 xataz-laptop 20201114 /home/xataz/Documents/Projects/testsave/files
4015059a 2020-11-15 00:30:00 xataz-laptop 20201115 /home/xataz/Documents/Projects/testsave/files
060fe973 2020-11-16 00:30:00 xataz-laptop 20201116 /home/xataz/Documents/Projects/testsave/files
f0382a1d 2020-11-17 00:30:00 xataz-laptop 20201117 /home/xataz/Documents/Projects/testsave/files
00c19642 2020-11-18 00:30:00 xataz-laptop 20201118 /home/xataz/Documents/Projects/testsave/files
edf390e4 2020-11-19 00:30:00 xataz-laptop newnewtag /home/xataz/Documents/Projects/testsave/files
------------------------------------------------------------------------------------------------------
20 snapshots
[0:00] 100.00% 20 / 20 files deleted
$ restic snapshots
repository 7dbb4021 opened successfully, password is correct
ID Time Host Tags Paths
------------------------------------------------------------------------------------------------------
1aa49e09 2020-12-01 11:37:25 xataz-laptop test /home/xataz/Documents/Projects/testsave/files
------------------------------------------------------------------------------------------------------
1 snapshots
$ restic ls latest
repository 7dbb4021 opened successfully, password is correct
snapshot 1aa49e09 of [/home/xataz/Documents/Projects/testsave/files] filtered by [] at 2020-12-01 11:37:25.253919577 +0100 CET):
/files
/files/test
Et si je lance un recover :
$ restic recover
repository 7dbb4021 opened successfully, password is correct
load index files
load 45 trees
tree (45/45)
done
found 1 roots
saved new snapshot 9927251d
Et si nous vérifions tout les fichiers dans ce nouveau snapshot :
$ restic ls latest
[.....]
/0f1709b6/files/test
[.....]
/15fa7252/fac5a21d/files/xrxLQ2A6owZENtgglG9ZtDTtJzPCtdXV
/15fa7252/fac5a21d/files/xuojEiZFDdKSIbHoiNqRkSnASzV2X5AG
/15fa7252/fac5a21d/files/xwxlMXfmUZyjXpgVfVwRi1qpJivh73ke
[.....]
/15fa7252/f9f7d197/files/vd0MmI5OKlbHis6Ik5ljfhbxvm8xW4vG
/15fa7252/f9f7d197/files/yCbGYDOpTBeResfAagxu2LgNxDHHQ67B
/15fa7252/f9f7d197/files/yXn7ZzTvzoEy05MnII4X1VSTd9ih6N5k
/15fa7252/f9f7d197/files/yvXTelkYE99lQMA6gE8vO7sgQZbrTNtZ
Nous retrouvons tout nos fichiers.
Cependant dans le cas d’un prune, c’est différent :
$ restic forget latest
repository 7dbb4021 opened successfully, password is correct
[0:00] 100.00% 1 / 1 files deleted
$ restic prune
repository 7dbb4021 opened successfully, password is correct
counting files in repo
building new index for repo
[0:02] 100.00% 514 / 514 packs
repository contains 514 packs (639 blobs) with 408.668 MiB
processed 639 blobs: 0 duplicate blobs, 0 B duplicate
load all snapshots
find data that is still in use for 1 snapshots
[0:00] 100.00% 1 / 1 snapshots
found 3 of 639 data blobs still in use, removing 636 blobs
will remove 0 invalid files
will delete 512 packs and rewrite 0 packs, this frees 408.627 MiB
counting files in repo
[0:00] 100.00% 2 / 2 packs
finding old index files
saved new indexes as [aab34713]
remove 6 old index files
[0:00] 100.00% 6 / 6 files deleted
remove 512 old packs
[0:00] 100.00% 512 / 512 files deleted
done
$ restic recover
repository 7dbb4021 opened successfully, password is correct
load index files
load 2 trees
tree (2/2)
done
found 1 roots
saved new snapshot e707fee1
$ restic ls latest
repository 7dbb4021 opened successfully, password is correct
snapshot e707fee1 of [/recover] filtered by [] at 2020-12-01 11:52:46.318654368 +0100 CET):
/0f1709b6
/0f1709b6/files
/0f1709b6/files/test
Comme nous pouvons le voir, si nous faisons un prune (avec restic prune
ou restic forget --prune
), nous perdons tout.
Conclusion
Comme nous pouvons le voir, restic
est un outil de sauvegarde en mode push très complet, et très performant, il se place au moins au même niveau que borg
selon moi.
J’espère que cet article vous donnera au moins envie d’essayer cet outil.
De mon coté, je commence à remplacer petit à petit mes borg
par restic
, et j’ai déjà supprimé duplicati
depuis.