Rclone est un logiciel libre qui permet de synchroniser des répertoires et des fichiers sur de nombreuses plateformes de stockage différentes. Il dispose en plus de nombreuses fonctionnalités de gestion de fichiers à distance sur de très nombreuses plateformes cloud.
Initialement il offre un fonctionnement similaire à rsync (il se présente lui-même comme "rsync, pour le stockage cloud"1)) : il rend la source et la destination identiques en ne modifiant que la destination.
Désormais il propose aussi de monter tous types de stockages distants en système de fichier, implémente différentes méthodes de synchronisation bidirectionnelle, et fournit ses propres implémentations optimisées d'outils comme ncdu.
C'est un outil en ligne de commande, mais il existe des interfaces graphiques et il inclut lui-même une interface web.
Grand frère de RCLONE, rsync est très largement utilisé sur Linux pour la copie et synchronisation de fichiers, que ce soit localement ou via le protocole SSH.
Il montre cependant ses limites lorsqu'il s'agit de copier du contenu sur des services tiers ou certains protocoles comme le WebDAV. Les fonctions ne sont pas implémentées ou s'avèrent extrêmement peu performantes combinées à l'utilisation de FUSE (pour "faire croire" à rsync qu'il s'agit d'un montage local, comme par exemple davfs2 pour accéder à un serveur WebDAV, ou fusesmb pour les partages SMB).
RCLONE est extrêmement performant dans toutes ces situations sans nécessiter d'optimisation particulière (en WebDAV on peut s'attendre à multiplier les vitesses de transferts de rsync ou de certains clients par 50 !).
Il prend en charge une quantité sidérante de protocoles et de fournisseurs de services cloud, dans la liste desquels on peut citer :
RCLONE permet aussi à l'aide de FUSE de monter ces espaces de stockage en système de fichier.
Pour l'installer vous avez donc le choix entre l'une de ces méthodes :
RCLONE est disponible dans les dépôts officiels d'Ubuntu.
Pour l'obtenir il suffit donc d'installer le paquet rclone.
RCLONE est aussi distribué par ses développeurs sur GitHub.
Pour l'installer on peut donc simplement extraire le fichier zip correspondant, et placer le fichier rclone en ajustant ses permissions pour le rendre exécutable, soit dans le répertoire des binaires personnels ~/.local/bin/, soit avec les droits d'administrateur dans le répertoire /usr/local/bin/.
Cette dernière méthode en lignes de commande :
wget https://github.com/rclone/rclone/releases/download/v1.74.1/rclone-v1.74.1-linux-amd64.zip unzip rclone-v1.74.1-linux-amd64.zip sudo cp rclone-v1.74.1-linux-amd64/rclone /usr/local/bin/ sudo chmod +x /usr/local/bin/rclone sudo rclone self-update rm -rf rclone-v1.74.1-linux-amd64 rclone-v1.74.1-linux-amd64.zip
(Installez les paquets wget et zip si nécessaire.)
RCLONE est disponible en Snap depuis Snapcraft. Cette distribution n'est cependant pas officielle. Cette méthode n'est donc pas recommandée.
On peut l'installer sur Ubuntu simplement en installant rclone depuis le centre d'applications (Snap Store), ou en installant le paquet rclone en ligne de commande :
snap install rclone
Une fois installé, on peut mettre à jour le logiciel à sa dernière version stable très simplement grâce à la commande selfupdate :
sudo rclone selfupdate
rclone rcd --rc-web-gui
Les paramètres et le fichier dans lequel ils sont enregistrés restent les mêmes (bien qu'il s'agisse d'une interface web, elle concerne par défaut bien l'application locale).
Toutefois cette interface n'existe pour le moment qu'en version anglaise.
La configuration de RCLONE se fait par défaut via le fichier ~/.config/rclone/rclone.conf, avec une entrée (un paragraphe) pour chaque "remote" (il s'agit à chaque fois d'un espace de stockage distant). Le nom de l'entrée est entre crochets [], suivi des différents paramètres permettant de se connecter au service distant.
RCLONE dispose en plus d'un assistant interactif en ligne de commande, qui permet de créer facilement ces entrées dans le fichier de configuration. C'est probablement le plus pratique pour commencer.
Entrez la commande suivante dans un terminal :
rclone config
Une suite de question vous sera posée en anglais.
n pour New remote (nouveau stockage distant).monServeur. Évitez les espaces et les caractères spéciaux (accents, etc.) !n (ou simplement Entrée).y ou Entrée pour valider la configuration.q pour quitter.
Le fichier de configuration ~/.config/rclone/rclone.conf sera ainsi créé. Vous pouvez si besoin l'éditer :
[monServeur] type = webdav url = https://example.com vendor = other user = votreNom pass = motDePasseChiffré
La commande rclone obscure suivie de votre mot de passe permet de chiffrer les mots de passe afin de les utiliser dans ce fichier.
rclone obscure afin d’éviter d’enregistrer votre mot de passe en clair dans l’historique bash !
[nextcloud] type = webdav url = https://nextcloud.exemple.com/remote.php/dav/files/utilisateur vendor = nextcloud user = utilisateur pass = **************** [serveur-sftp] type = sftp host = ftp.exemple.com user = utilisateur shell_type = unix md5sum_command = md5sum sha1sum_command = sha1sum [freebox-smb] type = smb host = freebox-server.local user = guest [freebox-ftpes] type = ftp host = exemple.freeboxos.fr user = freebox port = 1234 pass = **************** explicit_tls = true [kDrive] type = webdav url = https://123456.connect.kdrive.infomaniak.com vendor = Infomaniak user = utilisateur@exemple.com pass = **************** [put.io] type = putio token = {"access_token":"****************","expiry":"0001-01-01T00:00:00Z"} [gdrive] type = drive client_id = 123456-abcdef123456.apps.googleusercontent.com client_secret = XXXXXXXXXXXXXXXX token = {"access_token":"XXXXXXXXXXXXXXXX","token_type":"Bearer","refresh_token":"XXXXXXXXXXXXXXXX","expiry":"0001-01-01T00:00:00.00+02:00"} scope = drive
Ces exemples sont évidemment à ajuster, en fonction des services auxquels on souhaite se connecter :
utilisateur correspond à un identifiant ou nom d'utilisateur.exemple.com correspond à un nom de domaine.1234 ou 123456 correspondent à des numéros de port, ou des identifiants uniques.XXXXXXXXXXXXXXXX correspond à une clé unique.**************** correspond à un mot de passe chiffré au moyen de la commande rclone obscure.gdrive dans ces exemples) l'opération est complexe.
Il faut créer un accès à l'API correspondante4) et soigneusement noter (dans un gestionnaire de mots de passe) :
ID clientCode secret associé.
Il vaut sans doute mieux renseigner ces informations avec la commande rclone config (plutôt qu'éditer directement le fichier de configuration), car RCLONE doit encore ouvrir une page du navigateur afin d'autoriser sa connexion chez Google et de générer le token.
Sinon pour cette dernière opération on peut aussi utiliser la commande :
rclone config reconnect gdrive:
La connexion aux autres services est beaucoup plus simple à configurer. N'hésitez donc pas à opter pour un service cloud respectueux de votre vie privée (et de celle de vos correspondants) !
Ces commandes peuvent être utiles pour tester votre configuration :
rclone listremotes permet de lister les stockages distants configurés.rclone about monServeur: pour obtenir des informations sur le service (espace disponible). Ceci permet aussi de confirmer que votre service est bien configuré.--dry-run permet d'afficher le retour d'une commande sans l'exécuter effectivement.Il est désormais possible d'utiliser RCLONE au moyen d'une interface graphique, ou depuis un autre logiciel (comme Déjà Dup ou Restic par ex.), mais il est initialement pensé pour être utilisé en ligne de commande.
Depuis un terminal, RCLONE s'utilise avec la commande rclone suivie d'une sous-commande correspondant à une opération (ou action), elle-même souvent suivie de paramètres, à commencer généralement par l'identifiant du stockage distant (remote en anglais), en l'occurrence monServeur: pour l'exemple de cette documentation.
On peut afficher la liste des (sous-)commandes disponibles en tapant simplement rclone dans un terminal.
RCLONE permet de réaliser toutes sortes d'opérations de gestion de fichiers, d'analyse, de services, dont le montage et la synchronisation.
RCLONE peut s'utiliser un peu comme rsync avec la commande rclone sync :
rclone sync --update --progress [source] [destination]
--update sert à ne pas écraser les fichiers plus récents sur la destination, et --progress à afficher la progression.--update peut être abrégé en -u, et --progress en -P. On peut donc simplifier la commande en : rclone sync -uP [source] [destination]
Les chemins distants sont de la forme [service]:[chemin], [service] étant l'identifiant du service de stockage choisi lors de la configuration.
Par exemple : monServeur:/chemin/absolu ou monServeur:chemin/relatif.
--dry-run :
rclone sync --update --progress --dry-run [source] [destination]
rclone copy.rclone check affiche la différence d'état entre les fichiers locaux et distants.rclone bisync permet de synchroniser dans les deux sens.rclone about permet d'afficher l'espace total, utilisé et disponible sur le stockage distant.rclone du et rclone ncdu reproduisent les fonctionnalités de du et ncdu afin d'afficher l'espace qu'occupent les répertoires.rclone tree permet d'afficher arborescence du contenu distant.rclone check affiche la différence d'état entre les fichiers locaux et distants.
On peut monter un espace distant en système de fichier avec la commande rclone mount :
rclone mount [service]:[distant] [local]
On peut démonter le volume avec la commande umount de GNU.
Il est possible d'utiliser RCLONE avec systemd ou fstab.
Pour cela il faut créer des liens symboliques avec les commandes suivantes :
sudo ln -s /usr/bin/rclone /sbin/mount.rclone sudo ln -s /usr/bin/rclone /usr/bin/rclonefs
(Ils ne sont malheureusement pas présents dans le paquet des dépôts officiels.)
Vous pouvez consultez la documentation en anglais à ce sujet.
Pour monter automatiquement un volume, fstab est la méthode généralement recommandée pour les humains, systemd pour les scripts et les outils.5)
Voici 2 méthodes qui permettent d'arriver au même résultat : nous allons monter le stockage distant monServeur dans le répertoire /mnt/monserveur. Ne suivez que l'une des 2 méthodes :
Éditez le fichier /etc/fstab avec les permissions administrateur afin de lui ajouter la ligne suivante :
monServeur: /mnt/monserveur rclone rw,user,umask=000,noauto,nofail,_netdev,x-systemd.automount,args2env,vfs_cache_mode=writes,config=/etc/rclone.conf,cache_dir=/var/cache/rclone,allow_other,uid=1000,gid=1000 0 0
Modifiez éventuellement uid=1000,gid=1000 pour les remplacer par les identifiants de l'utilisateur à qui doit appartenir les fichiers (tapez simplement la commande id pour les connaître).
Attention aussi à l'emplacement du fichier rlcone.conf : ici /etc/rclone.conf (on peut éventuellement déplacer ce fichier où on en a envie).
Rechargez ensuite systemd :
sudo systemctl daemon-reload
Vous pouvez dès lors monter le volume :
sudo mount /mnt/monserveur
Avec les permissions administrateur, créez un fichier dans le répertoire /etc/systemd/system/ qui aura le nom du chemin dans lequel vous voulez monter le stockage, en remplaçant les slashes / par des tirets -, et avec l'extension .mount. Par ex. pour /mnt/monserveur le fichier sera /etc/systemd/system/mnt-monserveur.mount.6)
Il doit contenir :
[Unit] Description=Montage de /mnt/monserveur [Mount] Type=rclone What=monServeur: Where=/mnt/monserveur Options=rw,_netdev,allow_other,args2env,vfs-cache-mode=writes,config=/etc/rclone.conf,cache-dir=/var/rclone
Pour un montage automatique, toujours avec les permissions administrateur, créez ensuite un fichier avec le même nom mais l'extension .automount :
[Unit] Description=Montage automatique de /mnt/monserveur [Automount] Where=/mnt/monserveur TimeoutIdleSec=600 [Install] WantedBy=multi-user.target
En remplaçant partout monserveur et monServeur par l'identifiant vous aurez choisi.
Activez ensuite ces modifications avec ces commandes :
sudo systemctl daemon-reload sudo systemctl enable network-online sudo systemctl enable mnt-monserveur.mount
puis redémarrez.
Vous pouvez aussi tester le montage avec :
sudo systemctl start mnt-monserveur.mount
rclone serve permet d'utiliser RCLONE comme serveur, pour mettre à disposition le stockage de différentes manières.rclone link permet de générer un lien public pour partager un fichier ou un répertoire.Il est aussi possible d'utiliser RCLONE graphiquement :
rclone rcd --rc-web-gui
Il arrive que la commande :
rclone selfupdate
retourne une erreur du type :
Error: failed to update rclone: invalid hashsum signature
Ceci est dû à un changement de bibliothèque récent.7)
La solution est de mettre à jour RCLONE manuellement.
Vous pouvez télécharger sur GitHub la dernière version du paquet deb qui correspond à votre système (généralement linux-amd64.deb), et l'installer, avec par exemple gdebi, ou en ligne de commande avec dpkg :
sudo dpkg -i ~/Téléchargements/rclone-*-linux-amd64.deb