Steenderen.NET

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

Verder Bericht

Vorige Bericht

9 Reacties

  1. C. ten Berge 13 november 2020

    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. C. ten Berge 14 november 2020

    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.

    • jos 14 november 2020 — Berichtauteur

      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

  3. Lodie 13 december 2020

    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.

    • jos 13 december 2020 — Berichtauteur

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

      • jos 13 december 2020 — Berichtauteur

        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.

        • Lodie 21 december 2020

          Het bestand is 0 kb, deze wordt ook netjes geupload naar de ftp server.

          • jos 21 december 2020 — Berichtauteur

            Dat is wel heel weinig zeg maar. Als je handmatig download, hoe lang is ie aan bezig met genereren en downloaden?

  4. jos 21 januari 2021 — Berichtauteur

    Versie 1.3 van dit script is nu beschikbaar met support voor SFTP.

Laat een reactie achter

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

© 2021 Steenderen.NET

Thema door Anders Norén