how to build your own website for free
2Bethlehem

Hier probeer ik het één en ander uit te leggen over Domoticz en de Raspberry Pi. Dit is puur voor de hobby en naslag voor mijn eigen hobby.

Backup Domoticz | 2bethlehem

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.

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.

Backup van Domoticz | 2bethlehem

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: 

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

script Raspberry

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