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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!/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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#!/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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#!/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:
1 |
sudo chmod +x /home/pi/domoticz/scripts/domoticz_backup.sh |
Test het script met commando:
1 |
sudo sh /home/pi/domoticz/scripts/domoticz_backup.sh |
Maak een automatisch taak van het script
Login als pi gebruiker en geef commando:
1 |
sudo crontab -e |
Voeg onderstaande regel toe aan het crontab document:
1 |
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.
1 2 3 4 5 6 7 8 |
* * * * * 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.