Rclone
Rclone est un logiciel libre qui permet initialement de synchroniser des répertoires et des fichiers sur de nombreuses plateformes de stockage différentes. Il dispose maintenant de très nombreuses fonctionnalités de gestion de fichiers 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.
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ère 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 CIFS ou SMB).
RCLONE est extrêmement performant dans toutes ces situations sans nécessiter d'optimisations particulières (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 :
- les systèmes de fichiers locaux
- SMB / CIFS (partages locaux, Windows, Linux ou MacOS)
- OVH
- Synology C2 Object Storage
- Google Drive, Google Cloud Storage, Google Photos
- Amazon S3
- Microsoft OneDrive
- OpenStack Swift
- Oracle Cloud Storage
- Dropbox
- Proton Drive
- Box
- Cloudflare R2
- Internet Archive
- put.io
- Mega
- etc.
RCLONE permet aussi à l'aide de FUSE de monter ces espaces de stockage en système de fichier.
Installation
RCLONE est disponible dans les dépôts officiels d'Ubuntu.
Pour l'installer il suffit donc d'installer le paquet rclone.
Configuration
On peut configurer RCLONE avec un outil interactif en ligne de commande.
Entrez la commande suivante dans un terminal :
rclone config
Une suite de question vous sera posée en anglais.
- Dans un premier temps tapez
n
pour New remote (nouveau stockage distant). - Entrez un identifiant au choix pour ce stockage, par ex.
monServeur
. Évitez les espaces et les caractères spéciaux (accents, etc.) ! - Une liste impressionnante de protocoles / prestataire vous est proposée dans l'ordre alphabétique. Choisissez celui que vous utilisez en tapant son numéro.
- En fonction du choix précédent vous devrez entrer des informations de connexion.
- Pas besoin d'éditer de configuration avancée : Edit advanced config? → tapez
n
(ou simplement Entrée). y
ou Entrée pour valider la configuration.- Puis
q
pour quitter.
Le fichier de configuration ~/.config/rclone/rclone.conf
sera ainsi créé. Vous pouvez si besoin l'éditer :
- rclone.conf
[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 !
Test
Ces commandes peuvent être utiles pour tester votre configuration :
rclone listremotes
permet de lister les stockages distants configurés.- Vous pouvez adapter la commande
rclone about monServeur:
pour obtenir des informations sur le service (espace disponible). Ceci permet aussi de confirmer que votre service est bien configuré. rclone ls monServeur:
permet de lister les fichiers et répertoires du stockage distant (comme avec la commande ls).- L'option
–dry-run
permet d'afficher le retour d'une commande sans l'exécuter effectivement. rclone check
affiche également la différence d'état entre les fichiers locaux et distants.
Utilisation
On peut afficher la liste des commandes disponibles en tapant simplement rclone
dans un terminal.
RCLONE permet de réaliser toutes sortes d'opérations (rclone du
, rclone ncdu
, rclone dedupe
, etc.), dont le montage et la synchronisation.
Copie / synchronisation
En ligne de commande, RCLONE s'utilise un peu comme rsync avec la commande rclone sync
:
rclone sync --update --progress [source] [destination]
Chaque [source]
ou [destination]
peut être un chemin local ou distant.
Les chemins distants seront de la forme [service]:[chemin]
, [service]
étant le nom du service choisi lors de la configuration.
Par exemple : monServeur:/chemin/absolu
ou monServeur:chemin/relatif
.
–dry-run
:
rclone sync --update --progress --dry-run [source] [destination]
Voir aussi (en) le guide d'utilisation, avec des instructions détaillées pour chaque fournisseur.
Montage
On peut monter un espace 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.
Montage automatique
Il est possible d'utiliser RCLONE avec systemd, autofs, 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.3)
Voici 2 méthodes qui permettent d'arriver au même résultat : nous allons monter le stockage distant monServeur
dans le répertoire /media/monserveur
. Ne suivez que l'une des 2 méthodes :
fstab
Éditez le fichier /etc/fstab
avec les droits d'administration afin de lui ajouter la ligne suivante :
- /etc/fstab
monServeur: /media/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'utilisateurs à 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 /media/monserveur
Systemd
Créez un fichier /etc/systemd/system/network-online.service
avec les droits d'administration, contenant4) :
- network-online.service
[Unit] Description=Wait until NM actually online Requires=NetworkManager-wait-online.service After=NetworkManager-wait-online.service [Service] Type=oneshot ExecStart=/usr/bin/nm-online -q --timeout=120 RemainAfterExit=yes [Install] WantedBy=multi-user.target
Ce fichier sert à s'assurer que le réseau est disponible avant de monter l'espace de stockage distant.
Toujours avec les droits d'administration, créez ensuite un autre fichier dans le répertoire /etc/systemd/system/
qui aura le nom du chemin dans lequel vous voulez monter le stockage, avec l'extension .mount
. Par ex. pour /media/monserveur
le fichier sera /etc/systemd/system/media-monserveur.mount
:
- media-monserveur.mount
[Unit] Description=Monte monServeur Requires=network-online.service After=network-online.service [Mount] Type=rclone What=monServeur: Where=/media/monserveur Options=rw,allow_other,args2env,vfs-cache-mode=writes,config=/etc/rclone.conf,cache-dir=/var/rclone TimeoutSec=10 [Install] WantedBy=multi-user.target
En remplaçant partout monserveur
et monServeur
par ce que vous aurez choisi.
Activez ensuite ces modifications avec ces commandes :
sudo systemctl daemon-reload sudo systemctl enable network-online sudo systemctl enable media-monserveur.mount
puis redémarrez.
Vous pouvez aussi tester le montage avec :
sudo systemctl start media-monserveur.mount
Serveur
La commande rclone serve
permet d'utiliser RCLONE comme serveur, pour mettre à disposition le stockage de différentes manières.5)
Il est ainsi possible de monter facilement un serveur web (HTTP), WebDAV, DLNA, SFTP, FTP, volume docker et quelques autres protocoles. Cela permet de convertir un stockage distant d'un certain type (par ex. un service propriétaire plus ou moins cryptique) à un autre (un protocole ouvert largement répandu) !
Interface graphique
Il est aussi possible d'utiliser RCLONE graphiquement :
- Rclone Browser est disponible dans les dépôts universe d'Ubuntu. Vous pouvez donc installer le paquet rclone-browser.
- RCLONE propose lui-même une interface web. Vous pouvez la lancer et l'ouvrir dans votre navigateur avec la commande :
rclone rcd --rc-web-gui