IOTstack – zálohování přes Rclone (nejenom) na Dropbox

Po úspěšně rozchozeném IOTstacku se asi zajímáte, jak vše efektivně zálohovat, aby případná obnova byla doslova co nejjednodušší. A právě k tomuto slouží tento článek, který využívá mocný nástroj Rclone.

Přímo v základní instalaci IOTstack je také jistá forma zálohování (mimochodem popsaná i zde na webu), ale jedná se o poměrně jednoduché zálohování, které má nevýhody při současném provozování InfluxDB a potřebě jeho zálohování. Veškeré tyto problémy řeší právě Rclone, kde si dokonce můžete vybrat, na které úložiště chcete zálohy směřovat. Nemusí se jednat jenom o Dropbox, ale zhruba přes 30 dalších služeb (Google Disk, SFTP, složka na síti nebo i lokálním disku, apod.).


Krok č. 1 – získání autorizačních tokenů z Dropboxu

V první řadě je potřeba stáhnout aplikaci Rclone na počítač/Mac, z důvodu nutnosti přístupnosti prohlížeče webových stránek a možnosti získání tzv. autorizačního tokenu pro přístup aplikace Rclone do Dropboxu.

Stáhněte si tedy aplikaci Rclone dle své platformy, rozbalte ji na disk a následně ji spusťte v Příkazovém řádku. Ideální postup je si otevřít Příkazový řádek, přepnout se do pracovního adresáře Rclone a tam následně spustit:

rclone authorize "dropbox"

Po spuštění dojde k otevření internetového prohlížeče s webovou adresou Dropboxu, kde se budete muset přihlásit. Pokud jste již přihlášeni, objeví se vám žádost o přístup pro Rclone do Dropboxu automaticky. Přístup je nutné samozřejmě potvrdit kliknutím na Allow.


Po potvrzení je udělen přístup, o čem Rclone informuje v prohlížeči hlášením Success!.


