Sauvegarde sur le Cloud en utilisant RCLONE - Retour d'expérience

Utilisation de RCLONE dans un Scenario, récupération de l’exécution, envoi de notification.

Je vous fais un petit retour sur l’exécution de rclone à partir d’un scénario pour effectuer les Sauvegardes sur un Cloud externe (OneDrive, Google, Dropbox, file server local, …).

Malheureusement le plugin Cloudsyncpro très pratique ne prend pas encore en charge Onedrive, il fallait donc une solution alternative.

Merci encore à @jpty pour son aide et m’avoir aiguillé.

Comme cela est mon premier script, je pense aux débutants également, pas facile de trouver toutes les bonnes informations, je ne suis pas un développeur mais la logique des scénarios et autre ne me rebute pas, il faut juste trouver les bonnes syntaxes et surtout comment faire pour que cela fonctionne :blush:

Bonne lecture …

Objectif :

  • Copie de sauvegarde sur Microsoft Onedrive
    Etant donné que j’ai un abonnement Microsoft 365, l’objectif et d’effectuer la copie de sauvegarde du backup Jeedom sur mon OneDrive
  • Utilisation de RCLONE (très facile à utiliser en mode de commande) et d’un scénario pour automatiser cela sans se prendre la tête :wink:
  • RClone possède une multitude de fonctionnalités, nous utiliserons que la synchronisation en mode copy des fichiers

Les étapes à prendre en compte

  • Installation de RCLONE
  • Configuration de RCLONE pour son stockage Cloud
  • Ecriture du scénario pour automatiser la sauvegarde vers le Cloud après le backup de Jeedom

Installation de RCLONE

  • Se mettre en ‘sudo su’ pour effectuer l’installation qui suit
    obligatoire pour pouvoir lancer Rclone depuis Jeedom dans n’importe quel contexte.
  • Suivre la procédure sur ce lien du site RCLONE.ORG
    L’installation est très rapide sans aucune dépendance

Configuration de RCLONE

  • Une fois encore très simple, suivre les procédures de la documentation avec ce lien
  • Dans mes recherches j’avais trouvé ce lien qui explique bien pour configurer Onedrive
  • Attention ne faire que du STEP 1 à 4, le STEP 5 permet de monter un lecteur de son OneDrive, ça ne va pas être notre façon de faire pour automatiser la sauvegarde
    Pour mon utilisation, la référence de stockage pour mon Onedrive se nomme onedrive, c’est très original, mais attention car ce nom sera utiliser bien évidemment dans la ligne de commande Rclone

Le scenario

  • Déclenchement


    utilisation du tag #end_backup#, le scénario se lancera systématiquement après une sauvegarde jeedom, que la sauvegarde soit automatique ou manuelle.

  • Un bloc Code

La ligne de commande rclone

  • ‹ sudo › : impérativement lancer rclone avec Sudo pour être dans le contexte de l’utilisateur root comme pour l’installation
  • ‹ copy › : copie uniquement les nouveaux fichiers ou fichiers modifiés, j’effectue une cpie et non pas une synchronisation afin de conserver sur mon Onedrive tout l’historique des sauvegardes
  • ‹ /var/www/html/backup › : lieu de stockage des sauvergardes Jeedom
  • ‹ onedrive: › : lieu de stockage configuré dans Rclone
  • ‹ /00jeedom/backup › : répertoire de destination pour la copie
  • ‹ -v › : affiche la liste des fichiers copiés
  • ‹ 2>&1 › : permet d’envoyer dans la variable $cmd le contenu qui est affiché par la commande.
/* Lancement de la sauvegarde Jeedom sur OnedDrive */
$cmd = "sudo rclone copy /var/www/html/backup onedrive:/00jeedom/backup -v 2>&1";
$scenario->setLog('Lancement de la commande : '.$cmd);
$result = shell_exec($cmd);
$scenario->setLog('Retour de la commande');
$scenario->setLog($result);

/* Update to tag 'scmessage' pour envoyer au centre de notification (facultatif) */
$tags = $scenario->getTags();
$tags['#scmessage#'] =  "<strong>Résultat de la Sauvegarde </strong> <br> <br>".$result;
$scenario->setTags($tags);

Le scénario complet

5 « J'aime »

Milles mercis pour le partage. Je vais tester cela sur une installation Jeedom de test :slight_smile:

1 « J'aime »

Franchement top d’avoir partager mais j’aurais besoin un peu d’aide car tes liens son redondant , enfin pour moi donc je me perd

Je fais

curl https://rclone.org/install.sh | sudo bash
curl https://rclone.org/install.sh | sudo bash -s beta
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
cd rclone-*-linux-amd64
sudo cp rclone /usr/bin/
sudo chown root:root /usr/bin/rclone
sudo chmod 755 /usr/bin/rclone
sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1/
sudo mandb 

Puis

rclone config

Je saute un fichier dans ta description pour arriver la
https://itsfoss.com/use-onedrive-linux-rclone/

