blog.vyoralek.cz

HomeAssistant #21 – automatické zálohy a obnovení ze zálohy

Dnešní 21 díl seriálu o HomeAssistantovi se věnuje zálohování a pokud ji ještě nemáte nastavenou měli byste se raději podívat jak na to.

Proč zálohovat?

Zálohy bývají jedny z nejčastějších opomíjených nastaveních v mnoha případech. A přitom je to právě záloha, která může v případě havárie systému vést k zásadnímu rozdíl mezi tím ztratit veškeré nastavení a data a nebo mít systém opět funkční doslova za pár minut.

Bohužel k tomuto stavu částečně dopomáhá i samotný HomeAssistant, kde na zálohy není kladen nějaký větší důraz a dokumentace na toto téma je poměrně chudá.

Dneska si proto ukážeme dvě možnosti – jednu bez nutnosti cokoliv doinstalovávat a druhou promakanější ale taky složitější na nastavení.

1. Standardní zálohy v supervisoru

Pokud máte HomeAssistant nainstalovaný pomocí Hassio tak jednou z benefitů supervisoru je možnost vytvářit si tzv. snapshoty, což není nic jiného než zálohy jak samotného HomeAssistanta tak i všech addonů.

Možnost vytváření záloh najdeme v sekci Supervisor -> Snapshots a máme možnost vytvořit buď plnou zálohu a nebo pouze konkrétních částí.

Zálohu můžeme navíc zavolat pomocí služby hassio.snapshot_full pro plnou zálohu a díky tomu lze tak zálohování naplánovat a automatizovat.

⚠️ Mějte na paměti, že kompletní záloha bude sice zkomprimovaná, ale i tak může zabrat poměrně velké množství na disku – standardně je uložena do adresáře backup.

Vytvoříme si například automatizaci, která bude vytvářet plné automatické zálohy každé úterý:

alias: Záloha
description: 'Automatická týdenní plná záloha Hassio každé úterý'
trigger:
  - platform: time
    at: '02:00:00'
condition:
  - condition: time
    weekday:
      - tue
action:
  - service: hassio.snapshot_full
    data_template:
      name: 'Hassio ({{now().strftime(''%d.%m.%y'')}})'
mode: single

Tohle řešení má ale jednu poměrně zásadní nevýhodu a to že se nám zálohy budou časem pouze hromadit – chybí nějaké možnost uchovávání např. pouze určitého počtu záloh.

2. Zálohy pomocí HACS addonu Auto Backup

Pokud to se zálohováním myslíte opravdu vážně pak doporučuji si doinstalovat HACS addon AutoBackup, který má jednak velmi detailně zpracovanou dokumentaci a také mnohem širší možnosti.

? Jestliže zatím HACS v HomeAssistentovi nemáte, doporučuji se podívat do jednoho z mých starších článků jak ho doinstalovat.

Instalace

Nejprve si v HACS najdeme integraci s názvem Auto Backup tím, že klikneme na Community v levé liště, přepneme se na integrace, klikneme na velké modré tlačítko Explorer & Add Repositories a do hledacího pole napíšeme Auto Backup.

Na nalezenou integraci klikneme a úplně dole klikneme na Instalovat tento repositář v HACS.

V dalším dialogu necháme poslední verzi a pokračujeme pomocí Nainstalovat.

Za pár sekund bychom už měli vidět v seznamu Integrací HACS novou položku s červeným rámečkem, která nám jasně říká, že bude potřeba ještě restart HomeAssistatanta a ten provedeme.

Tím instalace ale ještě nekončí a je potřeba udělat jeden další krok. Ten je bohužel formou zápisu do configuration.yaml. V závilosti na vašem preferovaném způsobu editace tohoto souboru si jej otevřete a přidejte ještě tyto řádky:

auto_backup:
  auto_purge: true

Další restart a jsme připraveni na konfiguraci záloh.

Použití v automatizacích

Jakmile máme Auto Backup připravený můžeme ho použít v automatizacích. Stejně jako v případě standardního hassio backupu máme k dipozici buď plnou zálohu a nebo částečnou (s vyjmenováním co chceme zazálohovat).

V prvním příkladu si uvedeme stejnou automatizaci jako výše, ale s jedním rozdílem – budeme uchovávat pouze zálohy ne starší než 4 týdny (28 dní) a specifikujeme, které addony a adresáře nechceme zálohovat.

