Logo de Rclone

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.

Ni RCLONE, ni Rclone Browser ne sont malheureusement traduits en français pour le moment. Il est donc compliqué de les utiliser sans maîtriser un minimum la langue de John Cleese. N'hésitez pas à demander de l'aide sur le forum si besoin !

RCLONE est disponible dans les dépôts officiels d'Ubuntu.
Pour l'installer il suffit donc d'installer le paquet rclone.

RCLONE est aussi disponible en Snap depuis Snapcraft.

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.

Mettez un espace avant rclone obscure afin d’éviter d’enregistrer votre mot de passe en clair dans l’historique bash !

Test

Ces commandes peuvent être utile 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 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).

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.

Dans un premier temps vous pouvez tester votre commande sans danger et sans toucher à aucun fichiers avec l'option –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) !

Il est aussi possible d'utiliser RCLONE graphiquement :


  • rclone.txt
  • Dernière modification: Le 04/03/2024, 13:19
  • par krodelabestiole