Linux : créer, restaurer et planifier des points de restauration avec Timeshift
Sommaire
I. Présentation
Aujourd'hui, je vais vous présenter Timeshift, un outil fort pratique pour la création et la gestion des points de restauration, également appelé snapshot en anglais. Timeshift est un service permettant de créer des "images disques" (snapshots, ou "points de restauration") de votre système, de les panifier et de restaurer un "point" dans le cas où votre système deviendrait instable.
Cet outil est assez similaire à TimeMachine pour macOS ou au point de restauration de Windows. Comme eux, il est simple à utiliser et dispose à la fois d'une interface graphique et d'un accès en ligne de commandes.
Quelques informations qui méritent d'être portées à votre connaissance :
- Depuis quelques années, TimeShift est désormais disponible depuis les repository officiels de Debian et Ubuntu.
- Il faut bien sûr avoir un espace de stockage suffisant pour stocker les instantanés. Ce peut être un simple répertoire de votre partition principale. Toutefois, en cas d'un crash du disque dur, il est bien plus prudent d'avoir un espace de stockage dédié, soit une partition spécifique (risqué, si le disque est HS), un autre disque dur / SSD, ou encore une clé USB.
- Timeshift ne sauvegarde pas certains répertoires par défaut comme /home et /root. Son but est de se concentrer uniquement sur la préservation du système d'exploitation afin que celui-ci reste intègre et fonctionnel. Si vous souhaitez sauvegarder l'intégralité de votre système, tournez-vous vers une solution de clonage disque classique (de facto bien plus gourmande en espace de stockage), même si Timeshift dispose aussi d'une option pour intégrer les dossiers utilisateurs.
- Pour le moment, il n'est pas possible de faire des points de restauration dans le Cloud ou en réseau de manière "direct".
- Si vous disposez d'une interface graphique sur votre système, je vous recommande de jeter un œil à l'interface de TimeShift, qui est très bien conçue.
Dans cet article, je n'aborderai pas l'utilisation de la GUI de Timeshift, car j'estime que ce tutoriel est plutôt destiné à des serveurs "Core" dépourvus d'interface graphique, comme un VPS, un serveur de production ou autre.
II. Création de notre premier snapshot (point de restauration)
Pour ma part, j'utilise une machine sous Ubuntu 22.04 donc je vais pouvoir installer Timeshift à partir des dépôts officiels. Pour installer Timeshift, utilisez apt :
apt install timeshift
En guise d'exemple, je vais créer un fichier qui va servir d'indicateur afin de vérifier si notre point de restauration a bel et bien été créé sans encombre.
echo "sentence from the past" > /etc/file_that_will_be_snapshoted
Créez ensuite un snapshot par l'intermédiaire de la commande ci-dessous, tout en sachant que vous n'êtes pas obligé d'inclure "--comments" qui sert à ajouter un commentaire à ce point de restauration, mais c'est recommandé pour s'y retrouver.
timeshift --create --comments "test backup"
Comme vous le constatez, l'image est en cours de création. Patientez quelques minutes....
Vous pouvez obtenir sa taille par l'intermédiaire de la commande suivante (en ajustant la fin du chemin) :
du -sh /run/timeshift/backup/timeshift/snapshots/2022-06-27_14-02-15/
Dans mon cas l'image à un poids informatique de 7,4 Go.
Sachez que plus vous créez de points de restauration fréquemment, plus votre restauration sera "précise", et légère. En effet, Timeshift utilise un système de sauvegarde différentielle, qui se base sur les fichiers précédemment sauvegardés.
Dans le but de simuler un faux problème système, je vais créer le fichier suivant : "file_that_will_disrupt_the_system". Lors du processus de restauration, en tout logique, seul le fichier "/etc/file_that_will_be_snapshoted" sera restauré contrairement à "/etc/file_that_will_disrupt_the_system" qui sera détruit, car je l'ai créé après avoir créé le point de restauration.
touch /etc/file_that_will_disrupted_the_system
III. Restauration !
Et là c'est le drame ! Imaginez que pour une raison quelconque, votre système se trouve mis à mal suite à une maladresse de votre part ! Heureusement, vous avez pensé à mettre en place un système de snapshot automatique sur votre système... car vous avez lu cet article ! 😉
Voici la procédure pour restaurer un snapshot très facilement... Rien de plus simple ! Entrez la commande suivante et choisissez le point de restauration (généralement l'un des plus récents) que vous souhaitez restaurer. Attention, il s'agit véritablement d'un retour arrière donc sauvegardez les éventuels fichiers que vous souhaitez conserver avant de restaurer ce point de restauration (par exemple, un fichier important créé après avoir généré le point de restauration).
timeshift --restore
Par défaut, Timeshift détecte automatiquement la partition réservée au GRUB (Gestionnaire de démarrage). Toutefois, vérifiez quand même à deux fois son choix par défaut, afin d'éviter tout problème. Dans mon cas, mon système est installé sur la partition SDA5 donc la partition qui accueille GRUB doit donc être SDA.
Patientez quelques minutes le temps de la restauration. Le système redémarre une fois que la restauration est terminée. En me connectant de nouveau à mon serveur, je peux donc observer qu'un seul des fichiers que j'avais créé est présent sur le serveur : ce qui est normal.
IV. Automatiser le processus de sauvegarde avec un script bash
AUTOMATION is Life ! Afin de gagner du temps, vous pouvez assez facilement programmer vos snapshots de manière automatique. Pour cela, on peut créer un script Bash, nommé par exemple "timeshift.sh". A chaque fois, un point de restauration sera créé avec la date du jour et le fichier "/var/log/timeshift_logs_from_cron.txt" sert à journaliser les actions de Timeshift.
nano timeshift.sh #!/bin/bash timeshift --create --scripted >> /var/log/timeshift_logs_from_cron.txt timeshift --list >> /var/log/timeshift_logs_from_cron.txt echo "-----------------------------------------------------------------------" >> /var/log/timeshift_logs_from_cron.txt backupDate=$(date +"%Y-%m-%d") snapshotPath="/run/timeshift/backup/timeshift/snapshots/${backupDate}*" echo "Snapshot weight : $(du -sh $snapshotPath)" >> /var/log/timeshift_logs_from_cron.txt echo "---------------------------------END-----------------------------------" >> /var/log/timeshift_logs_from_cron.txt
Attribuez à ce script des droits d'exécution :
chmod u+x timeshift.sh
Créez ensuite la tâche CRON pour planifier son exécution et donc la création d'un point de restauration :
crontab -e
Patientez, pour vérifier que la création du point de restauration s'effectue au moment que vous souhaitez et observez les processus en cours avec la commande "htop" afin de repérer le processus Timeshift en cours d'exécution.
Une fois que la sauvegarde est arrivée à son terme, afficher les logs du script via la commande suivante :
cat /var/log/timeshift_logs_from_cron.txt
En l'état, ce script ne supprime pas les anciens points de restauration. On pourrait supprimer les anciens points de restauration avec une commande comme celle-ci :
find /run/timeshift/backup/timeshift/snapshots/ -mtime +31 -exec rm -rf {} \;
V. Créer le point de sauvegarde sur un autre disque, partition, USB, etc.
Pour terminer, nous allons voir qu'il est possible de stocker le point de restauration Timeshift sur un périphérique/disque spécifique. Dans mon cas, je vais connecter une clé USB à ma machine virtuelle, afin qu'elle soit reconnue comme périphérique de stockage externe par Ubuntu.
Celle-ci est identifiée en tant que deuxième périphérique de stockage par mon système (sdb). Pour spécifier cet emplacement, on utilise le paramètre "--snapshot-device" suivi du chemin.
timeshift --create --snapshot-device /dev/sdb1
Note : attention à la compatibilité matérielle USB 2/3/3.1. Vous pouvez modifier ces réglages à chaud sur VMware depuis les paramètres de la VM.
Pour restaurer depuis votre espace de stockage externe, ce n'est pas plus difficile :
timeshift --restore --snapshot-device /dev/sdb1
J'espère que cet article vous aura plu ! Désormais, vous êtes en mesure de créer des points de restauration Timeshift sur votre machine Linux.