{"id":1373,"date":"2015-03-08T21:52:56","date_gmt":"2015-03-08T20:52:56","guid":{"rendered":"https:\/\/www.fanjoe.be\/?p=1373"},"modified":"2015-09-08T22:02:28","modified_gmt":"2015-09-08T20:02:28","slug":"raspberry-pi-script-de-backup-de-la-carte-sd","status":"publish","type":"post","link":"https:\/\/www.fanjoe.be\/?p=1373","title":{"rendered":"Raspberry Pi : Script de backup de la carte SD"},"content":{"rendered":"<p>Il y a quelques temps, j&rsquo;avais publi\u00e9 des articles traitant de la sauvegarde et des moyens pour en r\u00e9duire la taille.<\/p>\n<ul>\n<li><a title=\"Raspberry Pi : Backup de la carte SD\" href=\"https:\/\/www.fanjoe.be\/?p=391\" target=\"_blank\">Raspberry Pi : Backup de la carte SD<\/a><\/li>\n<li><a title=\"Raspberry Pi : Automatisation du backup en local\" href=\"https:\/\/www.fanjoe.be\/?p=422\" target=\"_blank\">Raspberry Pi : Automatisation du backup en local<\/a><\/li>\n<li><a title=\"Raspberry Pi : R\u00e9duire la taille du backup\" href=\"https:\/\/www.fanjoe.be\/?p=566\" target=\"_blank\">Raspberry Pi : R\u00e9duire la taille du backup<\/a><\/li>\n<\/ul>\n<p>Voici un petit r\u00e9sum\u00e9 de la m\u00e9thode que j&rsquo;ai adopt\u00e9, apr\u00e8s pas mal de t\u00e2tonnements, pour effectuer un backup hebdomadaire de mon Raspberry Pi.<\/p>\n<p><!--more--><\/p>\n<p>Vous pouvez t\u00e9l\u00e9charger mon script ici : <a title=\"Script Backup RPi\" href=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2015\/03\/RPi-Backup.sh\" target=\"_blank\">RPi-Backup.sh<\/a><\/p>\n<p>Copiez-le dans le dossier de l&rsquo;utilisateur <em>pi<\/em> de votre Raspberry :<\/p>\n<pre>\/home\/pi\/<\/pre>\n<p>Rendez ensuite le script ex\u00e9cutable :<\/p>\n<pre>$ sudo chmod u+x \/home\/pi\/RPi-Backup.sh<\/pre>\n<p>On va ensuite ajouter une t\u00e2che dans <em>Cron<\/em> :<\/p>\n<pre>$ sudo crontab -e<\/pre>\n<p>Et on ajoute cette ligne au fichier :<\/p>\n<pre>30 3 * * 1 \/home\/pi\/RPi-Backup.sh &gt; \/home\/pi\/RPi-Backup.log 2&gt;&amp;1<\/pre>\n<p>La t\u00e2che sera ex\u00e9cut\u00e9e \u00e0 3h30 (30 minutes, 3 heures) du matin tous les lundis (dimanche = 0, lundi = 1, &#8230;).<\/p>\n<p>On quitte (<code>ctrl+x<\/code>) et on enregistre les modifications.<\/p>\n<p>Puis, on \u00e9dite le fichier pour l&rsquo;adapter \u00e0 vos besoins :<\/p>\n<pre>$ sudo nano \/home\/pi\/RPi-Backup.sh<\/pre>\n<pre>#!\/bin\/sh\r\n\r\necho \"Ex\u00e9cution du script de Backup\"\r\necho \"=============================\"\r\necho \"$(date +%Y%m%d-%T)\"\r\necho\r\n\r\n# M\u00e9morisation de l'heure du d\u00e9but du backup\r\nhback=$(date +%H%M)\r\n\r\n# Arret des services\r\necho\r\necho \"$(date +%Y%m%d-%T) : Arret des services\"\r\necho\r\nsudo service minidlna stop\r\nsudo service transmission-daemon stop\r\nsudo service nginx stop\r\nsudo service mysql stop\r\nsudo service php5-fpm stop\r\nsudo service fr24feed stop\r\n\r\nsleep 3\r\n\r\n# Suppression des paquets p\u00e9rim\u00e9s\r\necho\r\necho \"$(date +%Y%m%d-%T) : Suppression des paquets p\u00e9rim\u00e9s\"\r\necho\r\nsudo apt-get autoclean\r\n\r\nsleep 3\r\n\r\n# Suppression du contenu de la corbeille de Root\r\necho\r\necho \"$(date +%Y%m%d-%T) : Suppression du contenu de la corbeille de Root\"\r\necho\r\nsudo rm -r -f -v \/root\/.local\/share\/Trash\/files\/*\r\n\r\n# Suppression du contenu de la corbeille de Pi\r\necho\r\necho \"$(date +%Y%m%d-%T) : Suppression du contenu de la corbeille de Pi\"\r\necho\r\nsudo rm -r -f -v \/home\/pi\/.local\/share\/Trash\/files\/*\r\n\r\nsleep 3\r\n\r\n# Suppression du contenu de UpDraft Plus\r\necho\r\necho \"$(date +%Y%m%d-%T) : Suppression du contenu de UpDraft Plus\"\r\necho\r\nsudo rm -r -f -v \/var\/www\/wordpress\/wp-content\/updraft\/*.gz\r\n\r\nsleep 3\r\n\r\n# Remplissage de l'espace libre par des z\u00e9ros\r\necho\r\necho \"$(date +%Y%m%d-%T) : Remplissage de l'espace libre par des z\u00e9ros\"\r\necho\r\n\r\nsudo sync\r\n\r\nsudo dd if=\/dev\/zero of=\/home\/pi\/Desktop\/zero.small.file bs=1024 count=102400\r\nsudo dd if=\/dev\/zero of=\/home\/pi\/Desktop\/zero.file bs=1024\r\n\r\nsudo sync\r\nsleep 30\r\nsudo sync\r\n\r\nsleep 3\r\n\r\n# Suppression des fichiers de z\u00e9ros\r\necho\r\necho \"$(date +%Y%m%d-%T) : Suppression des fichiers de z\u00e9ros\"\r\necho\r\n\r\nsudo rm -f -v \/home\/pi\/Desktop\/zero.small.file\r\nsudo rm -f -v \/home\/pi\/Desktop\/zero.file\r\n\r\nsleep 3\r\n\r\n# Ex\u00e9cution du backup\r\necho\r\necho \"$(date +%Y%m%d-%T) : Ex\u00e9cution du backup\"\r\necho\r\nsudo dd bs=4M if=\/dev\/mmcblk0 | gzip &gt; \/media\/RPi-USB-Dsk\/Backups\/backup-`date +%Y%m%d`-$hback.gz\r\n\r\nsleep 3\r\n\r\n# Suppression du backup d'il y a 26 semaine (182 jours ou 6 mois)\r\necho\r\necho \"$(date +%Y%m%d-%T) : Suppression du backup d'il y a 26 semaine (182 jours ou 6 mois)\"\r\necho\r\nsudo rm -f -v \/media\/RPi-USB-Dsk\/Backups\/backup-$(date --date=\"182 days ago\" +%Y%m%d)-0330.gz\r\n\r\nsleep 3\r\n\r\n# Reprise des services\r\necho\r\necho \"$(date +%Y%m%d-%T) : Reprise des services\"\r\necho\r\nsudo service php5-fpm start\r\nsudo service mysql start\r\nsudo service nginx start\r\nsudo service transmission-daemon start\r\nsudo service minidlna start\r\nsudo service fr24feed start\r\n\r\nsleep 3\r\n\r\necho\r\necho \"$(date +%Y%m%d-%T) : Fin du script Backup.sh\"<\/pre>\n<p>Adaptez la liste des services qui seront arr\u00eat\u00e9s et red\u00e9marr\u00e9s en fin de backup.<\/p>\n<p><a title=\"Updraft Plus\" href=\"https:\/\/updraftplus.com\/\" target=\"_blank\">Updraft Plus<\/a> est un plugin WordPress qui permet d&rsquo;automatiser une sauvegarde WordPress dans le cloud selon un planning d\u00e9fini.<\/p>\n<p>Modifiez cette ligne pour adapter le chemin vers votre disque dur ou la destination de la sauvegarde :<\/p>\n<pre>$ sudo dd bs=4M if=\/dev\/mmcblk0 | gzip &gt; \/media\/RPi-USB-Dsk\/Backups\/backup-`date +%Y%m%d`-$hback.gz<\/pre>\n<p>Sur MAC, pour restaurer la sauvegarde depuis le fichier <code>.gz<\/code> vers la carte SD, proc\u00e9dez comme suit :<\/p>\n<p>On insert la carte SD dans le lecteur du Mac et on recherche son nom :<\/p>\n<pre>$ diskutil list<\/pre>\n<p><a href=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/02\/RPi-Backup-02.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"393\" data-permalink=\"https:\/\/www.fanjoe.be\/?attachment_id=393\" data-orig-file=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/02\/RPi-Backup-02.png\" data-orig-size=\"489,100\" data-comments-opened=\"1\" data-image-title=\"RPi-Backup-02\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/02\/RPi-Backup-02.png\" class=\"alignnone size-full wp-image-393\" src=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/02\/RPi-Backup-02.png\" alt=\"RPi-Backup-02\" width=\"489\" height=\"100\" srcset=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/02\/RPi-Backup-02.png 489w, https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/02\/RPi-Backup-02-300x61.png 300w\" sizes=\"auto, (max-width: 489px) 100vw, 489px\" \/><\/a><\/p>\n<p>Ici, la carte SD se nome <code>\/dev\/disk5<\/code><\/p>\n<p>On va maintenant <span style=\"text-decoration: underline;\">d\u00e9monter<\/span> et <strong>PAS \u00c9JECTER<\/strong> la carte SD avec la commande suivante dans le <code><strong>Terminal<\/strong><\/code> du Mac :<\/p>\n<pre>$ diskutil unmountDisk \/dev\/<strong>disk5<\/strong><\/pre>\n<p>Attention <strong>disk5<\/strong> est un exemple !<br \/>\nManiez cette commande avec <strong>la plus grande prudence<\/strong>.<br \/>\n<strong><span style=\"color: #ff0000;\">Une erreur pourrait effacer un mauvais disque.<\/span><\/strong><\/p>\n<p>Puis, on ex\u00e9cute la restauration du fichier backup vers la carte SD sur le Mac :<\/p>\n<pre>$ sudo gzip -dc ~\/Desktop\/backup-20150305-0330.gz | sudo dd of=\/dev\/<strong>disk5<\/strong> bs=4m<\/pre>\n<p>Dans notre exemple, le fichier de sauvegarde est sur le bureau du Mac et se nomme : <code>backup-20150305-0330.gz<\/code><\/p>\n<p>La proc\u00e9dure peut durer 2h pour une carte de 16Go en fonction de la vitesse d&rsquo;\u00e9criture de celle-ci et des performances du lecteur.<br \/>\nDurant ce temps, rien ne s&rsquo;affichera dans le Terminal. Ne le quittez pas tant que la restauration n&rsquo;est pas termin\u00e9e.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il y a quelques temps, j&rsquo;avais publi\u00e9 des articles traitant de la sauvegarde et des moyens pour en r\u00e9duire la&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1374,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_post_was_ever_published":false},"categories":[10,3,178,12],"tags":[21,131],"class_list":["post-1373","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-geek","category-informatique","category-mac","category-raspberrypi","tag-backup","tag-carte-sd","end"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2015\/03\/data_backup-01.png","_links":{"self":[{"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/posts\/1373","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1373"}],"version-history":[{"count":0,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/posts\/1373\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/media\/1374"}],"wp:attachment":[{"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}