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 ça0 * * * * 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).