Automatische Raspberry Pi backup

Maak een complete image van je micro-sd kaart

Vroeg of laat geven de SD-kaarten van de Raspberry Pi’s problemen, bijvoorbeeld door stroomuitval en door verkeerde instellingen. Zodra je je Raspberry Pi hebt voorzien van Raspbian en eventueel Domoticz wil je natuurlijk een Raspberry Pi backup hebben voor het geval er iets fout gaat en je Raspberry niet meer boot.

Hier proberen we uit te leggen we uit hoe je een automatische Raspberry Pi backup kunt instellen. Het doel is om de backup iedere nacht om 03.00 uur te laten uitvoeren en de Raspberry Pi Backup weg te schrijven naar een folder op je NAS door middel van een NFS share (uiteraard kun je ook een USB-stick of externe harddisk gebruiken). Daarnaast willen we dat de Raspberry Pi gewoon blijft draaien tijdens de backup en dat je de Raspberry Pi backup direct op een nieuwe SD-kaart kunt restoren.

Je hebt een externe schijf of een NAS nodig waar je een drive of map kan mounten. En je hebt (root) rechten (sudo) nodig om  te kunnen mounten en de mappen aan te maken.

We gaan eerst de map waar we de mount aankoppelen maken, ik heb gekozen voor /media/backup, maar dat kan ook een andere map of naam zijn…..

sudo mkdir /media/backup

Ik heb zelf op mijn NAS een gebruiker ‘pi‘ aangemaakt met als wachtwoord ‘raspberry‘ en in zijn homedirectorie (op de synology is dat homes/pi/) de map Backups gemaakt, dit kun je natuurlijk geheel naar eigen wens aanpassen naar je eigen situatie. (De gebruikersnaam en wachtwoord heb ik hetzelfde gemaakt als op de pi om verwarring te voorkomen, maar ook dit kun je naar wens aanpassen)

Nu moeten we deze map Backups op de NAS automatisch aankoppelen na een reboot, wel zo handig 🙂 Hiervoor moeten we de ‘mount’ toevoegen aan fstab, maar eerst even kijken wat de ‘uid’ en ‘gid’ zijn van onze gebruiker pi, voer uit in de terminal op je pi:

id pi

Je krijgt dan zoiets terug:

We weten nu wat het uid en gid van onze gebruiker die de mount moet gaan maken, en je weet het ip adres van je NAS ook natuurlijk.

sudo nano /etc/fstab

Voeg de volgende regel toe:

//10.0.0.254/homes/pi/Backups /media/backup cifs comment=systemd.automount,defaults,rw,username=pi,password=raspberry,vers=1.0,uid=1000,gid=1000 0 0 

We hebben het volgende gedaan:

  • 10.0.0.254 -> IP-adres van je NAS
  • homes/pi/Backups -> de folder op je NAS die je wilt mounten
  • /media/backup -> de folder op je Raspberry Pi
  • comment=systemd.automount -> hiermee geven we aan dat de mount alleen plaatsvindt als er om gevraagd wordt. Voor de zekerheid, mocht de LAN verbinding wegvallen en er alleen WiFi is geeft dat na de boot een probleem, omdat de Raspberry Pi na de reboot direct wil mounten, en de Wlan verbindig soms nog niet opgestart is.
  • username=pi -> gebruikersnaam van je NAS
  • password=raspberry -> wachtwoord van je NAS
  • vers=1.0 -> gebruik versie 1.0, dit kun je weglaten maar geeft soms verbindingsproblemen
  • uid=1000 -> het UID van je bruiker pi op je raspberry pi
  • gid=1000 -> de GID van je gebruiker pi op je raspberry pi

Nu gaan we de ‘mount‘ testen, voer uit:

sudo mount -a

Mocht er toch nog een fout in je ‘fstab‘ regel zitten krijg je die hier te zien.

Je kan ook de volgende opdracht gebruiken om de gebruikte gegevens te testen, voer uit:

sudo mount.cifs //10.0.0.254/homes/pi/Backups /media/backup -o user=username,pass=password,sec=ntlmssp,uid=1000,gid=1000

