Status: Verouderd, versie 1.3 is beschikbaar.
Beschrijving
Script voor het automatisch maken van een backup van Domoticz en het wegschrijven hiervan naar een FTP-locatie (bijvoorbeeld naar een NAS).
Van de volgende onderdelen wordt een backup gemaakt:
- Domoticz database
- Domoticz Script folder
- Cronjobs
Middels deze drie items is het mogelijk om Domoticz volledig te herstellen na bijvoorbeeld een herinstallatie van Raspbian op je Raspberry Pi.
Persoonlijk heb ik dit script opgeslagen onder /home/pi/domoticz/scripts/backup_ftp.sh en staat dit script dagelijks ingepland via een cronjob rond twaalf uur ‘s nachts.
Update
Verbeterde versie van versie 1.1 van dit script. De update van mijn Raspberry naar de laatste versie van Raspbian zorgde ervoor dat diverse onderdelen van het script niet meer werkte. Deze versie zorgt dat alles weer werkt.
Verwijderd is de backup van de folder /home/pi/tg/scripts/ als overblijfsel van het originele script. Deze is niet nodig voor het herstellen van een Domoticz installatie.
Toegevoegd is de backup van de geplande cronjobs.
Setup variabelen aangepast zodat deze logischer en leesbaarder qua naamgeving zijn.
Logging naar Domoticz toegevoegd.
Code
#!/bin/bash
# Setup
DOMOTICZ_SERVER="x.x.x.x:yy" # IP-adres:Poort van je Domoticz server
FTP_SERVER="x.x.x.x:yy" # IP-adres:Poort van je FTP server
FTP_USERNAME="username" # Gebruikersnaam voor FTP
FTP_PASSWORD="password" # Wachtwoord voor FTP
FTP_DIRECTORY="/map/map" # Locatie op je FTP voor de Backup
# No need to edit below here.
echo "Start running backup script."
TIMESTAMP=`/bin/date +%Y%m%d%H%M%S`
# Create temp-directory if it does not already exists.
TEMP_DIR="/home/pi/temp"
if [ -d $TEMP_DIR ] ; then
echo "- Temp-directory already exists, no need to create it."
else
echo "- Temp-directory does not exists, creating it now."
/bin/mkdir $TEMP_DIR
fi
# Create backup file for database.
echo "- Creating backup file for database."
BACKUP_DB=$TIMESTAMP"_db.db"
BACKUP_DB_GZ=$BACKUP_DB".gz"
/usr/bin/curl -s http://$DOMOTICZ_SERVER/backupdatabase.php > $TEMP_DIR/$BACKUP_DB
gzip -9 $TEMP_DIR/$BACKUP_DB
# Create backup file for scripts directory.
echo "- Creating backup file for scripts-directory."
BACKUP_SCRIPTS=$TIMESTAMP"_scripts.tar.gz"
tar -zcf $TEMP_DIR/$BACKUP_SCRIPTS /home/pi/domoticz/scripts/
# Create backup file for crontab.
echo "- Creating backup file for crontab."
BACKUP_CRONTAB=$TIMESTAMP"_crontab.txt"
crontab -l > $TEMP_DIR/$BACKUP_CRONTAB
# Send backup files to FTP location.
echo "- Sending backup files to FTP location."
#BACKUP_FTP_FILES=$TEMP_DIR"/"$BACKUP_DB_GZ","$TEMP_DIR"/"$BACKUP_SCRIPTS","$TEMP_DIR"/"$BACKUP_CRONTAB
curl -s --disable-epsv -T "{$TEMP_DIR/$BACKUP_DB_GZ,$TEMP_DIR/$BACKUP_SCRIPTS,$TEMP_DIR/$BACKUP_CRONTAB}" -u "$FTP_USERNAME:$FTP_PASSWORD" "ftp://"$FTP_SERVER$FTP_DIRECTORY"/"
# Remove temp backup file
echo "- Removing temp files."
/bin/rm $TEMP_DIR/$BACKUP_DB_GZ
/bin/rm $TEMP_DIR/$BACKUP_SCRIPTS
/bin/rm $TEMP_DIR/$BACKUP_CRONTAB
# Domoticz logging
echo "- Writing log to Domoticz."
wget -q --delete-after "http://$DOMOTICZ_SERVER/json.htm?type=command¶m=addlogmessage&message=Backup to FTP script finished with timestamp ID $TIMESTAMP."
# Done!
echo "Done running backup script."
hallo Jos,
ik heb de backup file opnieuw gemaakt. krijg de melding
“- Creating backup file for crontab.
no crontab for root”
de reden waarom er een leeg bestand is aangemaakt.
Ik heb inderdaad geen root crontab maar wel de user versie
hallo Jos, ik ben er inmiddels achter. Ben gewend om steeds sudo voor een executable script te zetten en daarmee ben ik dan root.
Zonder de sudo is de backup van crontab wel in orde.
Dank voor het wijzen op een mogelijk andere user, dat zette me op het spoor.
Hoi,
Wat goed dat je het gevonden hebt! En gelijk dus een goede tip voor anderen om hier even goed op te letten!
Gr. Jos
Na het aanroepen van backupdatabse.php, moet het script dan niet wachten totdat de download klaar is? Mijn bestand is 135 MB groot, dit duurt dus even. Het lijkt erop dat het script niet wacht totdat de download klaar is.
Wat zie je precies hiervan terug? Er zou wel degelijk eerst een volledige download gedaan moeten worden voordat hij deze kan meenemen in het creeren van het ZIP bestand. Zie je geen of slechts een gedeeltelijk database backup-bestand terug o.i.d.?
Net nog even een testje gedaan door online een dummy-bestand van 512MB te laten downloaden i.p.v. database-backup. Deze doet er uiteraard even over, maar draait wel 100% correct.
Het bestand is 0 kb, deze wordt ook netjes geupload naar de ftp server.
Dat is wel heel weinig zeg maar. Als je handmatig download, hoe lang is ie aan bezig met genereren en downloaden?
Versie 1.3 van dit script is nu beschikbaar met support voor SFTP.