Mes passions, le boulots, mes coups de gueule...




Raspberry Pi : Réduire la taille du backup

Catégories : Geek, Informatique, Raspberry Pi · par 19 Avr 2014

zeros

Après plus d’un mois de backups réguliers vers un disque dur externe, je me suis aperçu que, petit à petit, chaque fichier backup compressé devenait de plus en plus gros. Passant de 2,2Go à plus de 4Go.
Il était normal que la taille augmente légèrement suite à divers installations (Libre Office et autre) mais pas dans ces proportions.

Quelques investigations plus loin et le verdict tomba : la faute à UpdraftPlus (dont je vous parlerai un jour).

Ce plugin WordPress permet d’effectuer des backups quotidiens de tous les dossiers et de la base de donnée WordPress et d’envoyer le tout sur Google Drive.
Mais avant cet envoi, Updraft Plus crée des fichiers ZIP sur la carte SD et les supprime une fois ceux-ci en ligne.
Supprimés oui, mais uniquement de la table d’allocation des fichiers. Les données restant, elles, sur la carte.
Et au backup UDP suivant, de nouveaux ZIP écrits ailleurs sur la carte et ainsi de suite.

Et comme mon backup s’effectue avec la commande dd, c’est l’ensemble des données (bit par bit) présentes sur la carte (y compris celles qui ont été supprimées) qui est compressé vers le HD externe. Ceci faisant augmenter la taille de chaque backup.

Voici mon astuce pour contourner le problème :

Sur le bureau ~/Desktop/, on va créer un fichier constitué uniquement de zéros (zero.file) qui va occuper tout l’espace disque restant sur la carte SD et recouvrir les vestiges des fichiers ZIP. Une fois l’oppération terminée, on va supprimer le fichier zero.file. Les zéros restants seront très faciles à zipper et ne prendront que très peu de place.

Pour cela, on va créer un script Clean.sh que l’on va placer dans le dossier /home/pi.

sudo nano /home/pi/Clean.sh

On va y placer le code suivant :

sudo cat /dev/zero > ~/Desktop/zero.file
sudo rm ~/Desktop/zero.file

On va ensuite rendre ce fichier exécutable avec la commande :

sudo chmod u+x /home/pi/Clean.sh

Et on va demander l’exécution de ce script 1/2 heure avant le backup que j’ai configuré à une fréquence hebdomadaire à 3:30AM le lundi.

sudo crontab -e

Et on ajoute ce code au fichier :

00 3 * * 1 /home/pi/Clean.sh > /home/pi/Clean.log 2>&1

On aura donc un script Clean.sh qui va s’activer à 3:00AM le lundi, juste avant le backup de 3:30AM.

Edit : 2 juillet 2014

A l’usage, j’ai constaté que la commande cat provoquait parfois un plantage total. Probablement à cause du manque d’espace, juste avant la suppression du fichier zero.file.
Je l’ai donc remplacée par un dd qui prend malheureusement un peu plus de temps pour effectuer la même action. La commande sync permet de synchroniser les données en mémoire et celles sur disque.

sudo dd if=/dev/zero of=/home/pi/Desktop/zero.file
sudo sync

Edit 08/03/2015 :

Lisez aussi cet article pour un résumé :
https://www.fanjoe.be/?p=1373

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.