Als dit zonder fouten is gelukt kunnen we het script ‘system_backup.sh‘ gaan plaatsen op de NAS, het staat om 2 redenen op de NAS, het kan zonder de mount niet worden uitgevoerd, dus je pi is niet een backup aan het maken zonder de verbinding met de NAS, en ik kan deze op de NAS gebruiken voor andere raspberry pi’s in mijn netwerk.


Dan nu het script: system_backup.sh (Ik heb deze dus op de NAS geplaatst en nu te vinden onder /media/backup op je PI) Update: Het script in een .zip KLIK

Het gebruikte script heeft twee variabelen, namelijk ‘backup_path’ en ‘retention_days’. De eerste is de locatie waar de backup wordt opgeslagen, de tweede is het aantal dagen dat een backup wordt bewaard.
Deze twee waarden kun je zelf aanpassen.

We maken het script uitvoerbaar met de volgende opdracht:

chmod +x /media/backup/system_backup.sh

Nu kun je het script testen door door uit te voeren:

cd /media/backup

./system_backup.sh

Testen hoeft niet, maar als je zeker wil weten dat het tot zover is goed gegaan wel zo handig. Het kan wel even duren als je veel data op je SD hebt staan, een en ander is ook afhankelijk van de doorvoer van je netwerk en de belasting van je Raspberry PI. Na ongeveer 10 minuten had ik het bestand ‘raspberrypi3b.20170214.img’ van 32Gb op mijn NAS staan, het werkt dus.


Nu kunnen we het script automatisch laten uitvoeren, we doen dat met ‘crontab’, het script moet uitgevoerd worden als root dus gaan we de root crontab opdracht aanmaken/wijzigen, voer uit:

sudo crontab -e

Voeg de volgende toe (let op dat je de locatie wijzigt naar de folder “/media/backup/system_backup.sh” waar je het script hebt opgeslagen)

0 3 * * * /media/backup/system_backup.sh

Update: Crontab afsluiten geeft voor sommige gebruikers problemen, de oplossing:

  1. In VI, druk op escape ‘esc’ en type dan :wq (w is opslaan, en q is afsluiten)
  2. In NANO, druk op control+x ‘ctrl+x’ en geef dan y voor yes.

Iedere nacht om 3 uur wordt er nu een backup van de (micro) SD-kaart van je Raspberry Pi gemaakt.
De backup is een image bestand welke bij mij de volgende naam heeft gekregen ‘raspberrypi3b.20170214.img’ (het is namelijk Valentijsdag vandaag) deze kun je simpel weer op een nieuwe micro SD kaart schrijven mocht er iets misgaan. Zorg dus altijd dat je een reserve SD of Micro-SD kaart van het juiste formaat (in mijn geval 32Gb) op voorraad hebt.

Test voor je het echt nodig hebt deze procedure uit, schaf een reserve SD kaart aan en schrijf de ‘backup’ image er naar toe, test of je pi hiervan kan booten en of alles goed is gegaan, backups maken is altijd goed, maar controleren of je deze ook kan lezen en terug plaatsen is zeker zo belangrijk!

Een reserve Raspberry PI met dezelfde hardware en versie is zeker aan te bevelen om een en ander te testen, je kunt dan je Domoticz of welk systeem dan ook laten zo als het is zonder downtime en je hebt een backup van hardware en software voor het geval dat…….

Je kan dan wel een mooie backup hebben van maximaal een dag oud, maar zonder PI of voeding is er zo weer een dag voorbij eer je alles weer hebt aangeschaft en draaiende…….

Hoe je de ‘backup’ image naar een micro-SD kan schrijven? Hiervoor gebruik ik Etcher, lees hier verder……


Laatste wijziging: 27 mei 2019


2 Responses to Automatische Raspberry Pi backup

  1. Hoe kom ik uit die crontap?

    • Crontab afsluiten geeft voor sommige gebruikers problemen, de oplossing:

      • In VI, druk op escape ‘esc’ en type dan :wq (w is opslaan, en q is afsluiten)
      • In NANO, druk op control+x ‘ctrl+x’ en geef dan y voor yes.

      Suc6
      Met vriendelijke groet,
      Terry van Erp