rss logo

Comment synchroniser des fichiers entre un stockage cloud et des ordinateurs avec Rclone

Logo Rclone

Je cherchais un moyen de synchroniser automatiquement un fichier KeePass entre deux ordinateurs qui ne sont pas sur le même réseau et n'ont pas accès à un lecteur partagé. Après quelques recherches personnelles, j'ai découvert le merveilleux outil Rclone, qui répondait à toutes mes exigences. Il est open source, gratuit (vous pouvez soutenir le projet ici : https://rclone.org/sponsor/), et il prend en charge une large gamme de services de stockage cloud, dont Proton Drive.

  • Voici ce que l'on va réaliser :
    • Synchroniser un fichier KeePass entre deux postes de travail Windows pour prendre en compte les modifications apportées par les utilisateurs user01 et user02.
    • Utiliser le stockage cloud Proton Drive.
    • Activer le mode Bi-Sync de Rclone, qui permet la modification du fichier KeePass sur les deux ordinateurs.

⚠️Remarque : Bien prendre en compte que l'option de bi-synchronisation dans Rclone est encore en développement. Il est donc essentiel de créer régulièrement des sauvegardes des fichiers pour éviter toute perte de données potentielle.⚠️

Diagramme montrant la synchronisation Rclone d'un fichier KeePass (pwd.kdbx) entre Proton Drive et deux ordinateurs (PC01 et PC02) utilisant le stockage en nuage.

Créer un compte Proton

  • Suivre ce lien : https://account.proton.me/signup et créer un compte Proton (Remarque : un compte gratuit offre suffisamment d'espace pour nos besoins ici) :
Capture d'écran de la page de création d'un compte Proton avec des champs pour le nom d'utilisateur, le mot de passe et un bouton « Créer un compte ».
  • Depuis le menu principal, cliquer sur l'icone Drive afin d'activer le service de stockage cloud :
Capture d'écran montrant l'interface de Proton Mail avec une flèche pointant vers l'icône d'activation de l'entraînement dans le menu de l'application.

Rclone

Configurer Rclone avec Proton Drive sur PC01 et PC02

Capture d'écran du site web de Rclone avec un lien en surbrillance pour le téléchargement du logiciel.
  • Choisir le lien de téléchargement approprié en fonction de son architecture :
Capture d'écran de la page de téléchargement de Rclone mettant en évidence l'option de téléchargement Windows 64-bit avec une flèche.
  • Extraire le contenu de l'archive zip et renommer le dossier extrait en rclone :
Capture d'écran montrant l'extraction du fichier ZIP Rclone sous Windows et le contenu du dossier résultant.
  • Ouvrir un terminal depuis le dossier extrait et exécuter la commande .\rclone.exe config :
Capture d'écran montrant l'option d'ouvrir Windows Terminal dans le dossier Rclone et d'exécuter la commande rclone.exe config dans PowerShell.
  • Suivre les instructions de configuration et répondre aux questions posées comme montré ci-dessous :
PS C:\Users\user\Downloads\rclone> .\rclone.exe config 2023/10/07 14:46:36 NOTICE: Config file "C:\\Users\\user\\AppData\\Roaming\\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 Enter name for new remote. name> proton Option Storage. Type of storage to configure. Choose a number from below, or type in your own value. 1 / 1Fichier \ (fichier) 2 / Akamai NetStorage \ (netstorage) 3 / Alias for an existing remote \ (alias) […] 37 / Proton Drive \ (protondrive) 38 / Put.io \ (putio) 39 / QingCloud Object Storage \ (qingstor) 40 / Quatrix by Maytech \ (quatrix) 41 / SMB / CIFS \ (smb) […] Storage> 37 Option username. The username of your proton account Enter a value. username> YOUREMAILADDRESS@proton.me Option password. The password of your proton account. Choose an alternative below. y) Yes, type in my own password g) Generate random password y/g> y Enter the password: password: ******** Confirm the password: password: ******** Option 2fa. The 2FA code The value can also be provided with --protondrive-2fa=000000 The 2FA code of your proton drive account if the account is set up with two-factor authentication Enter a value. Press Enter to leave empty. 2fa> Edit advanced config? y) Yes n) No (default) y/n> n Configuration complete. Options: - type: protondrive - username: YOUREMAILADDRESS@proton.me - password: *** ENCRYPTED *** Keep this "proton" remote? y) Yes this is OK (default) e) Edit this remote d) Delete this remote y/e/d> y Current remotes: Name Type ==== ==== proton protondrive e) Edit existing remote n) New remote d) Delete remote r) Rename remote c) Copy remote s) Set configuration password q) Quit config e/n/d/r/c/s/q> q
  • Vérifier que la connexion à Proton Drive est fonctionnelle :
PS C:\Users\user\Downloads\rclone> .\rclone.exe ls proton:
  • Si le message d'erreur suivant apparait, s'assurer d'avoir précédemment ouvert l'application Proton Drive depuis l'interface web, comme expliqué un peu plus haut :
2023/10/07 15:44:12.806871 ERROR RESTY 401 GET https://mail.proton.me/api/core/v4/users: Invalid access token (Code=401, Status=401), Attempt 1 2023/10/07 15:44:12.945153 ERROR RESTY 422 POST https://mail.proton.me/api/auth/v4/refresh: Invalid refresh token (Code=10013, Status=422), Attempt 1 2023/10/07 15:44:16 mainShare &proton.Share{ShareMetadata:proton.ShareMetadata{ShareID:"", LinkID:"", VolumeID:"", Type:0, State:0, CreationTime:0, ModifyTime:0, Creator:"", Flags:0, Locked:false, VolumeSoftDeleted:false}, AddressID:"", AddressKeyID:"", Key:"", Passphrase:"", PassphraseSignature:""} 2023/10/07 15:44:16 shares []proton.ShareMetadata{} 2023/10/07 15:44:16 Failed to create file system for "proton:": couldn't initialize a new proton drive instance: the main share assumption has failed

Utilisation de Rclone

Une fois que le stockage cloud est configuré, voyons ce que nous pouvons faire avec cet outil.

  • Afficher les cloud configurés :
PS C:\Users\user\Downloads\rclone> .\rclone.exe listremotes proton:
  • Créer un fichier vide TEST.txt dans Proton Drive :
PS C:\Users\user\Downloads\rclone> .\rclone.exe touch proton:TEST.txt Capture d'écran de l'interface de Proton Drive montrant un fichier nommé TEST.txt dans la section Mes fichiers.
  • Synchroniser le Cloud Drive avec le dossier local C:\Users\user\Desktop\PROTON\ :
PS C:\Users\user\Downloads\rclone> .\rclone.exe sync proton: C:\Users\user\Desktop\PROTON\ Capture d'écran d'un dossier Windows nommé PROTON montrant un fichier synchronisé nommé TEST.txt.
  • Lister les fichiers du Cloud Drive :
PS C:\Users\user\Downloads\rclone> .\rclone.exe ls proton: 0 TEST.txt
  • Vérifie la version et met à jour Rclone vers la dernière version disponible, le cas échéant :
PS C:\Users\user\Downloads\rclone> .\rclone.exe selfupdate 2023/10/07 16:39:33 NOTICE: rclone is up to date
  • Afficher toutes les options disponibles pour Rclone :
PS C:\Users\user\Downloads\rclone> .\rclone.exe Usage: rclone [flags] rclone [command] Available Commands: about Get quota information from the remote. authorize Remote authorization. backend Run a backend-specific command. bisync Perform bidirectional synchronization between two paths. cat Concatenates any files and sends them to stdout. check Checks the files in the source and destination match. checksum Checks the files in the source against a SUM file. cleanup Clean up the remote if possible. completion Output completion script for a given shell. config Enter an interactive configuration session. copy Copy files from source to dest, skipping identical files. copyto Copy files from source to dest, skipping identical files. copyurl Copy url content to dest. cryptcheck Cryptcheck checks the integrity of an encrypted remote. cryptdecode Cryptdecode returns unencrypted file names. dedupe Interactively find duplicate filenames and delete/rename them. delete Remove the files in path. deletefile Remove a single file from remote. gendocs Output markdown docs for rclone to the directory supplied. hashsum Produces a hashsum file for all the objects in the path. help Show help for rclone commands, flags and backends. link Generate public link to file/folder. listremotes List all the remotes in the config file and defined in environment variables. ls List the objects in the path with size and path. lsd List all directories/containers/buckets in the path. lsf List directories and objects in remote:path formatted for parsing. lsjson List directories and objects in the path in JSON format. lsl List the objects in path with modification time, size and path. md5sum Produces an md5sum file for all the objects in the path. mkdir Make the path if it doesn't already exist. mount Mount the remote as file system on a mountpoint. move Move files from source to dest. moveto Move file or directory from source to dest. ncdu Explore a remote with a text based user interface. obscure Obscure password for use in the rclone config file. purge Remove the path and all of its contents. rc Run a command against a running rclone. rcat Copies standard input to file on remote. rcd Run rclone listening to remote control commands only. rmdir Remove the empty directory at path. rmdirs Remove empty directories under the path. selfupdate Update the rclone binary. serve Serve a remote over a protocol. settier Changes storage class/tier of objects in remote. sha1sum Produces an sha1sum file for all the objects in the path. size Prints the total size and number of objects in remote:path. sync Make source and dest identical, modifying destination only. test Run a test command touch Create new file or change file modification time. tree List the contents of the remote in a tree like fashion. version Show the version number. Use "rclone [command] --help" for more information about a command. Use "rclone help flags" for to see the global flags. Use "rclone help backends" for a list of supported services.

Configurer la Bisynchronisation

Maintenant que nous avons brièvement exploré comment utiliser Rclone, revenons à notre objectif principal : la synchronisation d'un fichier KeePass entre deux hôtes.

PC01

  • Créer un répertoire C:\RCLONE\ :
PS C:\Users\user\Downloads\rclone> mkdir C:\RCLONE
  • Envoyer le fichier C:\RCLONE\pwd.kdbx vers Proton Drive :
PS C:\Users\user\Downloads\rclone> .\rclone.exe sync C:\RCLONE\pwd.kdbx proton: Diagramme montrant la synchronisation de fichiers entre le PC01 et le Proton Drive à l'aide de Rclone avec un fichier sécurisé intitulé pwd.kdbx.
  • Activer la bisynchronisation entre C:\RCLONE\ et Proton Drive :
PS C:\Users\user\Downloads\rclone> .\rclone.exe bisync C:\RCLONE\ proton: --resync Diagramme illustrant la synchronisation bidirectionnelle du fichier pwd.kdbx entre PC01 et Proton Drive à l'aide de Rclone.
  • Effectuer une synchronisation bidirectionnelle entre C:\RCLONE\ et Proton Drive :
PS C:\Users\user\Downloads\rclone> .\rclone.exe bisync C:\RCLONE\ proton: --force

PC02

  • Créer un répertoire C:\RCLONE\ :
PS C:\Users\user\Downloads\rclone> mkdir C:\RCLONE
  • Récupérer le fichier pwd.kdbx depuis Proton Drive et le copier dans C:\RCLONE\ :
PS C:\Users\user\Downloads\rclone> .\rclone.exe sync proton: C:\RCLONE\ Diagramme montrant la synchronisation de fichiers entre Proton Drive et PC02 à l'aide de Rclone avec un fichier sécurisé intitulé pwd.kdbx.
  • Activer la bisynchronisation entre C:\RCLONE\ et Proton Drive :
PS C:\Users\user\Downloads\rclone> .\rclone.exe bisync C:\RCLONE\ proton: --resync Diagramme montrant la synchronisation Rclone d'un fichier KeePass (pwd.kdbx) entre Proton Drive et deux ordinateurs (PC01 et PC02) utilisant le stockage en nuage.
  • Effectuer une synchronisation bidirectionnelle entre C:\RCLONE\ et Proton Drive :
PS C:\Users\user\Downloads\rclone> .\rclone.exe bisync C:\RCLONE\ proton: --force

Automatiser la Bisynchronisation avec le Planificateur de tâches Windows

L'architecture est configurée et fonctionnelle, mais nous devons exécuter manuellement la commande .\rclone.exe bisync C:\RCLONE\ proton: --force sur chaque ordinateur chaque fois que le fichier pwd.kdbx est modifié. Pour automatiser ce processus, nous utiliserons un script batch qui sera exécuté par le Planificateur de tâches Windows.

Script Batch

Créez un script C:\rclone.bat.

@echo off REM VARIABLES set SOURCE=C:\RCLONE set DESTINATION=proton: set DOWNLOADS=C:\Users\USERNAME\Downloads REM UPDATE RCLONE TO LATEST RELEASE %DOWNLOADS%"\rclone\rclone.exe" selfupdate REM FORCE BISYNC %DOWNLOADS%"\rclone\rclone.exe" bisync %SOURCE% %DESTINATION% --force

Planificateur de tâches Windows

  • Ouvrir le Planificateur de tâches Windows :
Capture d'écran de la boîte de dialogue Exécuter de Windows avec la commande tasksched.msc entrée pour ouvrir le planificateur de tâches.
  • Créer une nouvelle tâche :
Capture d'écran du planificateur de tâches de Windows avec l'option Créer une tâche en surbrillance dans le menu.
  • Donner un nom à la tâche et la configurer comme ci-dessous :
Capture d'écran de la fenêtre Créer une tâche du planificateur de tâches montrant les paramètres généraux avec le nom de la tâche KeePass_Sync et les options d'exécution, que l'utilisateur soit connecté ou non.
  • Dans l'onglet Déclencheurs, cliquer sur Nouveau… et configurer la tâche afin qu'elle s'exécute toutes les 5 minutes (ajuster cette valeur en fonction de ses besoins) :
Capture d'écran des paramètres de déclenchement du planificateur de tâches avec des options permettant d'exécuter une tâche une seule fois, de la répéter toutes les 5 minutes indéfiniment et de la confirmer avec OK.
  • Dans l'onglet Actions, cliquer sur Nouveau… et définir le script batch précédemment créé, en ajoutant C:\Users\user\Downloads\rclone\ dans l'option Démarrer dans :
Capture d'écran des paramètres d'action du planificateur de tâches, montrant un script batch rclone.bat défini pour démarrer dans le dossier Téléchargements.
  • Enfin, dans l'onglet Conditions, spécifier que la tâche ne doit démarrer que si une connexion réseau est disponible :
Capture d'écran de l'onglet Conditions du planificateur de tâches avec l'option de démarrage de la tâche uniquement si une connexion réseau est disponible, définie sur Toute connexion.