Domoticz auto-backup naar FTP – Versie 1.2

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:

  1. Domoticz database
  2. Domoticz Script folder
  3. 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&param=addlogmessage&message=Backup to FTP script finished with timestamp ID $TIMESTAMP."

# Done!
echo "Done running backup script."

9 reacties

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

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

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

Geef een reactie

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

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.