12/05/2024

Sauvegarde

Rclone, un outil gratuit pour synchroniser vos données dans le Cloud

I. Présentation

Dans ce tutoriel, nous allons apprendre à utiliser Rclone pour effectuer de la synchronisation et de la copie de fichiers dans le Cloud ou vers un serveur de stockage distant. Le Cloud Azure de Microsoft sera pris comme exemple, mais les possibilités sont nombreuses...

Il s'agit en quelque sorte d'une alternative à la célèbre commande "RSync", mais à destination d'espace de stockage Cloud, ainsi qu'à plusieurs commandes Linux comme "cp", "mv", ou encore "rm". En effet, RClone est capable de transférer des fichiers, de faire de la simple copie, de la synchronisation (en mode miroir), ou encore de déplacer des fichiers. Vous l'aurez compris, c'est un outil polyvalent et très intéressant lorsque l'on veut manipuler des données entre un espace de stockage local et un espace de stockage Cloud, voire même entre deux espaces Cloud.

Parmi les cas d'usage :

  • Sauvegarder (et chiffrer) des fichiers dans un espace de stockage Cloud
  • Restaurer (et déchiffrer) des fichiers à partir du stockage Cloud
  • Effectuer un miroir de données entre les données du Cloud vers un autre service Cloud ou un emplacement local

Sous licence MIT, Rclone prend en charge environ 40 fournisseurs de Cloud différents (pour les pros et les particuliers), ainsi que les protocoles de transferts de fichiers classiques (FTP, HTTP, SFTP, WebDAV, SMB, etc.). Parmi les services pris en charge :

  • Dropbox
  • Google Drive
  • Microsoft OneDrive
  • Mega
  • Microsoft Azure Blob Storage
  • Amazon S3
  • Nextcloud
  • Wasabi
  • Synology C2 Object Storage
  • Zoho WorkDrive
  • Scaleway
  • Etc...

La liste complète est accessible sur cette page. De manière générale, Rclone prend en charge le stockage objet S3.

Rclone est disponible pour les systèmes d'exploitation les plus utilisés : Windows, Linux et macOS, ainsi que sur d'autres systèmes comme FreeBSD. Par ailleurs, Rclone peut être utilisé manuellement, au sein d'une tâche planifiée (ou de la crontab sous Linux), et pourquoi pas dans un script PowerShell.

Pour en savoir plus, rendez-vous sur le site officiel :

II. Cas pratique du jour

Compte tenu des fonctionnalités de l'outil, des fournisseurs Cloud et des protocoles pris en charge, les possibilités sont très nombreuses ! Dans cet exemple sous Windows, l'objectif va être de synchroniser le contenu d'un répertoire local vers un espace de stockage blob dans Azure. On pourrait faire la même chose vers Amazon S3, vers Dropbox ou encore vers un serveur Nextcloud...!

Ce qui donne :

  • Source : C:\TEMP\SyncAzure\
  • Destination : Microsoft Azure, compte de stockage "azure-demo"

Une fois la configuration de Rclone effectuée, une tâche planifiée sera créée sur la machine Windows de manière à synchroniser les fichiers toutes les 4 heures.

On pourrait faire la même chose sur un serveur Windows Server (ou un serveur Linux) pour synchroniser un ensemble de données, la configuration d'un logiciel, etc...

III. Installer Rclone sur Windows

Pour installer Rclone sur Windows, il y a plusieurs options possibles :

  • Installer avec Chocolatey :
choco install rclone
  • Installer avec WinGet (gestionnaire de paquets intégré à Windows 10 et Windows 11) :
winget install Rclone.Rclone

Avec cette méthode, il y a un alias de commande qui est créé, ce qui permet d'appeler "rclone" dans la ligne de commande directement.

  • Télécharger l'archive ZIP et décompresser son contenu : Rclone est un exécutable portable :

Télécharger l'archive ZIP de Rclone

Le fait d'appeler rclone.exe (ou rclone selon la méthode d'installation) permettra d'afficher l'aide. L'occasion de voir que l'application est opérationnelle.

Liste des commandes RClone

IV. Créer l'espace de stockage Azure

Afin de pouvoir connecter Rclone à Azure, il convient de créer un espace de stockage dans Azure. Ceci implique de créer un compte de stockage à partir du portail Azure "portal.azure.com". Dans cet exemple, le compte de stockage s'appelle "florclone".

Azure Compte de stockage pour Rclone

