Kopia bezpieczeństwa bazy, folderu Domoticz oraz innych elementów
Jak mówią, ludzie dzielą się na tych, którzy backupy robią i na takich, którzy będą robić.
Żeby za późno nie znaleźć się w tej drugiej grupie - szybki skrypt do tworzenia backupu (na przykład Domoticz i HABridge) na zewnętrzny dysk. W moim przypadku pendrive, z którego do dane czasem zgrywam na osobny dysk zewnętrzny. Jest co prawda mechanizm wbudowany w Domoticz, ale osobiście mi on nie odpowiadał - robi backup na tą samą kartę, na której jest Domoticz, więc sensu to nie ma...
Raz, dwa trzy, skrypt piszesz Ty. Nie ukrywam - jest to zmieniony pod moim kątem skrypt z Wiki Domoticz. Ale po to jest Wiki...
Zaczynamy więc od:
sudo nano /home/pi/domoticz/scripts/domoticz_backup.sh
Wpisujemy (oczywiście zmieniając dane do Domoticz oraz foldery, na które chcecie kopiować). Ja, jak widać, dodatkowo robię sobie backup HABridge pod kątem Alexa.
DOMO_IP="192.168.1.200" # Domoticz IP
DOMO_PORT="80" # Domoticz port
TIMESTAMP=`/bin/date +%Y%m%d%H%M%S`
BACKUPFILE="domoticzbackup_$TIMESTAMP.db" # backups will be named "domoticz_YYYYMMDDHHMMSS.db.gz"
BACKUPFILEGZ="$BACKUPFILE".gz
#Create backup and make tar archives
/usr/bin/curl -s http://$DOMO_IP:$DOMO_PORT/backupdatabase.php > /media/Dysk/Domoticz_backup/database/$BACKUPFILE
tar -zcvf /media/Dysk/Domoticz_backup/scripts/domoticz_scripts_$TIMESTAMP.tar.gz /home/pi/domoticz/scripts/
tar -zcvf /media/Dysk/Domoticz_backup/www/domoticz_wwwfolder_$TIMESTAMP.tar.gz /home/pi/domoticz/www/
tar -zcvf /media/Dysk/HABridge/HABridge_$TIMESTAMP.tar.gz /home/pi/habridge/data/
#Delete backups older than 31 days
/usr/bin/find /media/Dysk/Domoticz_backup/database/ -name '*.db' -mtime +31 -delete
/usr/bin/find /media/Dysk/Domoticz_backup/scripts/ -name '*.tar.gz' -mtime +31 -delete
/usr/bin/find /media/Dysk/Domoticz_backup/www/ -name '*.tar.gz' -mtime +31 -delete
/usr/bin/find /media/Dysk/HABridge/ -name '*.tar.gz' -mtime +31 -delete
Żeby za późno nie znaleźć się w tej drugiej grupie - szybki skrypt do tworzenia backupu (na przykład Domoticz i HABridge) na zewnętrzny dysk. W moim przypadku pendrive, z którego do dane czasem zgrywam na osobny dysk zewnętrzny. Jest co prawda mechanizm wbudowany w Domoticz, ale osobiście mi on nie odpowiadał - robi backup na tą samą kartę, na której jest Domoticz, więc sensu to nie ma...
Raz, dwa trzy, skrypt piszesz Ty. Nie ukrywam - jest to zmieniony pod moim kątem skrypt z Wiki Domoticz. Ale po to jest Wiki...
Zaczynamy więc od:
sudo nano /home/pi/domoticz/scripts/domoticz_backup.sh
Wpisujemy (oczywiście zmieniając dane do Domoticz oraz foldery, na które chcecie kopiować). Ja, jak widać, dodatkowo robię sobie backup HABridge pod kątem Alexa.
DOMO_IP="192.168.1.200" # Domoticz IP
DOMO_PORT="80" # Domoticz port
TIMESTAMP=`/bin/date +%Y%m%d%H%M%S`
BACKUPFILE="domoticzbackup_$TIMESTAMP.db" # backups will be named "domoticz_YYYYMMDDHHMMSS.db.gz"
BACKUPFILEGZ="$BACKUPFILE".gz
#Create backup and make tar archives
/usr/bin/curl -s http://$DOMO_IP:$DOMO_PORT/backupdatabase.php > /media/Dysk/Domoticz_backup/database/$BACKUPFILE
tar -zcvf /media/Dysk/Domoticz_backup/scripts/domoticz_scripts_$TIMESTAMP.tar.gz /home/pi/domoticz/scripts/
tar -zcvf /media/Dysk/Domoticz_backup/www/domoticz_wwwfolder_$TIMESTAMP.tar.gz /home/pi/domoticz/www/
tar -zcvf /media/Dysk/HABridge/HABridge_$TIMESTAMP.tar.gz /home/pi/habridge/data/
#Delete backups older than 31 days
/usr/bin/find /media/Dysk/Domoticz_backup/database/ -name '*.db' -mtime +31 -delete
/usr/bin/find /media/Dysk/Domoticz_backup/scripts/ -name '*.tar.gz' -mtime +31 -delete
/usr/bin/find /media/Dysk/Domoticz_backup/www/ -name '*.tar.gz' -mtime +31 -delete
/usr/bin/find /media/Dysk/HABridge/ -name '*.tar.gz' -mtime +31 -delete
Nadajemy uprawnienia do uruchamiania:
sudo chmod +x /home/pi/domoticz/scripts/domoticz_backup.sh
Efekt:
Ja ustawiłem sobie uruchamianie go na 1:30 w nocy w cron (czyli crontab -e):
30 1 * * * sudo /home/pi/domoticz/scripts/domoticz_backup.sh
Oby się Wam backup nigdy nie przydał... Ale niestety, podczas pracy z Raspberry Pi widzę, że nie jest to widzimisię, a konieczność!
Oczywiście można go zmienić, aby backupy lądowały na zewnętrznym FTP, czy też dysku NAS. Dla mnie jednak ta forma jest wystarczająca.
Cześć
OdpowiedzUsuńNie do końca rozumiem gdzie wybierasz miejsce na backup.
Czy to ścieżka:
/media/Dysk/Domoticz_backup/database.
Czy wystarczy podpiąć nośnik USB i RBpi go wykrywa pod /media/?
Tomek
Wersja Stretch na pewno wykryje pendrive, aby się upewnić zrobiłem tak jak w ogólnym opisie konfiguracji: http://cezarowy.blogspot.com/2017/11/raspberry-pi-raspbian-domoticz-od-zera.html?m=1. Pendrive mapuje się u mnie pod /media/ Dysk. Później wszystko ląduje w folderze Domoticz_backup
UsuńCezary powiedz mi po zrobieniu skryptu i nadaniu uprawnień powinien z automatu stworzyć sie folder? Bo jakoś nie wiedzę u siebie na pendrive nic.
OdpowiedzUsuńCezar, nie Cezary :D Muszę chyba zmienić nazwę bloga ;)
UsuńAle tak na poważnie - folderów skrypt nie tworzy - musisz je założyć sam.
crontab: installing new crontab
OdpowiedzUsuńnew crontab file is missing newline before EOF, can't install.
Do you want to retry the same edit? (y/n)
co jest nie tak?
Chociaż w tmp są trzy foldery z nazwą cron a w srodku plik tekstowy między innymi z komendą o uruchamianiu skryptu bezpośrednio pod ostatnią linijką
UsuńCo dokładnie wklejasz do cron? Komenda jest w jednej linii?
UsuńWitam
OdpowiedzUsuńChciałem na początek wykonać kopię na tej samej karcie co uruchamia się system. Zrobiłem tak:
#!/bin/bash
DOMO_IP="192.168.0.100" # Domoticz IP
DOMO_PORT="8080" # Domoticz port
### END OF USER CONFIGURABLE PARAMETERS
TIMESTAMP=`/bin/date +%Y%m%d%H%M%S`
BACKUPFILE="domoticzbackup_$TIMESTAMP.db" # backups will be named "domoticz_YYYYMMDDHHMMSS.db.gz"
BACKUPFILEGZ="$BACKUPFILE".gz
#Create backup and make tar archives
/usr/bin/curl -s http://$DOMO_IP:$DOMO_PORT/backupdatabase.php > /home/domoticz/backup/database/$BACKUPFILE
tar -zcvf /home/domoticz/backup/scripts/domoticz_scripts_$TIMESTAMP.tar.gz /home/domoticz/domoticz/scripts/
tar -zcvf /home/domoticz/backup/www/domoticz_wwwfolder_$TIMESTAMP.tar.gz /home/domoticz/domoticz/www/
#Delete backups older than 10 days
/usr/bin/find /home/domoticz/backup/database/ -name '*.db' -mtime +10 -delete
/usr/bin/find /home/domoticz/backup/scripts/ -name '*.tar.gz' -mtime +10 -delete
/usr/bin/find /home/domoticz/backup/www/ -name '*.tar.gz' -mtime +10 -delete
sudo chmod +x /home/domoticz/domoticz/scripts/domoticz_backup.sh
uruchamiam tak:
0 1 * * * sudo ~/domoticz/scripts/domoticz_backup.sh
kopia ma być
/home/domoticz/backup/database
/home/domoticz/backup/scripts
/home/domoticz/backup/www
domoticz mam zainstalowany w /home/domoticz/domoticz
ale nic nie zapisuje
Dobra fałszywy alarm - brakowało curl
OdpowiedzUsuńpo sudo apt install curl
działa
Pozdrawiam
Wesołych Świąt
Cześć
UsuńDaj znać jak uda Ci się z zewnętrznym pendrivem.
Witaj,
OdpowiedzUsuńPoległem na tym :-(
czy ścieżka ze skryptu powinna zgadzać się ze ścieżką z folderu docelowego?
np: wg opisu u ciebie jest:
media/Dysk/Domoticz_backup/scripts/domoticz_scripts
w załącznikach z folderu docelowego masz bez "domoticz scripts"
Mam wszystko wg. opisu i nie działa..
podejrzewam że coś z folderem docelowym na USB
Zaraz zaraz. Folder to media/Dysk/Domoticz_backup/scripts/ i tam ląduje skompresowany plik z nazwą domoticz_scripts_$TIMESTAMP, czyli z kolejnymi dniami.
UsuńTen komentarz został usunięty przez autora.
Usuńzmieniłem wpis w cron na :
Usuń30 1 * * * /home/pi/domoticz/scripts/domoticz_backup.sh
i działa:-)
Ajjjjj kurde. Masz rację! Zapomniałem o tym pisząc z pamięci. Już poprawiam!
UsuńAle przez to się trochę nauczyłem:-) i raz jeszcze dzięki za dobrą robotę dużo korzystam z Twojego bloga!
UsuńOstatnio trochę spowolniłem, bo 'nie wyrabiam na zakrętach' :) Za dużo rzeczy naraz chcę zrobić.
Usuńnie chce tu zaśmiecać ale polecisz jakiś dysk ssd do raspberry na domoticz i czy twój opis będzie sie nadawał do jego uruchomienia(masz wpis )
Usuńkoniecznie chce przenieść całość na dysk bo karta -wiesz jak jest.
W sumie to słyszałem, że najlepiej coś 80-120 GB, ważne aby miały obsługę TRIM.
UsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńCezar, potrzebuję pomocy :-)
OdpowiedzUsuńDostałem mojego aktywnego huba - przeniosłem wszystko na dysk hdd :-). I poszedłem krok dalej, chciałem zrobić kopię na pendrive. I tu pojawia się mój problem. Kopie tworzą się zgodnie z utworzonym skryptem i już moja radość była wielka :-). Ale zastanowiło mnie jedno - mam zarówno kartę SD 32 GB jak i pendrive 32 GB. I okazało się, że u mnie prawdopodobnie pod sda - pojawia się karta SD, natomiast pendrive widać jako: Disk /dev/mmcblk0: 28,8 GiB, 30953963520 bytes, 60456960 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x729b2349
Zmieniłem więc lokalizację w pliku fstab i w położeniu pliku podałem prawidłową lokalizację:/dev/mmcblk0
I teraz nie wiem, czy to już wystarczy, aby kopie pojawiały się we właściwym miejscu? Czy powinienem jeszcze coś zmienić? Zmieniłem w cronie czas kopii, aby sprawdzić, czy kopia utworzy się prawidłowo - i w pliku media/Dysk/database (i pozostałe) pojawia się kopia. Tylko nie bardzo wiem, jak sprawdzić, gdzie fizycznie znajdują się te pliki. Próbowałem sprawdzić pendrive w laptopie (przy Windows10), ale pendrive wydaje się czysty. To był nowy pendrive - czy wcześniej wymagany był jakiś format? I ewentualnie na jaki system plików?
Na mój stan wiedzy - jeżeli cokolwiek się 'mountuje', to na pewno karta SD NIE na sda, sdb, itp.
UsuńI jeszcze jedno zmieniłem komendę przy montowaniu
OdpowiedzUsuńz sudo mount -t auto /dev/sda /media/Dysk
na sudo mount -t auto /dev/mmcblk0/media/Dysk
Więc teraz wygląda na to, że mam kopie jak chciałem,tylko nie bardzo wiem w jakiej lokalizacji. :-)
Kurcze, czytam teraz chyba wszystko, co jest dostępne w necie, żeby sprawdzić jakie są fizyczne lokalizacje moich plików (co mam na HDD, co na pendrive i co na SD). I trochę rośnie mój informatyczny chaos. Bo być może poszedłem złym tropem i jednak pendrive przedstawiał się u mnie jako /dev/sda (całe zamieszanie przez taką samą pojemność pendrive i SD).
OdpowiedzUsuńNie wiem jak można dodać tutaj zrzut (podlinkuję https://www.fotosik.pl/zdjecie/2203fe2d86212fe0). Wydaje mi się, że skoro boot nastepuje z /dev/sdal - to jednak pendrive jest na /dev/mmcblk0..
Jednak chyba jestem w błędzie - system jest na /dev/mmcblk0 - coś co się zgłasza powyżej, natomiast pendrive montuje się z automatu jako dev/sda. Więc chyba muszę znowu zmienić fsdal na pierwotny, zgodnie z Twoim poradnikiem...
OdpowiedzUsuńZrobiłem testy (po wyjęciu pendrive z huba - fdisk nie pokazuje dysku /dev/sda), po wpięciu ten dysk się pojawia. Zrobiłem więc wszystko zgodnie z instrukcją. Wykonałem test zrobienia backupu - w ścieżce /media/Dysk/(podfoldery) pojawia się kopia. Pytanie tylko czy można sprawdzić jakoś fizycznie, czy te pliki zapisały się na pendrive? z poziomu maliny? z poziomu pc z windows?
OdpowiedzUsuńPrzepraszam, że długo nie odpisuję, codzienne obowiązki wciągają... Widzę, że z większością już sobie poradziłeś. Co do plików nie bardzo rozumiem - jeżeli je widzisz to są. Uruchom mc (Midnight Commander), albo jak mówisz sprawdź pendrive na komputerze, czy też wejdź na Raspberry przez FTP lub Samba - (oba trzeba doinstalować) i pliki muszą być widoczne w podfolderach.
UsuńA więc jak widzisz walczę (i wychodzi niestety moja ignorancja w linuxie). A więc jak napisałem, kopie wszystkiego co zostało zdefiniowane się pojawiają. W mc widzę w ścieżce: media/Dysk/i kolejne podfoldery wszystkie pliki z datą i godzina zdefiniowaną w cron'ie. Tylko nie do końca jestem przekonany, gdzie fizycznie się znajdują (czy na pendrive, czy na SD albo HDD). Jak wyjmuję pendrive i sprawdzam w laptopie (windows 10), to pokazuje mi pustą zawartość. Aczkolwiek jak sprawdzam we właściwościach, to mam zajęte kilkadziesiąt MB. Być może wiąże się to, z różnymi systemami plików miedzy Linux a Windows (i dlatego nic nie widzę w zawartości). I nie wiem jak to do końca sprawdzić.
OdpowiedzUsuńPS. Wczoraj walczyłem z podłączeniem żarówki Yeelight do Domoticz (dalej do HAB i Alexy). Chińczycy wprowadzili jakieś małe zmiany i teraz trochę inaczej to wygląda, niż w Twoim poradniku. Ale w końcu osiągnąłem sukces :-)
Korzystając z okazji - mógłbyś powiedzieć jak przywrócić ewentualnie dane z plików w backup'ie? Czy zrobić to jakimś skryptem? Czy można fizycznie (np. w mc) przekopiować rozpakowane pliki do właściwych lokacji? (wiem, może znowu prozaiczne pytanie początkującego). :-)
OdpowiedzUsuńNie ma nic złego w pytaniu innych. Ta kopia jest bardzo prosta - Domoticz oparty jest na bazie SQLite, która jest bazą plikową - wystarczy zastąpić plik, tak samo jak z folderami www, scripts, itp.
UsuńCzyli rozumiem, że w backup'ie tworzą się codziennie pliki. W przypadku przywracania wybieram ostatni (albo ten, który chcę) i rozpakowuję do właściwego katalogu Domoticza (www do www, scripts do scripts, itd). Czyli reasumując - przywrócenie określonego pliku z każdego z podfolderów do odpowiadających im nazwom folderom Domoticza (rozumiem, ze dla HAB i innych dokładnie tak samo).
OdpowiedzUsuńDokładnie. Jak się uprzeć, to możesz zrobić jedną kopię - całego folderu Domoticz :D
UsuńSuper, dzięki wielkie za wsparcie :-)
OdpowiedzUsuńWracając do fizycznej lokalizacji plików backup. Mógłbyś mi ewentualnie powiedzieć, czy jeżeli wkładam pendrive do laptopa (windows), to powinny być widoczne pliki? Widzę, że jest jakaś alokacja na kilkadziesiąt MB (windows mówi, że dysk jest pusty), ale mogą to być jakieś wewnętrzne informacje. Bo wydaje mi sie, że być może te pliki, które powstają alokują się na SD.
Tak się zastanawiam, czy jak wyjmę pendrive z huba, to pliki będą widoczne czy nie np. w mc (wtedy wynik testu byłby jasny).
Przepraszam, że tak Cię absorbuję moimi pytaniami, ale być może inni początkujący znajdą tu odpowiedź na te same pytania.
Tak, oczywiście powinny być widoczne. To przecież nic innego jak pliki. Pytanie - w jakim formacie plików masz sformatowany pendrive. Ja mam na przykład FAT32 właśnie po to, żeby mógł sobie go użyć gdziekolwiek chcę - laptop, Malina, cokolwiek. A pytam dlatego, że Windows domyślnie nie widzi ext4 - nie wiem jak masz Ty.
UsuńSię nie przejmuj - pisz. Każdy kiedyś zaczynał. Jak wolisz, to możemy przejść na priv, będzie szybciej.
No więc właśnie nie widać u mnie plików. A skoro mc je widzi, to znaczy, że są gdzieś w innej lokacji. Pendrive mam chyba w ntfs (pisze "chyba" bo wcześniej miałem w FAT32 i też nie było plików). Wrócę po pracy to zaraz sprawdzę i ewentualnie zrobię format do FAT32 i kolejne próby :-).
OdpowiedzUsuńJeżeli możesz podać priv to byłoby super - nie będę zaśmiecał bloga moimi stricte technicznymi problemami. :-)
Żadne to zaśmiecanie, wiele osób może skorzystać. Jedno nie jest dla mnie jasne - zawartość przecież powinna być widoczna tam gdzie zrobiłeś mount i założyłeś folder. U mnie na przykład /media/Dysk/. Podaj adres e-mail, ale rozdziel odpowiednio, żeby boty nie wyłapały.
OdpowiedzUsuńZałożyłem folder zgodnie z Twoją instrukcją w mc pojawia się w media/Dysk...(jeżeli dobrze pamiętam, to muszę wyjść poziom wyżej z użytkownika)
OdpowiedzUsuńMój mail: maciekkow(at)poczta.fm (mam nadzieje, że przejdzie.
No tak, ale pytanie gdzie dałeś mount...
UsuńJak tylko wrócę z pracy to zaraz dokładnie to przejrzę. Zmieniałem to kilka razy, więc chwilowo nie wiem, czy nie ma tam gdzieś prostego błędu.
OdpowiedzUsuńEmail jest widoczny, czy go odfiltrowało?
Co może być powodem, że pliki w katalogu database mają wielkość 0, kopia skryptów i stron- w porządku.
OdpowiedzUsuńTeż jestem zainteresowany tym, że plik database jest równy 0.
OdpowiedzUsuńWyglada mi na to, że skrypt robiący kopię nie działa poprawnie/jest źle wywoływany.
UsuńCezarze, jeszcze jedno pytanie - dzisiaj jestem już trochę mądrzejszy niż w lutym, ale czasami mam problemy z podstawami. :-) W którym miejscu rozpakować pliki z backupu Influx? Z pozostałymi nie ma problemu - katalogi sa zdefiniowane, HABridge też jest prosty. Ale nie bardzo wiem, gdzie rozpakować Influxa?
OdpowiedzUsuńTutaj musisz użyć komendy influxd restore - sam zadba aby dane znalazły się w dobrym miejscu.
Usuń