Dagelijkse backup van Domoticz naar een externe harddisk

Zodra je Domoticz heb geïnstalleerd wil je natuurlijk ook backups kunnen maken. Een dagelijkse backup van Domoticz maken kan eenvoudig via de ingebouwde functie. Deze backup wordt ieder uur, dag en maand automatisch weggeschreven naar de folder /home/pi/domoticz/backups/. Je hoeft hiervoor alleen maar Enable Automatic Backup aan te vinken. Echter, indien de geheugenkaart van de Raspberry Pi crasht kun je deze backups niet meer gebruiken en ben je alsnog het spreekwoordelijke haasje. In dit artikel gaan we in op verschillende backup scripts, allemaal met een eigen functie.

Benodigdheden

Voorbereiding

Zoek op je Network Attached Storage (NAS) of externe harddisk een folder waar je de backup van Domoticz wilt gaan opslaan. Zorg ervoor dat FTP ingeschakeld is en dat je de inloggegevens bij de hand hebt. Stel in Domoticz een gebruikersnaam en wachtwoord in (website protection) en stel Local Networks (no username/password) in.

Plaats het script in /home/pi/domoticz/scripts en pas de parameters naar eigen gebruik aan.

Script voor backup van Domoticz database naar een FTP-server

Dit script backupt een kopie van je ‘domoticz.db’ (database) naar de opgegeven map. Mogelijk wil je ook een paar gebruikte script meenemen met de backup, kijk dan naar een script verderop in dit artikel.


Note: Indien dit niet werk outcomment dan “service domoticz.sh stop” en “service domoticz.sh start” door een ‘#’ ervoor te zetten (bv. “#service domoticz.sh stop”). Het lijkt erop dat Domoticz op een Raspberry Pi soms niet snel genoeg stop, wat resulteert in een leeg database-bestand.

Script om meerdere mappen te backuppen naar een FTP-server

Het volgende script zal de opgegeven folder (/home/pi/domoticz/xxxx/, verander xxxx naar de folder die je wilt backuppen) naar de FTP-locatie wegschrijven. Dit script maakt geen backup van de domoticz.db database, zie het script hierboven.

Script om te backuppen naar lokale folders (database + meerdere folders)

Dit script kan gebruikt worden om backups te maken en ze weg te schrijven naar een locatie op hetzelfde apparaat. Het is in principe niet aan te raden om voor een doellocatie op hetzelfde apparaat te kiezen, maar ik plaats ze in een bepaalde folder die vervolgens iedere nacht weer naar mijn NAS weggeschreven wordt.

Script voor backup naar een Synology NAS

Dit script maakt backups (Domoticz Database & Domoticz scripts & Telegram Scripts) naar de geselecteerde FTP-locatie. Vergeet niet om het Synology gebruikersaccount FTP-rechten te geven in DSM.

Maak het script uitvoerbaar

Gebruik hiervoor het commando:


Test het script met commando:

Maak een automatisch taak van het script

Login als pi gebruiker en geef commando:


Voeg onderstaande regel toe aan het crontab document:


Hierboven staat dat iedere dag om 01.00 uur een backup gemaakt moet worden. Je kunt dit zelf naar wens instellen.


Sla tot slot de crontab op. Linux maakt nu dagelijks een backup Domoticz Database.