Dans les options "Réseau", il convient de le rendre accessible depuis le réseau public si la machine équipée de Rclone est une machine distante. Sinon, elle ne pourra pas se connecter à l'espace de stockage.

Par ailleurs, dans l'onglet "Protection des données", nous pouvons activer la suppression réversible pour le contenu de cet espace de stockage. C'est intéressant pour se protéger contre certaines menaces.

Quand la configuration du compte de stockage est définie, nous pouvons lancer sa création.

Ensuite, accédez au compte de stockage quand il sera créé. Sur la gauche, cliquez sur "Conteneurs" puis sur "+ Conteneur" pour créer un nouveau conteneur. Ici, un conteneur nommé "rclone1" est créé et le "Niveau d'accès anonyme" est défini sur "Privé".

Créer un conteneur Azure Blob pour Rclone

Pour finir, au niveau du compte de stockage, cliquez sur "Clés d'accès" sur la gauche sous "Sécurité + réseau". Cela va permettre de récupérer la clé que l'on va utiliser pour la suite pour s'authentifier auprès d'Azure à l'aide de Rclone.

Rclone Azure Blob

Tout est prêt du côté d'Azure.

V. Configurer Rclone pour Azure Storage

A. Ajouter un remote dans Rclone

Rclone est présent sur la machine Windows, mais il n'est pas configuré : un espace de stockage doit être ajouté. Pour cela, il convient d'initier l'assistant de configuration :

.\rclone.exe config

Note : selon le mode d'installation de Rclone, il n'est pas déclaré de la même façon au niveau des variables d'environnements du système. Donc, l'appel de "rclone.exe" peut fonctionner, ou sinon, si ce n'est pas le cas, il faut utiliser ".\rclone.exe" à partir du dossier où se situe l'exécutable.

L'assistant indique qu'il n'y a pas de "remote", donc on va en créer un en indiquant "n".

No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n

Nous devons nommer cet espace de stockage, par exemple "azure-demo".

Enter name for new remote.
name> azure-demo

Rclone config - Exemple Windows

Puis, il convient d'indiquer le nom du fournisseur correspondant à l'espace de stockage à ajouter. Pour Azure, il s'agit du numéro 30 dont le nom technique attendu par Rclone est "azureblob".

Rclone - Liste des fournisseurs Cloud

Nous précisons "azureblob" et nous validons. Ensuite, nous devons indiquer le nom du compte de stockage Azure : on reprend le nom indiqué dans Azure, à savoir "florclone".

Storage> azureblob

Option account.
Azure Storage Account Name.
Set this to the Azure Storage Account Name in use.
Leave blank to use SAS URL or Emulator, otherwise it needs to be set.
If this is blank and if env_auth is set it will be read from the
environment variable `AZURE_STORAGE_ACCOUNT_NAME` if possible.
Enter a value. Press Enter to leave empty.
account> florclone

Vient la phase d'authentification. Ici, nous devons indiquer la clé de connexion à l'étape "Storage Account Share Key". Vis-à-vis de la configuration déployée dans cet exemple, les autres options peuvent rester "vides" et par défaut, mais nous pourrions effectuer l'authentification à l'aide d'un certificat.

Rclone prend en charge plusieurs méthodes d'authentification.

Option env_auth.
Read credentials from runtime (environment variables, CLI or MSI).
See the [authentication docs](/azureblob#authentication) for full info.
Enter a boolean value (true or false). Press Enter for the default (false).
env_auth> <vide>

Option key.
Storage Account Shared Key.
Leave blank to use SAS URL or Emulator.
Enter a value. Press Enter to leave empty.
key> R7YHzVz8HAe/Kdc5UF51yokk0TKNV8xXlckOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Option sas_url.
SAS URL for container level access only.
Leave blank if using account/key or Emulator.
Enter a value. Press Enter to leave empty.
sas_url> <vide>

Option tenant.
ID of the service principal's tenant. Also called its directory ID.
Set this if using
- Service principal with client secret
- Service principal with certificate
- User with username and password
Enter a value. Press Enter to leave empty.
tenant> <vide>

Option client_id.
The ID of the client in use.
Set this if using
- Service principal with client secret
- Service principal with certificate
- User with username and password
Enter a value. Press Enter to leave empty.
client_id> <vide>

Option client_secret.
One of the service principal's client secrets
Set this if using
- Service principal with client secret
Enter a value. Press Enter to leave empty.
client_secret> <vide>

Option client_certificate_path.
Path to a PEM or PKCS12 certificate file including the private key.
Set this if using
- Service principal with certificate
Enter a value. Press Enter to leave empty.
client_certificate_path> <vide>

Option client_certificate_password.
Password for the certificate file (optional).
Optionally set this if using
- Service principal with certificate
And the certificate has a password.
Choose an alternative below. Press Enter for the default (n).
y) Yes, type in my own password
g) Generate random password
n) No, leave this optional password blank (default)
y/g/n> n

