Cloner la carte SD ou micro-SD du Raspberry Pi, c’est très pratique d’autant plus lorsqu’on a déjà fait la malheureuse expérience des cartes bons marchés qui plantent, ou des alimentations sous dimensionnées pour votre utilisation. Je vous propose une solution efficace pour sauvegarder votre Raspberry.
Un contexte particulier
On commence un nouveau projet, on se lance sans trop réfléchir, avec une carte micro SD de 4 GB (4 Giga Octets) et au bout de quelques jours on se dit qu’une carte de 16 GB aurait été un choix plus judicieux. Pire encore, vous aviez prévu une carte micro-SD de 64 GB bon marché, et vous préférerez avec un peu de recul utiliser une carte de meilleure qualité.
Vous n’avez que des 8 ou 16 GB, ce qui va bien parce que finalement, 8 GB c’est largement suffisant.
Mais voilà, entre temps, vous avez pas mal avancé sur ce projet, passer des nuits complètes à configurer aux petits oignons votre installation et vous ne voulez pas perdre tout ce travail. Comment faire?
Présentation de rpi-clone
Je voulais donc sauvegarder ma carte micro-SD de façon efficace, et surtout, que cette sauvegarde soit fonctionnelle (ce qui n’est pas toujours le cas avec certaines solution). Au bureau, on appelle cela un PRA, un plan de reprise de l’activité !!!
Donc en cherchant un peu, je suis tombé il y a plusieurs mois sur le dépôt GitHub de Bill WILSON qui possède un merveilleux outil, un script bash qui a pensé a tout, enfin, Bill, pas le script.
Objectif de rpi-clone
rpi-clone est un script shell qui va sauvegarder (en fait, il fera un clone en utilisant dd et rsync) le système de fichiers d’un Raspberry Pi à chaud (c’est-à-dire en fonctionnement) sur une autre carte micro-SD connectée sur un port USB du Raspberry Pi.
Particularité du script : il peut faire des sauvegardes de cartes SD ou micro-SD sur des cartes de taille différente (inférieure ou supérieure) à la carte sur laquelle le Raspberry Pi a démarré.
Attention, rpi-clone doit être exécuté en tant que root sur un système où le programme rsync a été installé (sudo apt-get install rsync).
Tout est prévu dans ce script, même le petit message de confirmation à la fin pour démonter la carte sur laquelle le clone a été réalisé, et surtout, la possibilité d’utiliser cette carte pour d’autre Raspberry Pi.
Je m’explique… il suffira de monter la seconde partition de votre sauvegarde, d’éditer les fichiers de configuration, et vous avez une clone pour une nouvelle Raspberry Pi :
/etc/hostname /etc/hosts /etc/network/interfaces
Vous l’aurez compris, il ne s’agit pas de faire une image, mais bien de faire un clone utilisable.
Installer rpi-clone
Vous trouverez rpi-clone sur le github de Bill. Vous avez 2 solutions : soit vous optez pour le téléchargement manuel (celle que je vous propose), soit vous utilisez le programme git.
$ wget https://github.com/billw2/rpi-clone/archive/master.zip $ unzip master.zip $ cd rpi-clone-master $ cp rpi-clone /usr/local/sbin
Si vous êtes allergique à l’anglais, je vous propose une petite version que j’ai francisée avec l’accord de Bill.
Utilisation de rpi-clone
Lancez rpi-clone en tant que root.
>>> ATTENTION : toutes les données de votre carte seront écrasées !!! <<<
usage: rpi-clone sdN {-f|--force-initialize} {-v|--verbose} {-x} Example: rpi-clone sda -v - list all files as they are copied. -f - force initialize the destination partitions -x - use set -x for very verbose bash shell script debugging Clone (rsync) a running Raspberry Pi file system to a destination SD card 'sdN' plugged into a Pi USB port (via a USB card reader). rpi-clone can clone the running system to a new SD card or can incrementally rsync to existing backup Raspberry Pi SD cards. If the destination SD card has an existing partition 1 and a partition 2, rpi-clone assumes (unless using the -f option) that the SD card is an existing backup with the partitions properly sized and set up for a Raspberry Pi. All that is needed is to mount the partitions and rsync them to the running system. If these partitions are not found (or -f), then rpi-clone will ask if it is OK to initialize the destination SD card partitions. This is done by a partial 'dd' from the running booted device /dev/mmcblk0 to the destination SD card /dev/sdN followed by a fdisk resize and mkfs.ext4 of /dev/sdN partition 2. This creates a completed partition 1 containing all boot files and an empty but properly sized partition 2 rootfs. The SD card partitions are then mounted and rsynced to the running system. The SD card destination partitions will be mounted on /mnt/clone. A log will be written to /var/log/rpi-clone.log. It's better to avoid running other disk writing programs when running rpi-clone. Version 1.2
Retour d’expérience
Voici donc un script à garder précieusement dans votre boite à outils, voire même à automatiser toutes les nuits. Ce qui est mon cas!! Tous les soirs, une sauvegarde de ma Jeedom est effectuée, au cas où une coupure de courant, ou une mise à jour casseraient ma configuration… .
Hello
Merci
Comment faire pour automatiser la sauvegarde ?
Merc