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 Netword 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.

#!/bin/bash
    # LOCAL/FTP/SCP/MAIL PARAMETERS
    SERVER="192.168.0.10"   # IP of Network disk, used for ftp
    USERNAME="xxxxxx"         # FTP username of Network disk used for ftp
    PASSWORD="xxxxxx"         # FTP password of Network disk used for ftp
    DESTDIR="/tmp"   # used for temorarily storage
    DOMO_IP="192.168.0.90"  # Domoticz IP 
    DOMO_PORT="8080"        # Domoticz port 
    ### END OF USER CONFIGURABLE PARAMETERS
    TIMESTAMP=`/bin/date +%Y%m%d%H%M%S`
    BACKUPFILE="domoticz_$TIMESTAMP.db" # backups will be named "domoticz_YYYYMMDDHHMMSS.db.gz"
    BACKUPFILEGZ="$BACKUPFILE".gz
    ### Stop Domoticz, create backup, ZIP it and start Domoticz again
    service domoticz.sh stop
    /usr/bin/curl -s http://$DOMO_IP:$DOMO_PORT/backupdatabase.php > /tmp/$BACKUPFILE
    service domoticz.sh start
    gzip -9 /tmp/$BACKUPFILE
    ### Send to Network disk through FTP
    curl -s --disable-epsv -v -T"/tmp/$BACKUPFILEGZ" -u"$USERNAME:$PASSWORD" "ftp://$SERVER/media/hdd/Domoticz_backup/"				
    ### Remove temp backup file
    /bin/rm /tmp/$BACKUPFILEGZ
    ### Done!
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.

#!/bin/bash

 ## LOCAL/FTP/SCP/MAIL PARAMETERS
 SERVER="192.168.5.10"         # IP of Network disk, used for: ftp mail scp
 USERNAME="xxxxxx"         # FTP username of Network disk used for: ftp mail scp
 PASSWORD="xxxxxx"               # FTP password of Network disk used for: ftp mail scp
 DESTDIR="/tmp"      # used for: local
 DOMO_IP="192.168.5.75"      # Domoticz IP used for all
 DOMO_PORT="8081"         # Domoticz port used for all
 ## END OF USER CONFIGURABLE PARAMETERS

 TIMESTAMP=`/bin/date +%Y%m%d%H%M%S`
 BACKUPFILEDIR="domoticz_x_xxx_$TIMESTAMP.tar.gz" # Change the xxx to yours
 
 ### Create backup and ZIP it
 tar -zcvf /tmp/$BACKUPFILEDIR /home/pi/domoticz/xxxx/   # Change the xxx to yours    # Or try /home/pi/domoticz/
 
 ### Send to Network disk through FTP
 curl -s --disable-epsv -v -T"/tmp/$BACKUPFILEDIR" -u"$USERNAME:$PASSWORD" "ftp://$SERVER/media/hdd/Domoticz_backup/"  # Change the ftp to yours !!!
                                                 
 ### Remove temp backup file
 /bin/rm /tmp/$BACKUPFILEDIR

 ### Done!

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.

#!/bin/bash
DOMO_IP="192.168.4.4"  # Domoticz IP 
DOMO_PORT="8084"        # Domoticz port 
### END OF USER CONFIGURABLE PARAMETERS
TIMESTAMP=`/bin/date +%Y%m%d%H%M%S`
BACKUPFILE="domoticzbackup_$TIMESTAMP.db" # backups will be named "domoticz_YYYYMMDDHHMMSS.db.gz"
BACKUPFILEGZ="$BACKUPFILE".gz

#Create backup and make tar archives
/usr/bin/curl -s http://$DOMO_IP:$DOMO_PORT/backupdatabase.php > /volume1/dataschijf/Domoticz_backup/database/$BACKUPFILE
tar -zcvf /volume1/dataschijf/Domoticz_backup/scripts/domoticz_scripts_$TIMESTAMP.tar.gz /volume1/@appstore/domoticz/var/scripts/
tar -zcvf /volume1/dataschijf/Domoticz_backup/www/domoticz_wwwfolder_$TIMESTAMP.tar.gz /volume1/@appstore/domoticz/www/