Mais du coup, pourquoi ne pas l’installer via un sudo apt install rclone ?

Ensuite, il faut aller jusque l’etape 5 et non 4 (il y a une erreur car il y a deux etapes 5, il faut s’arreter aprés la premiére) confirmé ici Microsoft OneDrive

Mais je bloque a

Wainting for code 

Rien ne se passe, il faut faire quoi ? :thinking: :thinking: :thinking:

Bonjour @Francky62

J’ai peut-être donné trop de détail et de ce fait apporté de la confusion, car chacun fait ce qu’il veut installé ou pas des beta et autre, monter ou pas le drive onedrive par exemple.
Ayant installé rclone la semaine dernière sur mon deuxième Jeedom je peux dire ce que j’ai fait.
Attention je ne suis pas un grand utilisateur de Linux :slight_smile:
Il faut peut-être désinstaller pour repartir de zéro

Pour l’installation

  • Se mettre en ligne de commande
  • SUDO SU (impératif pour être utilisé sous Jeedom et fichier de configuration pour l’utilisateur root)
  • curl https://rclone.org/install.sh | sudo bash

Il y a rien d’autre à faire, l’important est d’installer rclone en mode root pour être utilisable avec Jeedom (ligne de commande avec sudo pour root)
image
Toutes les autres commandes indiquées à la suite sur le site rclone ne sont pas pour une installation automatique, tu en as fait trop et je ne connais pas les effets de bord potentiels.

Pour la configuration

  • Utilisant le même environnement Onedrive, je n’ai fait que copier mon fichier de conf du repertoire « .config » de root
  • Sinon il suffit de lancer Rclone avec la commande « rclone config » toujours en tant que SUDO SU et surtout pas uniquement ‹ PI › sinon le fichier de configuration se créé pour le user PI et non root
  • Pour le détail de la configuration lien il faut bien aller jusque l’étape « Step 5: Enter account type » et non pas 4 comme je l’ai indiqué initialement (désolé)

Pour info le fichier de configuration généré se trouve automatiquement dans le répertoire caché de root ‹ /root/.config/rclone/rclone.conf ›.
Je donne cette info car j’effectue aussi la copie de ce fichier sur mon onedrive en cas de crash de mon Raspberry, je n’aurais pas à reconfigurer rclone :), juste à remettre le fichier en place dans le répertoire caché .config
J’avais trouvé cette ligne de commande pour lancer le gestionnaire de fichier en mode root « sudo pcmanfm ».

J’espère avoir donné assez d’infos et désolé pour la confusion.
Ma copie de mes 2 jeedom fonctionne parfaitement après la sauvegarde automatique de Jeedom, je suis enfin serein en cas de crash ou de problème de mise à jour du raspbian, je sais où retrouver mes sauvegardes copiées chaque jour.

Ok merci pour tes explications, je voudrais faire un test sur ma VM de test mais je bloque a l’etape 4 (Sync Microsoft OneDrive in Linux With Rclone [Step by Step])
Il doit ouvrir le lien de connexion dans le navigateur ? Car moi il ne se passe rien

Hello @Franckybel

Et merci pour ce tuto !
Je vais regarder ca en détail.
Voir même me lancer sur la création d’un plugin OneDrive si @thanaus ne maintient plus le sien ou ne fait plus d’addon ! Ce serait dommage.

Xav

un petit plugin serait pas mal effectivement .

J’ai installé Cloud sync pro pour voir, j’ai pris la beta qui date de fin 2021 par rapport a la stable qui date de 2020 et j’ai un petit message d’erreur , suite a la 4.2 ? Mais en tout cas je n’avais pas compris comment mettre onedrive car il n’y ai pas dans la liste d’ou cette solution qui est intérésante . J’ai parcouru un peu le forum et le support de OneDrive est clairement demandé et intéréssant pour ceux qui on un abonemment office365 par exemple.

Aprés effctivement, si le plugin Cloud sync pro viendrait a évoluer avec one drive et d’autre, cela serait top.

Oui c’est ça, automatiquement le navigateur est lancé par rclone avec le lien pour se connecter dans Onedrive.
une fois connectée dans onedrive, une clé est générée et envoyée à rclone.(qui sert de connexion automatique)
Pour info je ne suis pas sur une machine virtuelle mais sur RasBerry avec le Raspbian en mode desktop, je ne suis pas un fan du SSH (trop loin pour moi :slight_smile: )

Il est clair qu’un plugin serait plus sympa, pas de nécessité de gérer du code même si celui si est très simple.
C’est bien le problème de Jeedom maintenant, le gratuit ou presque gratuit a ses limites.
Il y a d’autres plugin très sensibles qui ne sont plus maintenus (comme la gestion des compteurs EDF avec délestage) et Jeedom visiblement ne souhaite pas intégrer ces composantes dans les plugins supportés.
Je trouve normal de payer un plugin quelques Euros mais si le développeur cesse sont activité, Jeedom devrait le reprendre. A voir pour la suite mais cela peut mettre vraiment à mal une installation que l’on pouvait penser robuste.
Pour ma part, j’effectue systématiquement une duplication de mon disque SSD avant toute mise à jour Rasbian ou Jeedom, si problème je peux revenir en arrière et pourquoi pas ne plus installer de mise à jour …
Cloudsynpro n’est que la phase visible (du problème de support des plugin) de l’iceberg, pour une partie simple encore car il s’appuie sur rclone qui est facile à utiliser même à la main via les lignes de commandes. Je ne suis pas développeur donc perdu beaucoup de temps pour intégrer ce mini code :slight_smile:

