Synchronisation avec Rclone vers le Cloud

Préambule

Dans la suite de l’article sur la surveillance de ma porte de garage (et d’autres ouvrants), j’ai décidé que les photos prises lors des événements (« ouvert », « encore ouvert », « fermé ») devaient être exportées.

Cela est faisable via courriel ou via FTP, mais comme j’ai des serveurs YunoHost avec Nextcloud… On va utiliser Rclone !

Introduction

Rclone est un peu comme Rsync puisque c’est un outil libre, puissant et polyvalent pour synchroniser, sauvegarder et gérer vos fichiers… mais, il sait gérer les services tiers et donc les synchronisations entre votre ordinateur (ou serveur) et de nombreux services cloud : Nextcloud, Google Drive, Dropbox, S3, etc.
Il fonctionne sous Linux, Windows et macOS, et permet de réaliser des synchronisations simples ou avancées, y compris des sauvegardes chiffrées.

Installation

Rien de plus simple (je suis sur un Raspberry Pi Zéro avec BookWorm en version « Lite ») avec la simple ligne de commande suivante :
sudo apt install rclone
Évidemment, il existe d’autres solutions selon votre environnement.

Configuration d’un « remote » (cloud distant)

Il faut lancer la configuration interactive avec
rclone config

Puis, il faut répondre aux questions :

  • Créer un nouveau remote (n)
  • Donner un nom (ex : Nextcloud_photos_surveillance)
  • Choisir le type de stockage (ex : webdav pour Nextcloud)
  • Pour Nextcloud, saisir l’URL WebDAV complète :
    https://votre.domaine.tld/remote.php/dav/files/votre_utilisateur/
  • Renseigner identifiant et mot de passe (chiffré dans la configuration)

Synchroniser ses fichiers

Il existe 2 solutions de synchronisation ; soit la copie simple, soit la copie miroir.

  • Copie simple 
    (n’ajoute que les nouveaux fichiers ; ne supprime rien) :
    rclone copy /chemin/local Nextcloud_photos_surveillance:/chemin/distant --progress
  • Synchronisation miroir 
    (le dossier cloud reflète exactement le dossier local : les fichiers supprimés localement le seront aussi à distance)
    rclone sync /home/alban/photos Nextcloud_photos_surveillance:GaragePhotos --progress

Test

On va tester avant de mettre ça en action via script (il faut toujours tester ses commandes avant de les intégrer à de l’automatisation 😉 Non ?!?)

Listons les photos dans le dossier /home/alban/photos sur le RaspberryPi.
Nous avons 6 photos :

On va créer un dossier « GaragePhotos » sur le Nextcloud et tester d’y envoyer les photos.

Le dossier est créé sur le NextCloud. De fait, il est naturellement vide.

Paf, on se lance un petit rclone

Et la synchronisation commence avec différentes informations visibles.
Chaque fichier va être visible avec des info de progression puis les infos disparaissent lors de la dernière actualisation du Terminal

Nous avons maintenant uniquement l’affichage final avec le nombre de fichiers transférés et le temps passé (je résume)

Allez, on regarde sur le NextCloud ?

Bingo, on a bien nos 6 photos !

Scripting

Place maintenant à l’intégration au script python (pour rester dans la suite de l’article sur la surveillance de ma porte de garage pour mon cas)

Il faut créer une nouvelle définition pour rclone :

def rclone():
# Commande rclone pour envoyer la photo
commande = f'rclone sync /home/alban/photos Nextcloud_photos_surveillance:GaragePhotos --progress'
print(f"Envoi de la photo vers Nextcloud : {commande}")
os.system(commande)

Ensuite, il reste simplement à jouer cette action à chaque fois qu’une photo est réalisée.
Ainsi, chaque partie

(...)
prendre_photo()
(...)

Deviendra

(...)
prendre_photo()
rclone()
(...)

Puisque mon souhait est que les photos soient synchronisées en temps réel, j’ai choisi cette solution, mais on peut aussi faire une tache cron ou une tache systemd.

Une tache cron donnerait un truc comme ça
0 * * * * rclone sync /chemin/local VotreCloud:/chemin/distant --progress

Conclusion

Bien sûr, j’ai testé plusieurs fois aujourd’hui avec des tas de photos et tout fonctionne à merveille.
La synchronisation ajoute les nouvelles photos et si j’ai supprimé les photos localement, elles seront supprimées sur le Nextcloud lors de la prochaine synchro (à chaque événement pour mon cas).

Bref, dans la lignée de Rsync que j’utilise beaucoup, Rclone présente un intérêt dans sa capacité à faire de la synchronisation vers du WebDav (puisque j’ai des serveurs YunoHost avec (notamment) Nextcloud).

A propos de Alban

Papa de 4 enfants étant lui-même resté un enfant. Diététicien-Nutritionniste tombé par obligation dans l'informatique à 22 ans pour le boulot et s'étant "un peu" pris au jeu ... Pas un génie de l'informatique (loin de là), mais intéressé et carrément orienté Linux et entraide. Lassé de l'évolution du Monde de la Santé dans lequel les patients sont de plus en plus à traiter comme des clients (je suis un soignant !!!), j'ai opté pour une reconversion en repartant en Alternance... à... 44 ans D'abord dans le cadre d'un BTS SIO option SISR (Solutions d’Infrastructure, Systèmes et Réseaux) en Septembre 2019. Après l’obtention du BTS, j'ai décidé de poursuivre (toujours en alternance) en Bac+3 avec un Bachelor Concepteur de Systèmes d'Information. Depuis septembre 2022, je suis donc encore plus vieux, mais un jeune diplômé "Administrateur Systèmes et Réseaux". Citation personnelle : « Si la réussite facile flatte l’égo, C’est de la persévérance que nait le plaisir de la réussite. »

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.