#Delete backups older than 31 days
/usr/bin/find /volume1/dataschijf/Domoticz_backup/database/ -name '*.db' -mtime +31 -delete
/usr/bin/find /volume1/dataschijf/Domoticz_backup/scripts/ -name '*.tar.gz' -mtime +31 -delete
/usr/bin/find /volume1/dataschijf/Domoticz_backup/www/ -name '*.tar.gz' -mtime +31 -delete

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.

#!/bin/bash
    # LOCAL/FTP/SCP/MAIL PARAMETERS
    SERVER="192.168.2.157"  # IP of Synology NAS, used for ftp
    USERNAME="xxxxxxx"         # FTP username of Network disk used for ftp
    PASSWORD="xxxxxxx"         # FTP password of Network disk used for ftp
    DESTDIR="/tmp"   # used for temorarily storage
    DESTDIRNAS="/Backups/Backup_Raspberry_Pi/" # Path to your Synology NAS backup folder
    DOMO_IP="192.168.2.152"   # Domoticz IP 
    DOMO_PORT="8080"        # Domoticz port 
    ### END OF USER CONFIGURABLE PARAMETERS
    TIMESTAMP=`/bin/date +%Y%m%d%H%M%S`
    BACKUPFILE="domoticz_$TIMESTAMP.db" # backups will be named "domoticz_YYYYMMDDHHMMSS.db.gz"
    BACKUPFILEGZ="$BACKUPFILE".gz
    ### Create backup and ZIP it
    /usr/bin/curl -s http://$DOMO_IP:$DOMO_PORT/backupdatabase.php > /tmp/$BACKUPFILE
    gzip -9 /tmp/$BACKUPFILE
    tar -zcvf /tmp/domoticz_scripts_$TIMESTAMP.tar.gz /home/pi/domoticz/scripts/
    tar -zcvf /tmp/telegram_scripts_$TIMESTAMP.tar.gz /home/pi/tg/scripts/
    ### Send to Network disk through FTP
  curl -u "$USERNAME:$PASSWORD" --ftp-create-dirs "ftp://$SERVER/$DESTDIRNAS/$TIMESTAMP/"
    curl -s --disable-epsv -v -T"/tmp/$BACKUPFILEGZ" -u"$USERNAME:$PASSWORD" "ftp://$SERVER/$DESTDIRNAS/$TIMESTAMP/"
    curl -s --disable-epsv -v -T"/tmp/domoticz_scripts_$TIMESTAMP.tar.gz" -u"$USERNAME:$PASSWORD" "ftp://$SERVER/$DESTDIRNAS/$TIMESTAMP/"
    curl -s --disable-epsv -v -T"/tmp/telegram_scripts_$TIMESTAMP.tar.gz" -u"$USERNAME:$PASSWORD" "ftp://$SERVER/$DESTDIRNAS/$TIMESTAMP/"
    ### Remove temp backup file
    /bin/rm /tmp/backup.db
    /bin/rm /tmp/$BACKUPFILEGZ
    /bin/rm /tmp/domoticz_scripts_$TIMESTAMP.tar.gz
    /bin/rm /tmp/telegram_scripts_$TIMESTAMP.tar.gz
    ### Done!

Maak het script uitvoerbaar

Gebruik hiervoor het commando:

sudo chmod +x /home/pi/domoticz/scripts/domoticz_backup.sh

Test het script met commando:

sudo sh /home/pi/domoticz/scripts/domoticz_backup.sh

Maak een automatisch taak van het script

Login als pi gebruiker en geef commando:

crontab -e

Voeg onderstaande regel toe aan het crontab document:

0 1 * * * sudo ~/domoticz/scripts/domoticz_backup.sh

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

 *     *     *   *    *        commando dat uitgevoerd moet worden
 -     -     -   -    -
 |     |     |   |    |
 |     |     |   |    +--------------------- dag van de week (0 - 6) (zondag=0)
 |     |     |   +-------------------- maand (1 - 12)
 |     |     +--------- dag van de maand(1 - 31)
 |     +----------- uur (0 - 23)
 +--------- minuten (0 - 59)

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

Eén gedachte 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

Geef een reactie

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