Edit advanced config?
y) Yes
n) No (default)
y/n> n

Configuration complete.

Une fois la configuration complétée, un résumé s'affiche comme ceci et il convient de valider avec "y" :

Options:
- type: azureblob
- account: florclone
- key: R7YHzVz8HAe/Kdc5UF51yoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Keep this "azure-demo" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

Current remotes:

Name         Type
====         ====
azure-demo   azureblob

Désormais, notre instance Rclone dispose d'un remote correspondant à notre espace de stockage Azure.

q) Quit config
e/n/d/r/c/s/q> q

La commande de configuration peut être lancée à n'importe quel moment pour gérer les remotes, c'est-à-dire pour ajouter, supprimer, modifier, renommer ou copier un remote.

B. Lister le contenu de l'espace de stockage distant

Rclone est livré avec un jeu de commande complet que l'on peut exploiter pour parcourir le contenu de l'espace de stockage distant.

La commande ci-dessous permet d'obtenir la liste des répertoires (conteneurs/buckets), ce qui affichera le conteneur "rclone1" présent dans Azure :

rclone.exe lsd azure-demo:

Rclone lsd Azure

Ensuite, pour obtenir la liste des fichiers présents dans un répertoire (ou des objets pour reprendre le terme exact), par exemple dans le conteneur nommé "rclone1", nous utiliserons cette syntaxe (ls à la place de lsd) :

rclone.exe ls azure-demo:rclone1

Voici un exemple :

Rclone avec Azure commande ls

Ce contenu est également visible à partir du portail Azure :

Portail Azure - Synchronisation Rclone

VI. Synchroniser les données

Maintenant que la machine locale est capable d'envoyer des données dans Azure, ce serait dommage de s'en priver ! Mais, comment faire ? Comment synchroniser un dossier local avec un espace de stockage Azure ? Pour répondre à cette question, rclone peut être utilisé selon la syntaxe suivante :

rclone.exe <opération> <source> <destination> <options>

Ainsi, nous pourrions synchroniser le répertoire "C:\TEMP\SyncAzure\" vers le répertoire virtuel "azure-demo:rclone1" correspondant à notre remote. À cela, nous allons ajouter un fichier de log nommé syncazure.log pour avoir des informations sur les actions réalisées.

rclone.exe sync "C:\TEMP\SyncAzure\" azure-demo:rclone1 --log-file=syncazure.log --log-level=INFO