alias: Záloha (Auto Backup)
description: 'Automatická týdenní plná záloha Hassio každé úterý'
trigger:
  - platform: time
    at: '02:00:00'
condition:
  - condition: time
    weekday:
      - tue
action:
  - service: auto_backup.snapshot_full
    data_template:
      name: 'WeeklyBackup: ({{now().strftime(''%d.%m.%y'')}})'
      keep_days: 28 
      exclude:
        addons:
          - Portainer
        folders:
          - share
mode: single

Služba snapshot_full a snapshot_partial má tyto parametry (použijeme je v sekci data_template automatizace):

ParametrVýznam
namenázev zálohy
passwordvolitelně ochrana zálohy heslem
keep_dayspočet dnů po které chceme zálohu ponechat
excludevyloučení addonů a nebo adresářů ze zálohy – pouze pro full snapshot
addonsaddony zahrnuté v záloze – pouze pro partial snapshot
foldersadresáře zahrnuté v záloze – pouze pro partial snapshot
backup_pathvlastní cesta k uložení zálohy

? Služby auto_backup.snapshot_full a auto_backup.snapshot_partial byly přejmenovány na auto_backup.backup_full resp. auto_backup.backup_partial

V HomeAssistantovi máme dostupnou i novou entitu sensor.auto_backup, kde můžeme vidět průběh zálohy:

Obnova ze zálohy

Jak už jsem uváděl v sekci standardních záloh Hassio veškeré zálohy najdeme v sekci Supervisor > Snapshots:

Po kliknutí na jeden z dostupných snapshotů si můžeme vybrat zda chceme obnovit vše zahrnuté – výchozí stav a nebo jen některé části. Bohužel zde neexistuje rychlá volba obnovy např. jen jednoho addonu – musíte prostě vše ostatní odtrhnout. Jakmile máme vybráno co potřebujeme klikneme na Restore selected a pak už je potřeba jen počkat než se data ze zálohy obnoví.

Problém může nastat v případě, že jsme si totálně rozbili HomeAssistent a ten nám vůbec nenaběhne. Naštěstí i v tomhle případě nemusíme úplně zoufat.

Pokud máme stále SSH přístup do HomeAssistanta můžeme obnovu udělat i z příkazové řádky.

Seznam dostupných záloh dostaneme pomocí příkazu:

➜  /config ha snapshots list    
snapshots:
- date: "2020-12-12T15:52:34.120721+00:00"
  name: 'WeeklyBackup: (12.12.20)'
  protected: false
  slug: 74d2816c
  type: partial
- date: "2020-06-20T13:47:59.034784+00:00"
  name: Saturday, Jun 20, 2020
  protected: false
  slug: d064edf4
  type: full
- date: "2020-11-30T19:19:36.094272+00:00"
  name: Monday, Nov 30, 2020
  protected: false
  slug: 059e80da
  type: full

.. a obnovu pak spustíme pomocí slug příslušné zálohy:

ha snapshots restore --slug 74d2816c

Dnešním postupem jsme si vytvořili nastavení záloh na stejný počítač na kterém běží HomeAssistant, což řeší jen část problémů. V případě např. chyby na disku se k záloze nemusí vůbec dostat a pro tyto případy se hodí mít aktualizaci i mimo samotný počítač HomeAssistenta. Ale o tom až někdy zase příště.

Nyní už máte lokální zálohu nastavenou a můžete se tak bez větších obav pustit do experimentování s HA a aktualizovat např. addony na novější verze.