V příkazovém řádku se objeví JSON výstup, který začíná {"access_token":..., celý tento token si označte (až po <--- End paste), zkopírujte a uložte pro pozdější použití. Bez něj nebude mít Rclone v Raspberry Pi přístup na Dropbox!


Krok č. 2 – vytvoření složek na Dropboxu

Dalším krokem je vytvoření složky pro účely zálohování přímo na Dropboxu. V hlavním adresáři tedy vytvoříme adresář IOTstack, ten následně rozklikneme a v něm vytvoříme další adresář backups. Celková cesta tedy bude \IOTstack\backups\.


Krok č. 3 – příprava Rclone v Raspbianu

Vykonejte dva níže uvedené příkazy. Provede se naklonování repozitáře, respektive skriptů z Githubu.

mkdir -p "$HOME/.local"
git clone https://github.com/Paraphraser/IOTstackBackup.git "$HOME/.local/IOTstackBackup"

Dále pokračujeme spuštěním instalačního skriptu.

cd "$HOME/.local/IOTstackBackup"
./install_scripts.sh

Po instalaci se můžeme příkazem which iotstack_backup přesvědčit, že se vše správně nainstalovalo do správné cesty. Odpověď by měla být /home/pi/.local/bin/iotstack_backup.


Dále musíme nainstalovat samotný Rclone a jeho závislosti.

sudo apt install -y rsync python3-pip python3-dev
curl https://rclone.org/install.sh | sudo bash
sudo pip3 install -U niet

Krok č. 4 – nakonfigurování Rclone

Spustíme samotnou konfiguraci Rclone (bod 1). Následně zadáme písmeno n a pokračujeme Enter. Na dotaz na name> zadáme dropbox a potvrdíme Enter. Proběhne automaticky výpis dostupných služeb, kde si zapamatujeme číslo u řádku s Dropboxem (obvykle číslovka 10).

rclone config

Systém čeká na zadání Storage:, kde právě vložíme zapamatovanou číslovku (obvykle 10, čímž vybereme právě Dropbox. Samozřejmě, pokud chcete jiné služby, zde můžete zvolit jiné úložiště, jen se pochopitelně bude lišit i následující postup, protože každé úložiště vyžaduje jinou konfiguraci) a potvrdíme Enter. Následně stiskneme 3x Enter a při dotazu na Use auto config? stiskneme klávesu n a potvrdíme opětovně Enter.


Dále nás systém vyzve na vložení JSON, který jsme si uložili v prvním kroku tohoto návodu. Celý jej tedy vložíme (včetně závorek), potvrdíme Enter. Poté uložíme celou konfiguraci stisknutím y a potvrzením Enter. Nakonec stiskneme klávesu q a opět Enter.


Pro ověření správného nastavení zadáme příkaz rclone listremotes, který by nám měl vypsat dropbox:.

Poté zadáme příkaz rclone lsd "dropbox:" a Rclone by nám měl vypsat všechny adresáře na našem Dropboxu, čímž si ověříme i správnost nastavení. Pokud nedojde k vypsání, tak jste v některém z kroků výše udělali chybu.


Nyní si zkopírujeme šablonu pro samotné nastavení IOTstackBackup příkazem.

 ~/.local/IOTstackBackup/configuration-templates/install_template.sh RCLONE

Pro kontrolu vypsání obsahu souboru použijeme následující příkaz.

cat ~/.config/iotstack_backup/config.yml

Pokud systém vypíše obsah souboru, znamená, že jej máme ve správné cestě a můžeme jej zeditovat.

 sudo mcedit ~/.config/iotstack_backup/config.yml

Upravíme oba dva řádky prefix: na správnou cestu na Dropboxu (tedy IOTstack/backups) a případně můžeme změnit i požadovanou dobu pro uchovávání počtu záloh retain: (výchozí nastavení je 8 záloh).

backup:
  method: "RCLONE"
  prefix: "dropbox:IOTstack/backups"
  retain: 8

restore:
  method: "RCLONE"
  prefix: "dropbox:IOTstack/backups"

Po upravení požadovaných věcí stiskneme klávesu F2, následně se editor zeptá na uložení, což potvrdíme kliknutím na Save a klávesou F10 se vrátíme do příkazové řádky.


Opětovně si pro jistotu ověříme, že se vše uložilo tak, jak mělo, zadáním následujícího příkazu.

cat ~/.config/iotstack_backup/config.yml

Krok č. 5 – nastavení automatického zálohování a logování

Nejprve vytvoříme adresář pro případné logy a samotný log soubor.

mkdir ~/Logs
touch ~/Logs/iotstack_backup.log

Dále je třeba spustit příkaz crontab -e a přidat následující řádky, které zajišťují bezproblémový automatický chod a spuštění skriptu každý den ve 23 hodin.:

SHELL=/bin/bash
HOME=/home/pi
PATH=/home/pi/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# zazalohuje kontejnery Dockeru a konfigurace 1x denne ve 23 hodin
00	23	*	*	*	iotstack_backup >>./Logs/iotstack_backup.log 2>&1

Po vložení řádků stiskneme klávesu F2, následně se editor zeptá na uložení, což potvrdíme kliknutím na Save a klávesou F10 se vrátíme do příkazové řádky. Odhlásíme se příkazem exit z SSH a znovu se připojíme zpět.


A nyní již máme vše kompletně nastaveno a můžeme se přesvědčit manuálním spuštěním příkazu iotstack_backup, že se provede záloha do adresáře ~/IOTstack/backups/ a vše z ní se automaticky nahraje i na Dropbox.

Pokud je vše v pořádku, tak se neobjeví žádný výstup, jen se v Dropboxu v dané cestě objeví dva soubory záloh (zvlášť pro InfluxDB a zbytek pro vše ostatní) a jeden soubor s logem. Toto samé bude i v adresáři ~/IOTstack/backups na Raspberry Pi.

Můžeme se sami příkazem ls ~/IOTstack/backups přesvědčit, že se záloha v pořádku vytvořila:

V příštím článku si ukážeme, jak následně bude probíhat obnova dat z Dropboxu.


Opětovně chci zde pod čarou poděkovat Phillovi (Paraphraser), který je pro mne opravdu nekonečnou studnicí informací, podpory, návodů a postřehů, na základě kterých píši i tyto články a návody.

$ s myšlenky na „$ s“
  1. Super! Funguje to. Diky.

  2. Ahoj,
    vše až na poslední instrukce se mi podařilo zprovoznit. Jakmile spustím příkaz iotstack_backup tak mi vytuhne ssh spojení. Netuší někdo čím to může být? 🙁

    1. Záleží co je „vytuhne SSH“. Mě se taky zdálo že to vytuhlo, ale prostě to asi minutu pracovalo.. Zálohu mám (zatím) jen 50 MB, než to uploudlo na dropbox tak to trvalo no…

  3. A ještě jeden dotaz bych měl – jak zhruba velké jsou ty zálohy? abych si nezabil kompletně místo na dropboxu. Díky

    1. Zalohy jsou vedle podle toho, co vse zalohujes, takze se neda jednoznacne odpovedet. Ostatne, po vytvoreni souboru zalohy se muzes do adresare na velikost souboru podivat sam. Jinak bych doporucil navstevu na Discordu, at zde zbytecne neplevelime diskusi individualnim problemem.

  4. Povedlo se někomu zprovoznit rclone na MACu s M1?

    1. Ahoj, jo, ale ne kompletně. Ten první krok, kdy se zjišťuje token jsem musel dělat přes notebook s Windows

  5. Pro ty, kterým jako mě nešla automatické zálohování v CRONTAB tak v návodu u kroku 5 je chyba:

    V popisu v modrém poli je řetězec: PATH=/home/pi/.local/bin:…….

    Ale v obrázku pod tím v tomto řetezci chybí práve kus cesty adresáře a to …/pi/….

    Pořád jsem zkoumal, proč mi to napřímo jede a CRONTAB píše chybu, že nemůže najít soubor „iostack_backup“ až jsem prošel oba obrázky znovu…

    Tak jen info, kdyby se někdo další s tím trápil….

    1. V textovem poli urcenem pro kopirovani je to spravne. Tys to snad prepisoval rucne z obrazku? Ja ho zkusim samozrejme opravit, ale tam je to spis pro ty kroky, co mackat.

      1. nesměj se, ale přepisoval:-)…proto ta chyba…snažím se hodně věcí raději psát…víc si to pak pamatuju:-)

        1. Ja uz tu fotku upravil, tak snad dalsi posetilec ochranen 😀

Zanechat komentář