Automatische Raspberry Pi backup – complete image

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.

In dit artikel 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. We gaan beginnen!

Benodigdheden

Maak een de folder aan op je Raspberry Pi. Ik heb gekozen voor /mnt/backup, maar het mag een willekeurig folder zijn:

sudo mkdir /mnt/backup

Mounten na reboot

Uiteraard willen we dat de mount naar je NAS na een reboot van de Raspberry Pi ook aanwezig is. Hiervoor dienen we een wijziging aan te brengen ins fstab:

sudo nano /etc/fstab

Voeg onderstaande regel toe:

//192.168.2.157/Backups/Backup_Raspberry_Pi /mnt/backup cifs comment=systemd.automount,defaults,rw,username=pietje,password=puk,uid=1000, gid=46 0 0
  • 192.16.8.2.157 -> IP-adres van je NAS
  • Backups/Backup_Raspberry_Pi -> de folder op je NAS die je wilt mounten
  • /mnt/backup -> de folder op je Raspberry Pi
  • comment=systemd.automount -> hiermee geven we aan dat de mount alleen plaatsvindt als er om gevraagd wordt. Aangezien ik alleen de WLAN-interface op de Raspberry gebruikt moest ik deze voorwaarde toevoegen, aangezien de Raspberry Pi na een reboot wilde mounten, terwijl de Wi-Fi-verbindig nog niet opgestart was.
  • username=pietje -> gebruikersnaam van je NAS
  • password=puk -> wachtwoord van je NAS

Test de mount met commando:

sudo mount -a

Als er een fout in fstab zit krijg je dit te zien. Eventueel kun je onderstaand commando gebruiken om bijvoorbeeld te controleren dat je gebruikersnaam en wachtwoord correct zijn:

sudo mount.cifs //192.168.2.157/Backups/Backup_Raspberry_Pi /mnt/backup -o user=username,pass=password,sec=ntlmssp,uid=1000,gid=46

Corrigeer eventuele fouten en download vervolgens hier het script. Pak het script uit met een extracter (bv. WinRar) en plaats het .sh-bestand in een folder naar keuze. Ik heb het script op mijn NAS geplaatst, zodat ik het ook kan gebruiken voor mijn andere Raspberry Pi’s.

Maak het script uitvoerbaar:

sudo chmod +x /mnt/backup/system_backup.sh

Crontab

De laatste stap is om het script toe te voegen aan crontab. Aangezien het script uitgevoerd moet worden als root moeten we de root crontab wijzigen:

sudo crontab -e

Voeg onderstaande regel toe (let op dat je de locatie wijzigt naar de folder waar je het script hebt opgeslagen):

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

Er wordt nu iedere nacht om 3 uur een backup van de SD-kaart van je Raspberry Pi gemaakt.

 

Variabelen in het script

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.

10 gedachten over “Automatische Raspberry Pi backup – complete image

  • 23 december 2018 om 16:45
    Permalink

    Top tip!
    Er moe(s)t alleen geen spatie tussen “uid=1000, gid=46″…
    En vraag me ook af een ddump van een pi wel een consistente backup oplevert als je er bijvoorbeeld Domoticz op draait dat constant aan het loggen is…

    Beantwoorden
    • 30 december 2018 om 09:17
      Permalink

      Je zou de services van Domoticz eerst kunnen stoppen, de backup draaien en vervolgens de services van Domoticz weer starten.

      Trouwens, ook niet onbelangrijk: Welke syntax kan het beste worden gebruikt om een eventuele restore uit te voeren?

      Beantwoorden
  • 30 december 2018 om 14:12
    Permalink

    Kreeg een melding: Mount error (112): Host is down. Regel aangepast naar;
    //192.168.2.157/Backups/Backup_Raspberry_Pi /mnt/backup cifs comment=systemd.automount,defaults,rw,username=pietje,password=puk,vers=1.0,uid=1000,gid=46 0 0

    Let op: Vers=1.0 en geen spatie achter,

    Beantwoorden
  • 25 februari 2019 om 21:43
    Permalink

    Hi Joost,

    Het is mij uiteindelijk gelukt. Mijn images op de NAS zijn nu alles tussen de 1 MB en 28,65 MB. Een fractie van de werkelijkheid dus. Overigens heeft mijn 64 GB USB stick waar mijn RB Pi 3B+ op draait nog slechts enkel 18 GB over…

    Wat heb. ik fout gedaan? Zou dit graag werkend hebben…

    Dank & groet van een fan,
    Michel

    Beantwoorden
  • 6 maart 2019 om 14:15
    Permalink

    Ik krijg steeds deze foutmelding :
    -bash: //192.168.178.2/Public/domoticzbackup: No such file or directory

    terwijl map toch echt bestaat. Wie weet een oplossing ?

    Beantwoorden
  • 20 april 2019 om 15:18
    Permalink

    Dank voor dit scripts (en de andere op deze site)! Het werkt vlekkeloos!

    Echter 1 vraag: retention_days staat bij mij op 3 dagen. Het is vandaag 20-4 en vannacht heeft het script de backup van 15-4 weg gehaald. Op dit moment staan er dus 5 backups op mijn nas (16-4 t/m 20-4). Terwijl dat er volgens mij dan 4 moeten zijn (de oudste backup zou dus max 3 dagen oud moeten zijn).

    Kan iemand toelichten hoe dit zit? Want zo goed snap ik Linux commands nog niet.

    Dank alvast!

    Beantwoorden
  • 19 juli 2019 om 00:41
    Permalink

    Het mounten was even lastig.
    Daarna een backup maken ging prima, tot een kleine 32 gb.
    Hiervoor heb ik het script een beetje aangepast:
    dd if=/dev/mmcblk0 bs=4M | gzip -c > $backup_path/$HOSTNAME.$(date +%Y%m%d).img.gz
    Het resultaat is een backup die 10% is van sd-kaart!

    Beantwoorden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *