Nous présentons ici une méthode pour faire une sauvegarde légère et restaurer un Raspberry Pi. Créer une sauvegarde, image de votre Raspberry Pi, est primordiale en cas de corruption de la carte SD ou défaut d’alimentation. Il arrive souvent sur les Raspberry Pi et autres ordinateur monocarte que la carte SD fasse défaut. Il faut donc faire une sauvegarde sous la forme d’un fichier image ou iso afin de pouvoir téléverser cette image sur une nouvelle carte SD et retrouver votre configuration.
Le problème est que la sauvegarde d’une image inclue toute la mémoire de la carte SD. Vous pouvez donc vous retrouver avec plusieurs fichiers de 32, 64 ou 128Gb.
Matériel
- Raspberry Pi
- Deux cartes SD
- Une connexion internet
Méthode de sauvegarde d’OS
Il n’y a pas d’autre méthode aussi direct. La méthode que je vous propose consiste en différentes étapes mais vous permettra d’avoir une sauvegarde légère du Raspberry Pi et de pouvoir mettre à jour vos projets facilement.
La méthode consiste en ces différents points
- Récupérer les informations de l’OS
- Récupérer les info hardware (optionnel)
- Récupérer les fichier de configuration
- Récupérer les paquets installés
- Récupérer les paquets Python installé
La liste n’est certainement pas complète mais avec cela, vous pourrez vous rapprochez d’une copie presque exact de ce que vous aviez
Nettoyer votre installation
sudo apt-get --purge -y autoremove
Vous pouvez aussi supprimer tous les logiciels dont vous ne vous êtes jamais servi
Créer un dossier de sauvegarde
Il peut prendre la forme que vous voulez. L’important est qu’il soit clair afin de vous y retrouver
- RPiBckp
- version
- projects
- config
Récupérer les informations de l’OS
Selon votre projet, il est important de connaitre la version de l’OS en effet suivant les paquets utilisées des problème de compatibilités peuvent se poser
cat /etc/os-release
cat /etc/os-release > /home/pi/RPiBckp/version/os-version.txt
Une autre information importante sont la version Kernel et configuration hardware
uname -a > /home/pi/RPiBckp/version/sys-version.txt
ls -l /lib/modules
N.B.: uname -r vous donne spécifiquement la version de Kernel. Vous pouvez retrouver le fichier d’installation dans la liste des firmwares
Récupérer les paquets installés
Pour avoir une liste des paquets installés, vous pouvez entrer la commande
dpkg --get-selections
Si vous souhaitez la liste des paquets avec le numéro de version
apt list --installed
N.B.: pour toute ces commandes vous pouvez utiliser grep pour filtrer votre recherche
Il est important de noter qu’il y a un certain nombre de paquets installés automatiquement et d’autre que vous avez installé selon votre besoin.
La liste des paquets installés automatiquement et manuellement s’obtient avec les commandes respectives
apt-mark showauto # paquets automatique
apt-mark showmanual # paquets manuel
Pour ma part, je conserve un fichier avec tous les paquets installés pour garder une trace avec toutes les versions
apt list --installed > /home/pi/RPiBckp/version/apt-list-installed.txt
un fichier avec les paquets installés manuellement
apt list --installed | grep -v automatic > /home/pi/RPiBckp/version/apt-list-manual.txt
et je créer le fichier avec seulement les nom pour lancer l’installation des paquets
apt-mark showmanual > /home/pi/RPiBckp/version/packages.txt
Je pourrai ensuite installer individuellement les bonnes versions si elles ne me conviennent pas.
Récupérer les paquets Python installés
python3 -m pip freeze
python3 -m pip freeze > /home/pi/RPiBckp/version/requirements.txt
Récupérer les fichiers de configuration
Certains fichiers de configurations peuvent être intéressant à récupérer notamment la configuration du wifi
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
cp /etc/wpa_supplicant/wpa_supplicant.conf /home/pi/RPiBckp/version/wpa_supplicant.conf
Créer un dépôt Git
Il peut être intéressant de créer un dépôt git pour chacun de vos projets soit pour la configuration d’un Raspberry Pi, soit pour un ensemble de script Python. Un projet sous git sera idéal pour faire évoluer vos projet notamment en terme de version de paquets et d’OS.
Une fois que vous avez récupéré tous les fichiers d’intérêts, il est temps de restaurer votre projet.
Installer une version de Raspbian
Vous pouvez utiliser le logiciel Raspberry Pi Imager
ou télécharger l’image désirée sur le site http://downloads.raspberrypi.org/raspbian/images/
N.B.: les versions trop anciennes d’OS peuvent ne pas être compatible avec les nouveaux matériels et avoir des soucis de sécurité
Installer une version de Kernel
Vous pouvez vérifier la version de Kernel installée avec la commande
ls -l /lib/modules
Pour installer une version spécifique de firmware du Raspberry Pi, vous pouvez retrouver la liste des firmwares à l’aide de leur numéro de version.
Vous pouvez ensuite copier le Git hash correspondant à la version désirée (ex: 5.10.63 : 64132d67d3e083076661628203a02d27bf13203c)
Et l’installer à l’aide de la commande:
sudo rpi-update <git_hash>
Exemple:
sudo rpi-update 2ef601a50b68eebeeb4dc3c6c525855961891be6
Attention: faites bien attention à la version que vous installez. La version de Kernel ne doit être modifiée que par des personnes expérimentées qui ont un soucis de compatibilité qui ne peut être résolue d’une autre manière.
Copier votre dossier de sauvegarde
Sur l’installation fraiche de Raspbian, vous pouvez copier votre dossier de sauvegarde et/ou cloner le dépôt Git. Vous pouvez ensuite installer les paquets et copier les fichiers de votre configuration précédente.
Installer les paquets requis
Il est possible d’installer un ensemble de paquet APT à partir d’un fichier texte contenant la liste des fichiers à installer
xargs -a packages.txt sudo apt-get install -y
Il est possible de faire la même chose pour installer les paquets Python
python3 -m pip install -r requirements.txt
Recopier les fichiers de configuration
Pour le fichier de configuration du wifi ou tout autre fichiervous pouvez utiliser la commande de copy ou de déplacement en mode super utilisateur (sudo)
sudo cp wpa_supplicant.conf /etc/wpa_supplicant/
Conclusion
Cette méthode ne permet pas d’obtenir une copie parfaite de votre projet mais elle permet de reproduire et de maintenir votre projet avec peu d’espace mémoire ce qui peut être un énorme avantage. Vous vous retrouverez ainsi avec un ensemble de fichier de configuration qui vous permettrons rapidement de restaurer une carte SD corrompue.
Si vous avez des idées de fichiers importants à sauvegarder ou d’autres méthodes pour restaurer une carte SD, n’hésitez pas à laisser un commentaire.