Sauvegarde de session Firefox
Cela fait déjà plusieurs fois que Firefox me fait le coup : un plantage, une mise à jour ou autre. Je le redémarre, mais au lieu de mes centaines (milliers ?) d'onglets, je ne trouve qu'un onglet solitaire désespérément vide...
J'ai déjà appris de mes erreurs, je tente en premier lieu de restaurer la session précédente via l'interface, mais rien.
J'ouvre alors mon dossier de profile, me doutant que le fichier sessionstore.jsonlz4
que j'y trouverai ne vaudra rien (juste cette nouvelle session vide), mais qu'au moins, le contenu de sessionstore-backups/
me permettra de me sortir de ce mauvais pas.
Mais en l'ouvrant : rien, le dossier est vide !
Pourquoi ?
Ok, vous allez me dire :
Mais Yosko, pourquoi tu garde des milliers d'onglets ouverts ? C'est complètement con !
Et vous aurez sans doute raison !
Mais c'est dans ce bordel organisé que je m'y retrouve. J'aime ouvrir un onglet et le retrouver plus tard (des fois des semaines plus tard) pour m'intéresser à ce contenu quand j'en ai enfin le temps ou la motivation. J'aime aussi garder tous les onglets d'une recherche ouverts pour reprendre ce travail de longue haleine précédemment interrompu par d'autres impératifs.
Bref, la plupart de mes onglets existent mais ne sont pas chargés car ils ont été ouverts il y a un certain temps.
Objectif et approche
J'ai donc décidé de mettre en place mes propres backups du sessionstore de Firefox. Dans l'idée, j'aimerais garder des sauvegardes des derniers jours, semaines et mois, juste au cas où.
Après différentes réflexions autour de rsync ou d'un simple script bash à base de cp
+ find
et des recherches me menant sur borgbackup (dont sebsauvage ne cesse de nous rebattre les oreilles) ou restic, j'ai finalement jeté mon dévolu sur rsnapshot.
C'est un wrapper en Perl pour rsync, focalisé sur la gestion de sauvegardes par intervals (jours, semaines, mois) et leur nettoyage.
Configurer et tester rsnapshot
J'ai d'abord installé rsnapshot :
sudo apt install rsnapshot
Puis créé la configuration suivante dans ~/.config/rsnapshot/rsnapshot.conf
pour définir son comportement lorsqu'il tournera :
config_version 1.2
cmd_rsync /usr/bin/rsync
snapshot_root /home/<user>/rsnapshot/
retain daily 3
retain weekly 3
retain monthly 3
rsync_long_args --delete --numeric-ids --relative --delete-excluded
backup /home/<user>/.mozilla/firefox/./<profile>/sessionstore-backups/ firefox/
Attention : ce fichier doit contenir de véritables tabulations, sous peine d'erreurs !
Pensez donc à remplacer les espaces ici par des tabulations.
Le principe est simple : à chaque exécution, il vérifiera s'il doit effectuer un backup quotidien, hebdo ou mensuel, et s'il doit supprimer d'anciens backups. Les éléments sauvegarder sont les fichiers du dossier .../sessionstore-backups/
, donc les backups de session de Firefox.
Pensez à remplacer les éléments suivants :
- les 2 mentions de <user>
par votre nom d'utilisateur
- la mention à <profile>
par le nom du dossier de votre profil Firefox
Pour tester à la main en one shot :
rsnapshot -c ~/.config/rsnapshot/rsnapshot.conf daily
Automatiser l'appel à rsnapshot
Reste à automatiser l'appel à rsnapshot. J'ai choisi de le faire avec systemd. J'ai créé le fichier ~/.config/systemd/user/rsnapshot-daily.service
avec dedans :
[Unit]
Description=User rsnapshot daily backup
[Service]
ExecStart=/usr/bin/rsnapshot -c /home/yjo/.config/rsnapshot/rsnapshot.conf daily
Il ne me restait plus qu'à démarrer le service avec mon utilisateur :
systemctl --user start rsnapshot-daily.service
Keep calm and backup EVERYTHING!