21 gedachten over “Dagelijkse backup van Domoticz naar een externe harddisk

  • 17 augustus 2018 om 18:38
    Permalink

    mmm Thanks voor je mooie scripts..
    Maar kun je misschien ook een script maken om een backup naar de google drive te schrijven??
    Stel dat er in huis iets gebeurd,,,,

    Hopelijk…

    Groetjes
    Dylano

    Beantwoorden
  • 6 januari 2019 om 22:06
    Permalink

    misschien gekke vraag…maar domoticz maakt elk uur een backup, waarom wordt er niet gewoon 1 van die backups opgepakt en elke nacht verplaatst naar een externe locatie? anders dan met dit script weer een backup te maken?

    Beantwoorden
    • 6 januari 2019 om 22:13
      Permalink

      Niet iedereen heeft de setting van uurlijkse backup aan staan (is ook wat overdreven om ieder uur een backup te draaien).

      Beantwoorden
  • 21 februari 2019 om 21:45
    Permalink

    Ik krijg een lege file als backup. Maar als ik wat verder lees, is het niet veel eenvoudiger om de originele domoticz.db gewoon te copieren met cp? Eventueel nog zippen? Of heeft dit nadelen?

    Beantwoorden
  • 23 maart 2020 om 14:24
    Permalink

    goedendag,

    kan iemand mij vertellen hoe ik deze backup weer terug kan zetten?

    Beantwoorden
    • 18 april 2020 om 16:24
      Permalink

      Joost?
      Zou je mijn Vraag ook kunnen beantwoorden aub. 🙂

      Beantwoorden
      • 18 april 2020 om 17:33
        Permalink

        Johs, waar wil je een backup van terugzetten?

        Beantwoorden
        • 18 april 2020 om 19:40
          Permalink

          Hoi Joost,
          ik gebruik nu het script van “backup naar een Synology NAS”, dus de Domoticz Database & Domoticz scripts en telegram scripts.
          Als ik deze nu terug wil plaatsen hoe doe ik dat dan? De scripts worden netjes naar me nas gebackupd elke avond…. naar mooie *.tar bestandjes

          Ik hoor het wel.

          Alvast bedankt

          Beantwoorden
          • 19 april 2020 om 08:26
            Permalink

            Een database kun je terugzetten via Domoticz (Setup > Settings > Backup/Restore). De .tar bestanden kun je uitpakken met bv. WinRar er vervolgens met bv. FileZilla terug op de Raspberry zetten. Mocht je een Mac gebruiken dan moet je even googlen naar alternatief voor WinRar en FileZilla, maar de werkwijze is gelijk.

  • 18 april 2020 om 15:03
    Permalink

    krijg deze foutmelding dat directory niet bestaat maar bestaat wel. Wat doe ik verkeerd ?pi@raspberrypi:~/tmp/domoticz_/bin $ sudo sh /home/pi/domoticz/scripts/bash/backup.sh
    /home/pi/domoticz/scripts/bash/backup.sh: 15: /home/pi/domoticz/scripts/bash/backup.sh: cannot create /tmp/domoticz_/bin/date +%Y%m%d%H%M%S.db: Directory nonexistent
    gzip: /tmp/domoticz_/bin/date: No such file or directory
    gzip: +%Y%m%d%H%M%S.db: No such file or directory
    curl: Can’t open ‘/tmp/domoticz_/bin/date +%Y%m%d%H%M%S.db.gz’!
    curl: try ‘curl –help’ or ‘curl –manual’ for more information
    /bin/rm: kan ‘/tmp/domoticz_/bin/date’ niet verwijderen: Bestand of map bestaat niet
    /bin/rm: kan ‘+%Y%m%d%H%M%S.db.gz’ niet verwijderen: Bestand of map bestaat niet
    pi@raspberrypi:~/tmp/domoticz_/bin $

    Beantwoorden
    • 18 april 2020 om 16:16
      Permalink

      Heeft gebruiker pi wel rechten voor de directory?

      Beantwoorden
      • 18 april 2020 om 16:30
        Permalink

        heb map als gebruiker pi aangemaakt dus ik mag aannemen van wel. overigens kan ik de directory handmatig gewoon openen

        Beantwoorden
      • 19 april 2020 om 09:07
        Permalink

        Joost,
        Is dat alles? Super!!!
        Van de database wist ik. Maar dat het zo simpel zou zijn met de rest…
        Top thx.

        Beantwoorden
    • 17 mei 2020 om 22:37
      Permalink

      Het script loopt verkeerd op de timestamp. Met de volgende code werkt het wel: TIMESTAMP=$(/bin/date “+%Y%m%d%H%M%S”).

      Beantwoorden
  • 2 mei 2020 om 12:27
    Permalink

    Als ik het scrip uitvoer krijg ik de volgende reactie.
    de directory /tmp/domoticz_/bin/date +%Y%m%d%H%M%S bestaat bij mijn niet

    bash: 1: opdracht niet gevonden
    pi@raspberrypi:~ $
    pi@raspberrypi:~ $ sudo sh /home/pi/domoticz/scripts/domoticz_backup.sh
    Usage: /etc/init.d/domoticz {start|stop|status|restart|reload}
    : Directory nonexistentts/domoticz_backup.sh: 15: /home/pi/domoticz/scripts/domoticz_backup.sh: cannot create /tmp/domoticz_/bin/date +%Y%m%d%H%M%S
    Usage: /etc/init.d/domoticz {start|stop|status|restart|reload}
    gzip: /tmp/domoticz_/bin/date: No such file or directory
    : No such file or directory
    ‘!b.gzCan’t open ‘/tmp/domoticz_/bin/date +%Y%m%d%H%M%S
    curl: try ‘curl –help’ or ‘curl –manual’ for more information
    /bin/rm: kan ‘/tmp/domoticz_/bin/date’ niet verwijderen: Bestand of map bestaat niet
    /bin/rm: kan ‘+%Y%m%d%H%M%S’$’\r”.db.gz’$’\r\r’ niet verwijderen: Bestand of map bestaat niet

    Beantwoorden
  • 10 juni 2020 om 22:24
    Permalink

    Hoe kan ik bereiken dat oudere backups automatisch worden verwijderd op basis van retentie?

    Beantwoorden
  • 12 september 2020 om 11:45
    Permalink

    Hier ook problemen. please help:

    pi@raspberrypi:~ $ sudo sh /home/pi/domoticz/scripts/domoticz_backup.sh
    /home/pi/domoticz/scripts/domoticz_backup.sh: 18: /home/pi/domoticz/scripts/domo ticz_backup.sh: cannot create /tmp/domoticz_/bin/date +%Y%m%d%H%M%S.db: Director y nonexistent
    gzip: /tmp/domoticz_/bin/date: No such file or directory
    gzip: +%Y%m%d%H%M%S.db: No such file or directory
    tar: +%Y%m%d%H%M%S.tar.gz: Functie stat() is mislukt: Bestand of map bestaat nie t
    tar: Leidende ‘/’ wordt uit lidnamen weggelaten
    tar (child): /tmp/domoticz_scripts_/bin/date: Functie open() is mislukt: Bestand of map bestaat niet
    /home/pi/domoticz/scripts/
    tar (child): Error is not recoverable: exiting now
    /home/pi/domoticz/scripts/logrotate/
    /home/pi/domoticz/scripts/logrotate/domoticz
    tar: Leidende ‘/’ wordt uit doelen van harde koppelingen weggelaten
    /home/pi/domoticz/scripts/domoticz.conf
    /home/pi/domoticz/scripts/python/
    /home/pi/domoticz/scripts/python/script_device_demo.py
    /home/pi/domoticz/scripts/python/domoticz.py
    tar: /tmp/domoticz_scripts_/bin/date: Functie write() is mislukt: Gebroken pijp
    tar: Child returned status 2
    tar: Error is not recoverable: exiting now
    tar: +%Y%m%d%H%M%S.tar.gz: Functie stat() is mislukttar (child): /tmp/telegram_s cripts_/bin/date: Functie open() is mislukt: Bestand of map bestaat niet
    tar (child): Error is not recoverable: exiting now
    : Bestand of map bestaat niet
    tar: Leidende ‘/’ wordt uit lidnamen weggelaten
    tar: /home/pi/tg/scripts: Functie stat() is mislukt: Bestand of map bestaat niet
    tar: /tmp/telegram_scripts_/bin/date: Functie write() is mislukt: Gebroken pijp
    tar: Child returned status 2
    tar: Error is not recoverable: exiting now
    curl: (9) Server denied you to change to the given directory
    curl: Can’t open ‘/tmp/domoticz_/bin/date +%Y%m%d%H%M%S.db.gz’!
    curl: try ‘curl –help’ or ‘curl –manual’ for more information
    curl: Can’t open ‘/tmp/domoticz_scripts_/bin/date +%Y%m%d%H%M%S.tar.gz’!
    curl: try ‘curl –help’ or ‘curl –manual’ for more information
    curl: Can’t open ‘/tmp/telegram_scripts_/bin/date +%Y%m%d%H%M%S.tar.gz’!
    curl: try ‘curl –help’ or ‘curl –manual’ for more information
    /bin/rm: kan ‘/tmp/backup.db’ niet verwijderen: Bestand of map bestaat niet
    /bin/rm: kan ‘/tmp/domoticz_/bin/date’ niet verwijderen: Bestand of map bestaat niet
    /bin/rm: kan ‘+%Y%m%d%H%M%S.db.gz’ niet verwijderen: Bestand of map bestaat niet
    /bin/rm: kan ‘/tmp/domoticz_scripts_/bin/date’ niet verwijderen: Bestand of map bestaat niet
    /bin/rm: kan ‘+%Y%m%d%H%M%S.tar.gz’ niet verwijderen: Bestand of map bestaat nie t
    /bin/rm: kan ‘/tmp/telegram_scripts_/bin/date’ niet verwijderen: Bestand of map bestaat niet
    /bin/rm: kan ‘+%Y%m%d%H%M%S.tar.gz’ niet verwijderen: Bestand of map bestaat nie t

    Beantwoorden
    • 10 oktober 2020 om 17:31
      Permalink

      Jammer,

      het script heeft altijd goed gedraaid, maar na een upgrade op nieuwe pi4 heb ik nog steeds bovenstaande problemen. Iemand tips?

      Beantwoorden
      • 16 december 2020 om 15:06
        Permalink

        spatie na date in timestamp lijkt me verkeerd in het script (dus tussen date en +) want er wordt overduidelijk gezocht naar de map met de naam “date” dus wat erachter komt wordt vanwege de spatie genegeerd. Ben echter een nooby!

        Beantwoorden
      • 16 maart 2021 om 21:14
        Permalink

        Zoals Jan zei:
        TIMESTAMP=$(/bin/date “+%Y%m%d%H%M%S”)

        Echter moet je de acculades vervangen “ -> ” Daarna werkt de timestamp weer.

        Beantwoorden
        • 16 maart 2021 om 21:17
          Permalink

          Ik zie dat deze website de alt code van de aanhalingstegens ” vervangt. Dit moet je dus even lokaal doen (ik bedoelde in het vorige bericht aanhalingsteken, niet acculades… verstandsverbijstering….;))

          Beantwoorden

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.