Witam
Potrzebuję skrypt który uruchamiał by zapis kopii bazy domoticza zainstalowanego na malinie, gdyż zawarta w domoticz funkcja automatycznego zapisu bazy zapisuje go na karcie na której jest sam domoticz i w razie uszkodzenia karty backup tez się uszkodzi.
Potrzebuję aby baza wykonywała się tylko 1x dziennie np o godz 2 w nocy i zapisywała się na pendrivie który jest podłaczony do RPI
Jeszcze zapytam czy jeśli chcę manualnie kopiować bazę danych domoticz.db to konieczne jest zatrzymanie na ten czas domoticza ?
@muchac35 jak robisz pełne kopie ręcznie to trzeba zatrzymywać domoticz , bo gdy tego nie zrobisz struktura bazy na 90% ulegnie uszkodzeniu, to trochę tak jak byś nalewał wodę do dwóch wiaderek nie zakręcając kranu a te wiaderka są dwa metry od siebie, zawsze coś wycieknie. Robiąc kopie za pomocą Duplicati pierwsza pełna kopia powinna być zrobiona z zatrzymanym domoticz , kolejne kopie, które robi oprogramowanie są robione na zasadzie nadpisujemy tylko zmiany w bazie, to co się nie zmieniło zostaje i dlatego to oprogramowanie nie zatrzymuje domoticza. i robi kopie przyrostowe. To jedna z jego zalet.
Więc gdy chcę ręcznie lub skryptem kopiować tylko plik domoticz.db to nie ma potrzeby zatrzymywać domoticza?
@muchac35 domoticz.db to właśnie baza, więc czy to ręcznie czy za pomocą skryptu trzeba zatrzymać domoticza, ręcznie nie zrobisz kopi przyrostowej , skrypt też powinien najpierw zatrzymać usługę zrobić kopię i uruchomić usługę ponownie, dlatego większość skryptów ustawia się na godziny nocne kiedy zatrzymanie usługi - domoticz jest najmniej uciążliwe.
Zobacz przykład skryptu
#!/bin/bash ## Parametry połączeń SERVER="mucha35.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="192.168.10.8" # Adres IP Domoticza DOMO_PORT="8080" # 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
@isom To jeszcze dopytam jeśli robię kopię zapasową tym sposobem to domoticz nie jest zatrzymywany dlaczego?
Dlatego że robisz to z poziomu interfejsu samego domoticza i on wie twoich zamiarach więc nie będzie mieszał w bazie w czasie kiedy musi zrobić jej kopię.