Merci pour ton aide

Donc je résume en SSH

su - 
curl https://rclone.org/install.sh | sudo bash
rclone config

On obtient

root@JeedomAtlas:~# rclone config
2022/02/17 10:38:27 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
name> Sauvegarde Jeedom
Option Storage.
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ "fichier"
 2 / Alias for an existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Better checksums for other remotes
   \ "hasher"
 7 / Box
   \ "box"
 8 / Cache a remote
   \ "cache"
 9 / Citrix Sharefile
   \ "sharefile"
10 / Compress a remote
   \ "compress"
11 / Dropbox
   \ "dropbox"
12 / Encrypt/Decrypt a remote
   \ "crypt"
13 / Enterprise File Fabric
   \ "filefabric"
14 / FTP Connection
   \ "ftp"
15 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
16 / Google Drive
   \ "drive"
17 / Google Photos
   \ "google photos"
18 / Hadoop distributed file system
   \ "hdfs"
19 / Hubic
   \ "hubic"
20 / In memory object storage system.
   \ "memory"
21 / Jottacloud
   \ "jottacloud"
22 / Koofr
   \ "koofr"
23 / Local Disk
   \ "local"
24 / Mail.ru Cloud
   \ "mailru"
25 / Mega
   \ "mega"
26 / Microsoft Azure Blob Storage
   \ "azureblob"
27 / Microsoft OneDrive
   \ "onedrive"
28 / OpenDrive
   \ "opendrive"
29 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
30 / Pcloud
   \ "pcloud"
31 / Put.io
   \ "putio"
32 / QingCloud Object Storage
   \ "qingstor"
33 / SSH/SFTP Connection
   \ "sftp"
34 / Sia Decentralized Cloud
   \ "sia"
35 / Sugarsync
   \ "sugarsync"
36 / Tardigrade Decentralized Cloud Storage
   \ "tardigrade"
37 / Transparently chunk/split large files
   \ "chunker"
38 / Union merges the contents of several upstream fs
   \ "union"
39 / Uptobox
   \ "uptobox"
40 / Webdav
   \ "webdav"
41 / Yandex Disk
   \ "yandex"
42 / Zoho
   \ "zoho"
43 / http Connection
   \ "http"
44 / premiumize.me
   \ "premiumizeme"
45 / seafile
   \ "seafile"
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> y
2022/02/17 10:38:53 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=JtmESw7RKplFlUDUwEb8GA
2022/02/17 10:38:53 NOTICE: Log in and authorize rclone for access
2022/02/17 10:38:53 NOTICE: Waiting for code...

Et puis voila je séche, j’ai beau regarder sur les forums, il n’a pas l’air d’etre possible de le faire en ssh :frowning: j’ai vu qu’il faudrait creer le fichier sans le faire en automatique et en faire un autre sur une machine virtuelle par exemple avec une connexion sur un navigateur possible et copier ce fichier dans mon jeedom … C’est beaucoup moins simple d’un coup :stuck_out_tongue: ou si quelqu’un a une autre solution …

Il faut bien un navigateur pour se connecter et que Microsoft génére la clé
La configuration se copie facilement à travers le fichiers rclone.conf généré, tu peux donc passer par un raspbian temporaire en mode desktop sur une carte microSD.
Peut être tester aussi rclone sur Windows et voir si le fichier de configuration est le même (ce qui semblerait logique).
Désolé mais là pas d’autres idées, si j’étais dans ton cas je partirai avec un Rasbian temporaire car très rapide à mettre en place pour récupérer le fichier de conf généré.

J’y suis enfin arrivé , merci @Franckybel et @spottier88 . A foce de chercher, j’avais sauté une ligne et je bosser sur le fichier utilisateur au lieu du root …

Effectivement cela fonctionne trés bien :wink:

Sur Atlas par exemple :

su - 
curl https://rclone.org/install.sh | sudo bash
rclone config

J’ai ensuite creer un fichier manuellement pour que le fichier existe meme si il ne sera pas bon (configuation manuel pour arriver au bout )

Ensuite vous devez refaire la meme opération sur une machine avec un navigateur. Moi j’ai utilisé sur mon PC en wsl . Se mettre aussi en root et faire toute la démarche si dessus pour creer le bon fichier grace a la connexion externe

Ensuite, j’ai copié les infos du rclone de ma machine virtuel dans le fichier rclone de la box atlas

et vous pouvez creer votre scenario.

Pour info :wink:

3 « J'aime »