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.
Wat heb je nodig:
Buiten je raspberry Pi heb je een externe schijf nodig, maar beter is een NAS.
Als voorbereiding even het volgende:
- 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 scripts meenemen met de backup, kijk dan naar een script verderop in dit artikel.
Python script: domoticz_backup_database.sh en hier de .zip KLIK
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/bin/bash # LOCAL/FTP/SCP/MAIL PARAMETERS # https://colandino.nl SERVER="10.0.0.254" # IP of Network disk, used for ftp USERNAME="pi" # FTP username of Network disk used for ftp PASSWORD="raspberry" # FTP password of Network disk used for ftp DESTDIR="/tmp" # used for temorarily storage DOMO_IP="10.0.0.1" # 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/homes/pi/Backups/" ### Remove temp backup file /bin/rm /tmp/$BACKUPFILEGZ ### Done! |
Maak het script uitvoerbaar
Gebruik hiervoor het commando:
sudo chmod +x /home/pi/domoticz/scripts/domoticz_backup_database.sh
Test het script met commando:
sudo sh /home/pi/domoticz/scripts/domoticz_backup_database.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_database.sh
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 stopt, wat dan dus resulteert in een leeg database-bestand in je backup.
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.
Python script: domoticz_backup_mappen.sh en hier de .zip KLIK
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 # https://colandino.nl SERVER="10.0.0.254" # IP of Network disk, used for: ftp mail scp USERNAME="pi" # FTP username of Network disk used for: ftp mail scp PASSWORD="raspberry" # FTP password of Network disk used for: ftp mail scp DESTDIR="/tmp" # used for: local DOMO_IP="10.0.0.1" # Domoticz IP used for all DOMO_PORT="8080" # 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/ # 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/homes/pi/Backups/" # Change the ftp to yours !!! ### Remove temp backup file /bin/rm /tmp/$BACKUPFILEDIR ### Done! |
Maak het script uitvoerbaar
Gebruik hiervoor het commando:
sudo chmod +x /home/pi/domoticz/scripts/domoticz_backup_mappen.sh
Test het script met commando:
sudo sh /home/pi/domoticz/scripts/domoticz_backup_mappen.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_mappen.sh
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.
Python script: domoticz_backup_locaal.sh en hier de .zip KLIK
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/bin/bash # https://colandino.nl DOMO_IP="10.0.0.1" # Domoticz IP DOMO_PORT="8080" # 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 |
Maak het script uitvoerbaar
Gebruik hiervoor het commando:
sudo chmod +x /home/pi/domoticz/scripts/domoticz_backup_locaal.sh
Test het script met commando:
sudo sh /home/pi/domoticz/scripts/domoticz_backup_locaal.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_locaal.sh
Script voor backup naar een Synology NAS
Dit script maakt backups (Domoticz Database & Domoticz scripts
) naar de geselecteerde FTP-locatie. Vergeet niet om het Synology gebruikersaccount FTP-rechten te geven in DSM.
Python script: domoticz_backup_synology.sh en hier de .zip KLIK
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 |
#!/bin/bash # LOCAL/FTP/SCP/MAIL PARAMETERS # https://colandino.nl # Backup Domotics database, scripts en config # SERVER="10.0.0.254" # IP of Synology NAS, used for ftp USERNAME="pi" # FTP username of Network disk used for ftp PASSWORD="raspberry" # FTP password of Network disk used for ftp DESTDIR="/tmp" # used for temorarily storage DESTDIRNAS="/homes/pi/Backups/" # Path to your Synology NAS backup folder DOMO_IP="10.0.0.1" # 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/domoticz/Config/ ### 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/domoticz_config_$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/domoticz_config_$TIMESTAMP.tar.gz ### Done! |
Maak het script uitvoerbaar
Gebruik hiervoor het commando:
sudo chmod +x /home/pi/domoticz/scripts/domoticz_backup_synology.sh
Test het script met commando:
sudo sh /home/pi/domoticz/scripts/domoticz_backup_synology.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_synology.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 cronjob op.
Update: Crontab afsluiten geeft voor sommige gebruikers problemen, de oplossing:
-
In VI, druk op escape ‘esc’ en type dan :wq (w is opslaan, en q is afsluiten)
-
In NANO, druk op control+x ‘ctrl+x’ en geef dan y voor yes.
Je maakt nu dagelijks een backup van je Domoticz Database en/of bestanden op je NAS of externe schijf.
Pingback:paul