{{tag>synchronisation réseau internet cloud sauvegarde}}
{{ :logo:rclone.png?120|Logo de Rclone}}
====== Rclone ======
**[[wp>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 [[gestionnaire de fichiers|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"(([[https://github.com/rclone/rclone|GitHub]] : //rsync for cloud storage//))) : 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 [[:analyseur_usage_espace_disque#en_mode_terminal|ncdu]].
C'est un outil en [[:commande_shell|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 [[:Samba|CIFS ou SMB]]).
R**CLONE** 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 [[https://github.com/rclone/rclone#storage-providers|liste desquels]] on peut citer :
* les systèmes de fichiers locaux
* [[:Samba|SMB / CIFS]] (partages locaux, Windows, Linux ou MacOS)
* [[:WebDAV]]
* [[:ssh#monter_un_repertoire_distant_navigation_via_sftp_secure_file_transfer_protocol|SFTP]] ([[:SSH]])
* [[:FTP]]
* [[wpfr>HTTP]]
* [[:Nextcloud]], [[:ownCloud]]
* [[https://www.seafile.com|Seafile]]
* 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.
R**CLONE** permet aussi à l'aide de [[:FUSE]] de monter ces espaces de stockage en système de fichier.
Ni R**CLONE**, 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 [[https://forum.ubunut-fr.org|forum]] si besoin !
===== Installation =====
R**CLONE** est disponible dans les [[:depots#dépôts officiels]] d'Ubuntu.\\
Pour l'installer il suffit donc d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>rclone]].**
R**CLONE** est aussi disponible en [[:Snap]] depuis [[https://snapcraft.io/rclone|Snapcraft]].
===== Configuration =====
On peut configurer R**CLONE** 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.
* Si vous utilisez [[:Nextcloud]] ou [[:ownCloud]], choisissez //WebDAV// dans un premier temps.((au sujet de [[:Nextcloud]], voir [[https://forum.ubuntu-fr.org/viewtopic.php?pid=22733253#p22733253|ce message]] sur le forum))
* En fonction du choix précédent vous devrez entrer des informations de connexion.
* Si vous utilisez [[:Nextcloud]] ou [[:ownCloud]] prennez soin d'indiquer [[:nextcloud#fichiers|l'adresse WebDAV correcte]].
* 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'[[:tutoriel:comment_modifier_un_fichier|é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.
Mettez un espace avant '' rclone obscure'' afin d’éviter d’enregistrer votre mot de passe en clair dans l’[[:bash#bash_history|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 [[:tutoriel:console_commandes_de_base#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]].
R**CLONE** permet de réaliser toutes sortes d'opérations (''rclone du'', ''rclone ncdu'', ''rclone dedupe'', etc.), dont le [[#montage]] et la [[#Copie / synchronisation|synchronisation]].
==== Copie / synchronisation ====
En ligne de commande, R**CLONE** s'utilise un peu comme [[:rsync]] avec la commande ''rclone sync'' :
rclone sync --update --progress [source] [destination]
Chaque ''[source]'' ou ''[destination]'' peut être un [[:chemins|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)//** [[https://rclone.org/docs/|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 R**CLONE** avec [[:systemd]], [[:autofs]], ou [[:mount_fstab|fstab]].
Pour cela il faut créer des [[:lien_physique_et_symbolique|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 [[https://github.com/rclone/rclone/wiki/rclone-mount-helper-script|documentation en anglais]] à ce sujet.
Pour monter automatiquement un volume, [[:mount_fstab|fstab]] est la méthode généralement recommandée pour les humains, [[:systemd]] pour les scripts et les outils.(([[wpfr>Stack_Exchange_Network|Unix & Linux on StackExchange]] : //[[https://unix.stackexchange.com/a/427286/324673|Is there any reason to move away from fstab on a systemd system?]]//))
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 ==
[[:tutoriel:comment_modifier_un_fichier|Éditez le fichier]] ''/etc/fstab'' avec les [[:sudo|droits d'administration]] afin de lui ajouter la ligne suivante :
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 ==
[[:tutoriel:comment_modifier_un_fichier|Créez un fichier]] ''/etc/systemd/system/network-online.service'' avec les [[:sudo|droits d'administration]], contenant((Cette documentation se base sur [[https://blog.agchapman.com/auto-mounting-network-file-systems-with-systemd/|cet article]] et sur la [[https://github.com/rclone/rclone/wiki/rclone-mount-helper-script|documentation officielle]].)) :
[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 [[:sudo|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'' :
[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 R**CLONE** comme [[:serveur]], pour mettre à disposition le stockage de différentes manières.((**(//en//)** [[https://rclone.org/commands/rclone_serve/|documentation rclone serve]]))
Il est ainsi possible de monter facilement un serveur web (HTTP), [[:WebDAV]], [[:DLNA]], [[:ssh#monter_un_repertoire_distant_navigation_via_sftp_secure_file_transfer_protocol|SFTP]], [[:FTP]], [[:docker#manipulation_de_volumes|volume docker]] et [[https://rclone.org/commands/rclone_serve/#see-also|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 R**CLONE** graphiquement :
* [[https://kapitainsky.github.io/RcloneBrowser/|Rclone Browser]] est disponible dans les [[:depots#sections_universe_et_multiverse_maintenues_par_les_motu|dépôts universe]] d'Ubuntu. Vous pouvez donc [[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>rclone-browser]].**
* R**CLONE** 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
===== Voir aussi =====
* **//(en)//** [[https://rclone.org|site officiel]]
* [[https://github.com/rclone/rclone|sources sur GitHub]]
* Tutoriel : [[:tutoriel:monter_un_cloud|Monter un cloud comme disque local avec rclone]]
----
//Contributeur : [[:utilisateurs:krodelabestiole]]//