Z racji tego, iż mój Domoticz przyjmuję coraz więcej danych jak i steruje coraz większą ilością elementów w domu. Czy mam na to ochotę czy nie, czas przyszedł na wykonywanie kopi bazy danych poza obszar Raspberry na którym on działa.
Pamiętajmy jednak, że sam Domoticz posiada funkcję kopi zapasowej, jednak nie można w niej określić zdalnego miejsca tej kopii. W tym momencie musimy zadziałać zewnętrznym skryptem który wyśle nam bazę na serwer FTP.
Poniższy skrypt kopiuje nam plik domoticz.db do serwera FTP.
#!/bin/bash
## Parametry połączeń
SERVER="tranzystor.pl" # Adres serwera FTP lub IP serwera FTP
USERNAME="użytkownik" # Nazwa użytkownika
PASSWORD="hasło" # Hasło użytkownika
DESTDIR="/opt/backup"
DOMO_IP="10.10.10.8" # Adres IP Domoticza
DOMO_PORT="80" # Port Domoticza
## Konfiguracja parametrów
TIMESTAMP=`/bin/date +%Y%m%d%H%M%S`
BACKUPFILE="domoticz_kopia_sql_$TIMESTAMP.db" # plik kopi będzie miał nazwę "domoticz_kopia_sql_YYYYMMDDHHMMSS.db.gz"
BACKUPFILEGZ="$BACKUPFILE".gz
### Zatrzymanie Domoticza, utworzenie kopi zip i ponowne uruchomienie Domoticza
sudo service domoticz.sh stop
/usr/bin/curl -s //$DOMO_IP:$DOMO_PORT/backupdatabase.php > /tmp/$BACKUPFILE
sudo service domoticz.sh start
gzip -9 /tmp/$BACKUPFILE
### Przesłanie wykonanej kopii na serwer FTP
curl -s --disable-epsv -v -T"/tmp/$BACKUPFILEGZ" -u"$USERNAME:$PASSWORD" "ftp://$SERVER/xyz/" $ # Ścieżka do katalogu na serwerze FTP
### Usunięcie zbędnych plików tymczasowych
/bin/rm /tmp/$BACKUPFILEDIR
Plik zapisujemy pod nazwą np backup_domoticz.sh
Na koniec przydało by się, aby skrypt uruchamiał się nam automatycznie, w tym cel nadajemy prawa wykonania dla pliku.
sudo chmod +x /home/swistak/backup_domoticz.sh
swistak = wasza nazwa użytkownika.
Po tem dopisujemy do Crontab cykliczne uruchamianie się skryptu.
crontab -e
0 1 * * * sudo ~/home/swistak/backup_domoticz.sh # raz dziennie wykona kopię