{"id":422,"date":"2014-03-02T22:27:00","date_gmt":"2014-03-02T21:27:00","guid":{"rendered":"https:\/\/www.fanjoe.be\/?p=422"},"modified":"2015-03-08T21:55:37","modified_gmt":"2015-03-08T20:55:37","slug":"raspberry-pi-automatisation-du-backup-en-local","status":"publish","type":"post","link":"https:\/\/www.fanjoe.be\/?p=422","title":{"rendered":"Raspberry Pi : Automatisation du backup en local"},"content":{"rendered":"<p>Il y a quelques jours, je vous expliquais comment j&rsquo;effectuais un backup de la carte SD du Raspberry Pi sur mon Mac. Proc\u00e9dure qui avait pour inconv\u00e9nient d&rsquo;arr\u00eater le RPi pendant toute la dur\u00e9e de la sauvegarde.<\/p>\n<p>En fouillant un peu sur la toile, j&rsquo;ai trouv\u00e9 divers proc\u00e9dures (par exemple <a href=\"http:\/\/www.stuffaboutcode.com\/2012\/08\/raspberry-pi-auto-backups.html\" target=\"_blank\">ici<\/a> et <a href=\"http:\/\/www.raspberrypi.org\/phpBB3\/viewtopic.php?f=91&amp;t=46911\" target=\"_blank\">ici<\/a>) que j&rsquo;ai modifi\u00e9 et adapt\u00e9 \u00e0 ma sauce.<\/p>\n<p><a href=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/03\/RPi-Backup-03.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-425 alignleft\" src=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/03\/RPi-Backup-03.png\" alt=\"RPi-Backup-03\" width=\"282\" height=\"144\" \/><\/a>Tout d&rsquo;abord, j&rsquo;ai connect\u00e9 un \u00ab\u00a0vieux\u00a0\u00bb disque dur de 120Go au port USB du RPi.<\/p>\n<p>Il s&rsquo;agit d&rsquo;un LaCie Mobile Disk 2,5 inch de r\u00e9cup\u00e9ration, dont le HD avait saut\u00e9. Il a l&rsquo;avantage de poss\u00e9der une prise d&rsquo;alimentation s\u00e9par\u00e9e sur laquelle j&rsquo;ai connect\u00e9 un transfo 5V 1A.<\/p>\n<p>Ce disque est format\u00e9 en Linux ext3. Il est mont\u00e9 en <code>\/media\/RPi-USB-Dsk\/<\/code><\/p>\n<p><a href=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/03\/RPi-Backup-02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-424\" src=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/03\/RPi-Backup-02.png\" alt=\"RPi-Backup-02\" width=\"490\" height=\"145\" srcset=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/03\/RPi-Backup-02.png 490w, https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/03\/RPi-Backup-02-300x88.png 300w\" sizes=\"auto, (max-width: 490px) 100vw, 490px\" \/><\/a><\/p>\n<p><strong>Voici la proc\u00e9dure que j&rsquo;ai utilis\u00e9 pour automatiser le backup :<\/strong><\/p>\n<p>On va regarder comment s\u2019appelle la carte SD :<\/p>\n<pre>sudo fdisk -l<\/pre>\n<p><a href=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/02\/RPi-Backup_01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-392\" src=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/02\/RPi-Backup_01.png\" alt=\"RPi-Backup_01\" width=\"489\" height=\"214\" srcset=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/02\/RPi-Backup_01.png 489w, https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/02\/RPi-Backup_01-300x131.png 300w\" sizes=\"auto, (max-width: 489px) 100vw, 489px\" \/><\/a><\/p>\n<p>Ici, la carte s&rsquo;appelle <strong>mmcblk0<\/strong>.<\/p>\n<p>Dans <code>\/home\/pi\/<\/code>, on va cr\u00e9er un script charg\u00e9 d&rsquo;ex\u00e9cuter le backup.<\/p>\n<pre>cd \/home\/pi\r\nsudo nano runSDCardBackup.sh<\/pre>\n<p>Dans l&rsquo;\u00e9diteur, on va copier ce code (une seule ligne) :<\/p>\n<pre>sudo dd bs=4M if=\/dev\/mmcblk0 | gzip &gt; \/media\/RPi-USB-Dsk\/Backups\/backup-`date +%Y%m%d-%H%M`.gz<\/pre>\n<p>On quite avec &lt;Ctrl&gt;X et oui pour sauver.<br \/>\nCe code va cr\u00e9er un ficher nomm\u00e9 <strong>backup-YYYYMMDD-HHMM.gz<\/strong> o\u00f9 Y = ann\u00e9e en 4 digits, M = mois en 2 digits, D = jour en 2 digits, H = heures en 2 digits et M = minutes en 2 digits.<br \/>\nPlus d&rsquo;infos sur le formatage des jours, mois, ann\u00e9es, &#8230; sur <a href=\"https:\/\/doc.tiki.org\/Date+and+Time+Features\" target=\"_blank\">cette page<\/a>.<br \/>\nCe fichier va prendre place sur <code>\/media\/RPi-USB-Dsk\/Backups\/<\/code> o\u00f9 <strong>RPi-USB-Dsk<\/strong> est le nom du disque et <strong>Backups<\/strong> le nom du dossier \u00e0 la racine du disque.<br \/>\nPour tester ce script on le rend ex\u00e9cutable, puis, on l&rsquo;ex\u00e9cute avec les commandes :<\/p>\n<pre>sudo chmod u+x runSDCardBackup.sh\r\nsudo .\/runSDCardBackup.sh<\/pre>\n<p>Le processus de sauvegarde devrait commencer et cr\u00e9er le fichier <strong>.gz<\/strong> qui va grossir au fur et \u00e0 mesure de l&rsquo;avancement de la t\u00e2che.<br \/>\nLa ligne de commande va se bloquer et ne sera plus disponible durant tout le processus. 1h ou plus.<br \/>\nPour contr\u00f4ler l&rsquo;avancement, ouvrez un deuxi\u00e8me terminal ou lancez un VNC.<\/p>\n<p>Maintenant, nous allons automatiser tout \u00e7a gr\u00e2ce \u00e0 <strong>Cron<\/strong>. C&rsquo;est un programme Unix qui permet d&rsquo;ex\u00e9cuter automatiquement des t\u00e2ches \u00e0 un horaire d\u00e9fini.<\/p>\n<p>Editez la table de configuration de Cron avec la commande suivante :<\/p>\n<pre>sudo crontab -e<\/pre>\n<p>Dans l&rsquo;\u00e9diteur, tout en bas, ajoutez la ligne suivante (une seule ligne) :<\/p>\n<pre>30 3 * * * \/home\/pi\/runSDCardBackup.sh &gt; \/home\/pi\/SDCardBackup.log 2&gt;&amp;1<\/pre>\n<p>Ici, la sauvegarde se fera tous les jours \u00e0 3:30AM avec un log \u00e0 l&rsquo;issue.<br \/>\n<code>2&gt;&amp;1<\/code> indique de ne pas envoyer de rapport par mail \u00e0 l&rsquo;issue du script.<\/p>\n<p>Pour comprendre tous les param\u00e8tres de Crontab, repportez-vous \u00e0 <a href=\"http:\/\/www.adminschoice.com\/crontab-quick-reference\/\" target=\"_blank\">cette page<\/a>.<\/p>\n<p>Pour restaurer la sauvegarde, connectez le HD \u00e0 votre MAC, copiez le fichier de backup d\u00e9sir\u00e9 sur le bureau, ins\u00e9rez la carte SD dans votre MAC et tapez cette commande dans le terminal :<\/p>\n<pre>gzip -dc ~\/Desktop\/<strong>backup.gz<\/strong> | sudo dd of=\/dev\/<strong>disk5<\/strong> bs=4m<\/pre>\n<p>V\u00e9rifiez \u00e9galement que la carte a bien \u00e9t\u00e9 \u00ab\u00a0d\u00e9mont\u00e9e\u00a0\u00bb (pas \u00e9ject\u00e9e) avant de proc\u00e9der \u00e0 la restauration :<\/p>\n<pre>diskutil unmountDisk \/dev\/<strong>disk5<\/strong><\/pre>\n<p>Attention <strong>disk5<\/strong> est un exemple ! Voir <a title=\"Raspberry Pi : Backup de la carte SD\" href=\"https:\/\/www.fanjoe.be\/?p=391\" target=\"_blank\">cet article<\/a> pour trouver le nom de la carte SD sur un MAC.<br \/>\nManiez cette commande avec <span style=\"color: #ff0000;\"><strong>la plus grande prudence<\/strong><\/span>. Une erreur pourrait effacer un mauvais disque.<\/p>\n<p>Pour \u00e9viter que le disque ne se remplisse trop vite, on peut modifier le crontab pour que le backup ne s&rsquo;effectue que le lundi \u00e0 3:30AM :<\/p>\n<pre>30 3 * * 1 \/home\/pi\/runSDCardBackup.sh &gt; \/home\/pi\/SDCardBackup.log 2&gt;&amp;1<\/pre>\n<p>Et pour \u00e9viter que le disque ne finisse par d\u00e9border, on peut ajouter cette ligne dans le script qui va supprimer les backups 3 mois apr\u00e8s (91 jours, soit 13 semaines) :<\/p>\n<pre>sudo rm \/media\/RPi-USB-Dsk\/Backups\/backup-$(date --date=\"91 days ago\" +%Y%m%d)-0330.gz<\/pre>\n<p><strong>Edit 08\/03\/2015 :<\/strong><\/p>\n<p>Lisez aussi cet article pour un r\u00e9sum\u00e9 :<br \/>\n<a title=\"Raspberry Pi : Script de backup de la carte SD\" href=\"https:\/\/www.fanjoe.be\/?p=1373\">https:\/\/www.fanjoe.be\/?p=1373<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il y a quelques jours, je vous expliquais comment j&rsquo;effectuais un backup de la carte SD du Raspberry Pi sur&#8230;<\/p>\n","protected":false},"author":1,"featured_media":423,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[10,3,12],"tags":[34,27,28,29,35,26],"class_list":["post-422","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-geek","category-informatique","category-raspberrypi","tag-automation","tag-ext2","tag-ext3","tag-ext4","tag-mount","tag-partition","end"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2014\/03\/RPi-Backup-01.png","_links":{"self":[{"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/posts\/422","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=422"}],"version-history":[{"count":0,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/posts\/422\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/media\/423"}],"wp:attachment":[{"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}