Oricât de multă încrederea aș avea în NAS-ul în care am transformat Raspberry Pi-ul, fără o copie de rezervă a fișierelor stocate în acesta nu dorm foarte liniștit. N-am multe date pe el, dar tot ce am acolo e important, de la prima fotografie și până la ultima cheie ssh.
Pentru sincronizarea automată a fișierelor din Raspberry Pi în contul personal pe OneDrive am folosit Rclone, o aplicație pentru linia de comandă (fără interfață grafică), concepută pentru a oferi acces la peste 40 de servicii de stocare cloud.
De ce OneDrive? Pentru că pe acesta mi-am mutat fișierele atunci când Google a schimbat regulile și costurile, fiind cea mai ieftină opțiune avută la îndemână (6 TB + Microsoft Office pentru doar 55€/an, adică aproximativ 4.5€/lună).
Instalare Rclone în Raspberry Pi și conectarea la OneDrive
Cine nu vrea să se complice, poate instala versiunea Rclone disponibilă prin canalele oficiale:
sudo apt update && sudo apt install rclone
La momentul scrierii acestui articol, era vorba despre versiunea 1.53.3:
Iar pe site-ul oficial este disponibilă la descărcare versiunea 1.57.0:
Pentru instalarea acesteia, mai întâi va trebui descărcat pachetul de instalare:
wget https://downloads.rclone.org/v1.57.0/rclone-v1.57.0-linux-arm64.deb
Rulat:
sudo dpkg -i rclone-v1.57.0-linux-arm64.deb
Și așteptat ca instalarea Rclone în Raspberry Pi să fie finalizată.
root@cls:/home/pi# wget https://downloads.rclone.org/v1.57.0/rclone-v1.57.0-linux-arm64.deb --2022-02-17 20:25:17-- https://downloads.rclone.org/v1.57.0/rclone-v1.57.0-linux-arm64.deb Resolving downloads.rclone.org (downloads.rclone.org)... 5.153.250.7, 2a02:24e0:8:61f9::1 Connecting to downloads.rclone.org (downloads.rclone.org)|5.153.250.7|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 13596438 (13M) [application/vnd.debian.binary-package] Saving to: ‘rclone-v1.57.0-linux-arm64.deb’ rclone-v1.57.0-linux-a 100%[============================>] 12.97M 21.5MB/s in 0.6s 2022-02-17 20:25:18 (21.5 MB/s) - ‘rclone-v1.57.0-linux-arm64.deb’ saved [13596438/13596438] root@cls:/home/pi# dpkg -i rclone-v1.57.0-linux-arm64.deb Selecting previously unselected package rclone. (Reading database ... 47094 files and directories currently installed.) Preparing to unpack rclone-v1.57.0-linux-arm64.deb ... Unpacking rclone (1.57.0) ... Setting up rclone (1.57.0) ... Processing triggers for man-db (2.9.4-2) ... root@cls:/home/pi#
Pentru conectarea unui cont nou pe oricare dintre serviciile de stocare admise, va trebui executată comanda „rclone config„. Se va primi următorul răspuns:
root@cls:/home/pi# rclone config 2022/02/17 20:31:53 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults No remotes found - make a new one n) New remote s) Set configuration password q) Quit config n/s/q>n
În continuare, se va cere să introducem numele dorit pentru serviciul de stocare cloud în care vom sincroniza datele, precum și informațiile de autentificare în acesta.
Pentru OneDrive trebuie răspuns cu 27, apoi lăsate neatinse valorile implicite. Deoarece se realizează o conectare headless (prin comenzi, fără a dispune de o interfață grafică), va trebui descărcat Rclone pe un PC și solicitat de pe acesta token-ul de conectare.
Storage> 27 Option client_id. OAuth Client Id. Leave blank normally. Enter a string value. Press Enter for the default (""). client_id> Option client_secret. OAuth Client Secret. Leave blank normally. Enter a string value. Press Enter for the default (""). client_secret> Option region. Choose national cloud region for OneDrive. Enter a string value. Press Enter for the default ("global"). Choose a number from below, or type in your own value. 1 / Microsoft Cloud Global \ "global" 2 / Microsoft Cloud for US Government \ "us" 3 / Microsoft Cloud Germany \ "de" 4 / Azure and Office 365 operated by 21Vianet in China \ "cn" region> 1 Edit advanced config? y) Yes n) No (default) y/n> n Use auto config? * Say Y if not sure * Say N if you are working on a remote or headless machine y) Yes (default) n) No y/n> n Option config_token. For this to work, you will need rclone available on a machine that has a web browser available. For more help and alternate methods see: https://rclone.org/remote_setup/ Execute the following on the machine with the web browser (same rclone version recommended): rclone authorize "onedrive" Then paste the result.
Nu e mare scofală. Trebuie să descărcați arhiva .zip ce conține Rclone, să deschideți în aceasta o linie de comandă și să executați comanda .\rclone.exe authorize „onedrive”:
Executarea acestei comenzi va face să se deschidă în Internet Browser-ul implicit pagina de logare a OneDrive. După introducerea datelor de logare, veți fi redirecționați la o pagină identică celei din captura de ecran de mai jos.
Iar în linia de comandă va fi afișat token-ul de conectare.
Va trebui copiat și lipit respectivul token în sesiunea SSH la Raspberry Pi.
Ulterior, va trebui indicat tipul contului OneDrive în care se dorește sincronizarea fișierelor de pe Raspberry Pi ajutați de Rclone.
Răspunsul, așadar, variază în funcție de tipul contului ales pentru conectare.
Asistentul de configurare a Rclone va confirma conectarea la contul OneDrive.
Iar la final va întreba dacă se dorește conectarea la un alt cont ori părăsirea procedurii de conectare. La mine nu s-a pus problema, că n-am alte abonamente, nici măcar gratuite, așadar am răspuns cu litera „q” pentru a închide asistentul.
Conectând Rclone la OneDrive, acesta va „transforma” un folder local în OneDrive. Nu va descărca datele, ci doar va afișa conținutul acestora local. Pentru montarea respectivului folder va trebui executată comanda:
rclone --vfs-cache-mode writes mount [NumeServiciu]: [locatie/folderul/local/unde/va/fi/afisat/continutul/OneDrive/]
Așadar, în cazul meu, comanda este:
rclone --vfs-cache-mode writes mount OneDrive: /srv/dev-disk-by-uuid-c6b326d1-1573-461e-a081-c4eld8e1a61c/data/OneDrive
Cu „ls” la respectiva locație ar trebui să văd ceea ce în realitate se află stocat pe OneDrive.
Pentru a testa că totul a fost configurat corect, încercați sincronizarea datelor dintr-un folder aflat în Raspberry Pi în altul găzduit pe OneDrive.
rclone sync -v [locatie/folder/local/] [NumeServiciu]:[Folder_Cloud]
Astfel, pentru a sincroniza toate fișierele din folderul data aflat pe SSD în folderul RaspberryStorage găzduit pe OneDrive, comanda este:
rclone sync -v /srv/dev-disk-by-uuid-c1b256g2-1476-413e-a031-c4saf0e1ak1c/data/ OneDrive:RaspberryStorage
Obs.: Pentru obținerea rutei complete (absolute path), aruncați o privire peste acest tutorial.
Deoarece am folosit flag-ul -v, vom putea vedea în timp real operațiile realizate de Rclone.
Singurul inconvenient al sincronizării e că dacă veți șterge din greșeală vreun fișier, acesta va fi eliminat și din OneDrive data viitoare când veți lansa comanda de sincronizare. Dacă nu doriți acest lucru, înlocuiți „sync” cu „copy” în cadrul comenzii.
Lăsat așa cum se află actualmente, la închiderea sesiunii SSH conexiunea cu OneDrive se va pierde. În plus, doar utilizatorul „root” dispune de privilegiile necesare pentru a vedea conținutul OneDrive. Nici nu se va sincroniza automat, că încă n-am configurat nimic în acest scop, dar le vom trata pe fiecare în parte în articolul următor pe această temă.