À chaque fois que la commande ci-dessus sera lancée, Rclone synchronisera la source avec la destination : les deux emplacements sont en mode miroir (avec comme source l'emplacement local). Le fichier de log met clairement en évidence les changements ou le fait qu'il n'y ait rien de nouveau à synchroniser.

Rclone - Log de la synchronisation

La tâche de synchronisation fonctionne aux petits oignons !

VII. Tâche planifiée Rclone sur Windows

Nous pouvons envisager de créer une tâche planifiée qui va exécuter la tâche de synchronisation Rclone de façon automatique, à intervalle régulier.

Nous pouvons créer la tâche planifiée à partir du Planificateur de tâches de Windows, en indiquant un nom, une description, un déclencheur, etc... Comme on le ferait pour une autre tâche planifiée.

Tâche planifiée Rclone sur Windows

Le plus important vis-à-vis de Rclone, c'est l'onglet "Actions" puisqu'il convient d'ajouter une action qui reprend globalement la ligne de commande Rclone évoquée précédemment.

  • Action : Démarrer un programme
  • Programme/script : C:\TEMP\rclone-v1.63.0-windows-amd64\rclone.exe
  • Ajouter des arguments : sync C:\TEMP\SyncAzure\ azure-demo:rclone1 --log-file=C:\TEMP\rclone-v1.63.0-windows-amd64\syncazure.log --log-level=INFO

Rclone tâche planifiée Windows

Une fois que la tâche est configurée, nous pouvons valider : il ne reste plus qu'à attendre la prochaine exécution pour vérifier le bon fonctionnement. Pour l'avoir testé pendant plusieurs semaines, Rclone fonctionne parfaitement et il est stable !

VIII. Monter un répertoire distant en local

Que ce soit sur Windows, Linux ou macOS, un remote configuré dans Rclone peut être monté en local. Le point de montage peut être un sous-répertoire dans un volume ou un nouveau lecteur avec sa propre lettre.

Attention tout de même, sur Windows, il faut installer au préalable WinFsp pour que cette fonctionnalité soit prise en charge. C'est rapide et gratuit. Voici le lien de téléchargement :

WinFsp Windows pour Rclone

Il ne reste plus qu'à utiliser la commande "rclone mount" pour monter le répertoire distant (en indiquant le nom donné au remote) vers un point de montage local. Dans cet exemple, c'est le conteneur "rclone1" du remote "azure-demo" qui est monté directement en tant que "Y:". Ce qui donne :

rclone mount azure-demo:rclone1 Y:

Nous pouvons voir que le lecteur est visible dans l'Explorateur de fichiers Windows et qu'il m'est possible d'accéder au contenu de mon espace de stockage. Ainsi, je peux récupérer ou transférer des données (selon la taille des données, il peut s'avérer nécessaire de tuner un peu WinFsp).

Monter remote Rclone en local sur Windows

Pour aller plus loin, référez-vous à la documentation :

IX. Le chiffrement des données

Rclone est capable de chiffrer et déchiffrer les données à l'aide d'une clé secrète, ce qui sera fortement utile et conseillé sur certains espaces de stockage Cloud, notamment ce que l'on pourrait appeler les Cloud grands publics, mais aussi pour tout simplement sécuriser ses données (en cas de compromission de l'espace distant).

Il faut savoir que Rclone peut chiffrer le nom des fichiers et des dossiers mais aussi le contenu des fichiers. Il s'appuie sur les algorithmes XSalsa20 et Poly1305 et effectue ce travail en local avant d'envoyer les données sur l'espace distant.

Pour ajouter du chiffrement, il faut tout d'abord configurer un remote comme nous l'avons fait pour Azure, puis créer un nouveau remote avec le nom "Encrypt/Decrypt a remote" (nom court associé : crypt) afin de sélectionner le remote sur lequel on veut ajouter une couche de chiffrement.

Rclone crypt

Au final, ceci donnera lieu à un nouveau remote sur votre instance Rclone mais il aura le chiffrement activé à la différence du premier remote déclaré.

Pour le tester, vous pouvez copier un fichier local vers le nouveau remote avec le chiffrement actif :

rclone copy fichier.jpg azure-demo-crypt:

Le fichier "fichier.jpg" envoyé sur le conteneur Azure est bien chiffré. Il apparaît avec un nom différent et son contenu est illisible car chiffré : le fait de télécharger le fichier et de lui remettre la bonne extension ne permet pas de lire son contenu.

Fichier chiffré avec Rclone dans Azure

Par contre, si le contenu du conteneur est affiché à partir de Rclone, le nom apparaît en clair.

Pour en savoir plus sur cette fonction, référez-vous à la documentation :

X. Conclusion

Rclone est un outil polyvalent et très complet qui devrait satisfaire les personnes qui manipulent les données entre plusieurs fournisseurs Cloud ou entre une infrastructure on-premise et des espaces distants. C'est un outil à connaître et dans cet article nous avons vu une partie de son potentiel au travers de quelques exemples. N'hésitez pas à l'explorer et à le tester de votre côté.

Au fait, pour ceux qui sont plus à l'aise avec les interfaces graphiques, sachez que Rclone est livré avec une interface d'administration en mode web ! Vous pouvez l'activer à la demande en exécutant cette commande :

rclone rcd --rc-web-gui

Elle intègre un tableau de bord, permet de visualiser la configuration de Rclone et de gérer vos remotes.

Rclone GUI

author avatar
Florian BURNEL Co-founder
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

2 commentaires sur “Rclone, un outil gratuit pour synchroniser vos données dans le Cloud

  • Bonjour Florian,

    Vraiment, merci pour tous tes tutos, c’est vraiment super.
    J’ai une question, aurais-tu un tuto pour récupérer les données d’une seedbox vers chez soi ?

    Merci part avance

    Répondre

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 comment les données de vos commentaires sont utilisées.