Kompletní série o HomeAsistantovi obsahuje následující články:

  • 1. část – Instalace HomeAsisstent
  • 2. částIntegrace Sonoff s firmware Sonoff-Tasmota
  • 3. částIntegrace Homekit
  • 4. částIntegrace Sonoff s firmware Sonoff-Tasmota – 2 část
  • 5. částIntegrace s Wemos D1 a senzory teploty
  • 6. částIntegrace Sonoff s firmware ESPHome
  • 7. částIntegrace Sonoff POW s firmware ESPHome
  • 8. částIntegrace LED Magic Home s firmware ESPHome
  • 9. částIntegrace Xiaomi Mijia a Aqara
  • 10. část – Integrace vlastní Zigbee gateway
  • 11. část – Vzdálený přístup do Hass.io z Internetu
  • 12. část – zobrazení senzorových data pomocí InfluxDB a Grafany
  • 13. část – Hass.io Add-ony, které používám
  • 14. část – Integrace Xiaomi Mi Flora
  • 15. část – Integrace Withings (Nokia)
  • 16. část – náhrada SQLite databází MySQL
  • 17. část – HACS Add-ony – instalace a konfigurace
  • 18. část – Integrace Sonoff s firmware eWeLink
  • 19. část – nová integrace Sonoff pro HA
  • 20. část – měření spotřeby
  • 21. část – automatické zálohy a obnovení ze zálohy
  • 22. část – napojení hlasového asistenta Amazon Alexa
  • 23. část – automatické zálohy na síťový sdílení disk (Samba)
  • 24. část – Bluetooth zařízení a ESPHome proxy
  • 25. část – nefunkční aktualizace HomeAssistanta
  • 26. část – integrace SwitchBot produktů
  • 27. část – integrace fotovoltaiky Growatt

8 comments

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

  • Ahoj, já mám nainstalován doplněk Home Assistant Google Drive Backup a u něho mám nastaveno že vždy v 3:00 udělá zálohu, uloží na SD a tu z předchozího dne uploaduje na google drive (a tam tu nejstarší smaže). Tam jich mám posledních šest, takže zálohy za 7 dní dozadu.
    Ale asi jak píšeš, „o tom až někdy zase příště.“
    Martin

    • Martin mě předběhl. Ale používám stejný sw. Hlavní výhodou pro mě je, že zálohu dokáže vykopírovat i mimo zařízení a udržuje jen určitý počet záloh.

      ještě přidávám link: Hass.io Google Drive Backup
      https://github.com/sabeechen/hassio-google-drive-backup

      Jinak Hass.IO od poslední verze, umí provést obnovení ze zálohy hned z úvodního okna po nové instalaci. Takže jestli často laborujete jako já, tak se to velmi vítaná a užitečná funkce.

      Jinak pro zajímavost jakou velikost má vaše záloha? Já loguji data jen za posledních 48 h a to ještě jen některé, i tak má moje záloha cca 350-400 MB. Když jsem zálohoval vše tak jak je nastaveno v Hass.IO, byl jsem někde cca kolem 2.5-3.0 GB.

      • Tak to jsem žabař, mám tam pár zařízení a full záloha 330 MB.
        Co ale je zajímavé, že čas od času se mi na google drive neodmaže ta nejstarší záloha, ale druhá nejstarší a třeba teď tam mám zálohu z 1. 12., která tam stále visí a označená pro smazání je ta z 9. 12.

      • Delku logovani omezenu nemam, loguji cca 50 hodnot a jsem na 120MB

  • A je to tu, aneb došlo na praktické využití 🙁
    Po včerejším upgrade mi HA nenaběhl ani po třech hard restartech. Takže jsem na SD kartu nahrál nový image a při spuštění jsem natáhl poslední full zálohu. Sice se objevily chybky, které teď řeším, ale jako celek opět funguji. A časově: flashnutí SD karty a příprava zálohy z google drive zabralo tak 20 min, obnova trvala přes hodinu.
    Takže jak říkal jeden soudruh: Zálohovat! Zálohovat! Zálohovat!

  • Nemáte někdo problém s automatickým mazání starčích záloh?

    mám nastaveno – keep_days: 2
    ale ani po 5 dnech záloha ,,nezmizí“ a musím jí odstranit ručně

    • Ahoj,
      já mám keep_days: 5 a chová se mi to tak, že zůstane viset nejstarší a maže se vždy druhá nejstarší. Konkrétně teď tam mám zálohy z dneška (noc) a pak 1 den, 2 dny, 3 dny a 8 dní starou zálohu. A příznak budoucího smazání má ta 3denní. Občas tu nestarší smažu ručně, ale zase se to vrátí do chybného chování.
      Taky nechápu.
      U tebe je to v podstatě stejné chování.
      M.

  • Jsem začátečník s HA a mám začátečnický dotaz:
    Kam s výše uvedeným „skriptem“ pro definici zálohování.
    Je to pro mě problém se všemi návody, kdy autoři návodu automaticky předpokládají kam co patři, což je pro zelenáče trošku problém…
    Předem děkuji za nasměrování