IOTstack – zálohování přes Rclone (nejenom) na Dropbox
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“
Super! Funguje to. Diky.
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? 🙁
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…
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
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.
Povedlo se někomu zprovoznit rclone na MACu s M1?
Ahoj, jo, ale ne kompletně. Ten první krok, kdy se zjišťuje token jsem musel dělat přes notebook s Windows
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….
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.
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:-)
Ja uz tu fotku upravil, tak snad dalsi posetilec ochranen 😀