Aller au contenu
Cloud medium

Rclone : synchroniser et sauvegarder vos données cloud (S3, Drive, Dropbox)

17 min de lecture

logo rclone

Rclone copie, synchronise et sauvegarde vos fichiers entre votre machine et plus de 70 services cloud (Google Drive, Dropbox, Amazon S3, MinIO...) ou entre deux clouds directement. C'est l'équivalent de rsync pour le cloud, en ligne de commande.

Avec rclone, vous pouvez :

  • Synchroniser un dossier local vers un bucket S3 ou Google Drive
  • Sauvegarder automatiquement vos données avec chiffrement
  • Migrer des fichiers entre deux providers cloud sans téléchargement local
  • Monter un stockage cloud comme un disque local

Rclone est distribué sous forme d'un binaire unique, sans dépendance à installer. Sur Linux, la méthode ci-dessous télécharge l'archive officielle, vérifie son empreinte avec le fichier de sommes publié par le projet, puis copie le binaire dans /usr/local/bin. Cette vérification est ce qui garantit que l'archive n'a pas été altérée entre le serveur de téléchargement et votre machine.

Téléchargez l'archive et le fichier SHA256SUMS de la version voulue, puis contrôlez l'empreinte avant d'extraire quoi que ce soit :

Fenêtre de terminal
RCLONE_VERSION=v1.72.1
curl -fsSLO "https://downloads.rclone.org/${RCLONE_VERSION}/rclone-${RCLONE_VERSION}-linux-amd64.zip"
curl -fsSLO "https://downloads.rclone.org/${RCLONE_VERSION}/SHA256SUMS"
# Doit afficher : rclone-v1.72.1-linux-amd64.zip: OK
grep "rclone-${RCLONE_VERSION}-linux-amd64.zip" SHA256SUMS | sha256sum --check

Si la vérification échoue, arrêtez-vous : ne décompressez pas l'archive. Sinon, installez le binaire :

Fenêtre de terminal
unzip -q "rclone-${RCLONE_VERSION}-linux-amd64.zip"
sudo install -m 0755 "rclone-${RCLONE_VERSION}-linux-amd64/rclone" /usr/local/bin/rclone

Ou via le gestionnaire de paquets (version potentiellement plus ancienne) :

Fenêtre de terminal
# Debian/Ubuntu
sudo apt install rclone
# Fedora
sudo dnf install rclone
# Arch Linux
sudo pacman -S rclone

Vérifiez l'installation :

Fenêtre de terminal
rclone version
Sortie attendue
rclone v1.72.1
- os/version: ubuntu 24.04 (64 bit)
- os/kernel: 6.8.0-90-generic (x86_64)
- os/type: linux
- os/arch: amd64
- go/version: go1.25.5
- go/linking: static
- go/tags: none

Pour tester les commandes de ce guide, déployons rapidement MinIO (stockage S3-compatible) sur minikube. Vous pourrez ensuite remplacer l'endpoint par celui de votre provider (AWS S3, Outscale, Scaleway...).

  1. Démarrez minikube (si ce n'est pas déjà fait) :

    Fenêtre de terminal
    minikube start
  2. Déployez MinIO :

    Fenêtre de terminal
    kubectl create namespace minio
    kubectl run minio --image=minio/minio:latest -n minio \
    --env="MINIO_ROOT_USER=minioadmin" \
    --env="MINIO_ROOT_PASSWORD=minioadmin" \
    -- server /data --console-address ":9001"
  3. Exposez le service :

    Fenêtre de terminal
    kubectl expose pod minio -n minio --port=9000 --target-port=9000 --type=NodePort --name=minio-api
  4. Récupérez l'URL d'accès :

    Fenêtre de terminal
    minikube service minio-api -n minio --url
    Exemple de sortie
    http://192.168.49.2:31019
  5. Configurez rclone avec cet endpoint :

    Fenêtre de terminal
    cat >> ~/.config/rclone/rclone.conf << 'EOF'
    [minio]
    type = s3
    provider = Minio
    access_key_id = minioadmin
    secret_access_key = minioadmin
    endpoint = http://192.168.49.2:31019
    EOF

    Remplacez l'URL par celle obtenue à l'étape précédente.

  6. Testez la connexion :

    Fenêtre de terminal
    rclone lsd minio:

Avant de configurer rclone, comprenez ces deux concepts essentiels.

Un remote est un emplacement de stockage configuré dans rclone. Il peut être :

  • Un service cloud (Google Drive, Dropbox, Amazon S3, MinIO...)
  • Un serveur distant (SFTP, FTP, WebDAV)
  • Un stockage local (pour les tests ou le chiffrement)

Chaque remote a un nom que vous utilisez dans les commandes, suivi de : :

Fenêtre de terminal
rclone ls mondrive: # Liste le contenu du remote "mondrive"
rclone ls minio:mon-bucket # Liste le bucket "mon-bucket" sur le remote "minio"

Toutes les commandes rclone suivent le pattern source → destination :

Fenêtre de terminal
rclone copy /local/dossier remote:bucket/chemin
# ↑ source ↑ destination

Comparaison entre rclone sync (unidirectionnel) et rclone bisync (bidirectionnel)

La configuration se fait via rclone config qui lance un assistant interactif.

  1. Lancez l'assistant :

    Fenêtre de terminal
    rclone config
  2. Créez un nouveau remote en tapant n (new remote)

  3. Donnez-lui un nom (ex: minio, gdrive, dropbox)

  4. Choisissez le type de stockage parmi la liste (ex: s3 pour S3/MinIO, drive pour Google Drive)

  5. Répondez aux questions spécifiques au provider (credentials, région, endpoint...)

  6. Testez la connexion :

    Fenêtre de terminal
    rclone lsd monremote:

Pour un stockage S3-compatible comme MinIO ou Outscale OOS :

Fenêtre de terminal
rclone config
n) New remote
name> minio
Storage> s3
provider> Minio
env_auth> false
access_key_id> VOTRE_ACCESS_KEY
secret_access_key> VOTRE_SECRET_KEY
endpoint> http://minio.example.com:9000

Ou ajoutez directement dans ~/.config/rclone/rclone.conf :

~/.config/rclone/rclone.conf
[minio]
type = s3
provider = Minio
access_key_id = VOTRE_ACCESS_KEY
secret_access_key = VOTRE_SECRET_KEY
endpoint = http://minio.example.com:9000

Pour éviter de stocker les mots de passe en clair, utilisez rclone obscure :

Fenêtre de terminal
rclone obscure "mon-mot-de-passe-secret"
Sortie
bXItbW90LWRlLXBhc3NlLXNlY3JldA==

Ces commandes permettent d'explorer et organiser vos fichiers.

Ces quatre commandes ne renvoient pas la même chose : lsd ne montre que les répertoires (les buckets à la racine d'un remote S3), ls parcourt récursivement les fichiers, lsl ajoute la date de modification, et lsjson produit une sortie exploitable par un script.

Fenêtre de terminal
# Lister les buckets/dossiers racine
rclone lsd minio:
# Lister tous les fichiers (récursif)
rclone ls minio:mon-bucket/
# Lister avec détails (taille, date)
rclone lsl minio:mon-bucket/
# Format JSON pour scripts
rclone lsjson minio:mon-bucket/
Exemple de sortie lsd
-1 2026-01-23 14:39:22 -1 mon-bucket
-1 2026-01-23 15:00:00 -1 backups

Sur un remote S3, rclone mkdir à la racine crée un bucket ; le nom doit donc respecter les règles de nommage du fournisseur. rclone touch crée un objet vide ou met à jour sa date s'il existe déjà.

Fenêtre de terminal
# Créer un bucket/dossier
rclone mkdir minio:nouveau-bucket
# Créer un fichier vide (ou mettre à jour sa date)
rclone touch minio:mon-bucket/nouveau-fichier.txt

rclone size est récursif par défaut : il énumère tous les objets sous le chemin indiqué, ce qui peut prendre plusieurs minutes sur un gros bucket. L'option --max-depth 1 limite le parcours au premier niveau.

Fenêtre de terminal
rclone size minio:mon-bucket/
Sortie
Total objects: 42
Total size: 1.234 GiB (1325432678 Byte)

Ces commandes copient, déplacent ou synchronisent vos fichiers.

rclone copy copie les fichiers sans supprimer ceux qui n'existent plus dans la source.

Fenêtre de terminal
# Copier un dossier local vers le cloud
rclone copy /home/user/documents/ minio:backups/documents/
# Copier entre deux clouds
rclone copy gdrive:photos/ dropbox:photos-backup/
# Copier un fichier avec un nouveau nom
rclone copyto /local/rapport.pdf minio:backups/rapport-2026.pdf

rclone move copie puis supprime les fichiers source après transfert réussi.

Fenêtre de terminal
# Archiver des logs vers S3 (supprime les locaux)
rclone move /var/log/archive/ minio:logs-archive/
# Déplacer entre clouds
rclone move dropbox:old-project/ gdrive:archives/old-project/

rclone sync rend la destination identique à la source. Les fichiers absents de la source sont supprimés de la destination.

Fenêtre de terminal
# Synchroniser local → cloud
rclone sync /home/user/projets/ minio:projets-backup/

Pour conserver les fichiers supprimés dans un dossier de sauvegarde :

Fenêtre de terminal
rclone sync /source/ minio:dest/ --backup-dir minio:dest-deleted/

sync impose la source à la destination ; bisync reporte les modifications dans les deux sens en s'appuyant sur un état de référence conservé localement entre deux exécutions. C'est ce qui lui permet de distinguer un fichier ajouté d'un fichier supprimé, et c'est aussi pourquoi la toute première exécution exige une initialisation explicite.

Contrairement à sync (unidirectionnel), bisync propage les modifications des deux côtés :

Fenêtre de terminal
# Première exécution : initialisation obligatoire
rclone bisync /local/dossier/ minio:bucket/ --resync
# Exécutions suivantes : sync bidirectionnel
rclone bisync /local/dossier/ minio:bucket/

Cas d'usage : synchroniser un dossier de travail entre votre laptop et le cloud, pour y accéder depuis plusieurs machines.

Si le même fichier est modifié des deux côtés entre deux bisync :

Fenêtre de terminal
# Résolution automatique : garder le plus récent
rclone bisync /local/ remote:/ --conflict-resolve newer
# Ou renommer les conflits
rclone bisync /local/ remote:/ --conflict-resolve rename

Une sauvegarde n'a de valeur que si elle est vérifiée, et un stockage objet ne se vide pas tout seul. Ces commandes couvrent les deux besoins : contrôler que la copie correspond bien à la source, et supprimer ce qui n'a plus lieu d'être. Les suppressions sont définitives sur la plupart des remotes.

rclone check compare les fichiers entre deux emplacements (taille et hash) :

Fenêtre de terminal
rclone check /local/dossier/ minio:bucket/
Sortie
2026/01/23 14:41:02 NOTICE: S3 bucket mon-bucket: 0 differences found
2026/01/23 14:41:02 NOTICE: S3 bucket mon-bucket: 42 matching files

Les trois commandes ne portent pas sur le même périmètre : delete retire les fichiers mais laisse l'arborescence en place et respecte les filtres, purge efface le répertoire et tout son contenu sans tenir compte des filtres, et rmdirs ne s'occupe que des répertoires vides.

Fenêtre de terminal
# Supprimer les fichiers (garde les dossiers vides)
rclone delete minio:bucket/old-data/
# Supprimer un dossier et tout son contenu
rclone purge minio:bucket/old-data/
# Supprimer uniquement les dossiers vides
rclone rmdirs minio:bucket/

Contrôlez précisément quels fichiers sont traités avec les filtres.

Point à connaître avant d'écrire votre première règle : dès qu'un --include est présent, rclone ajoute implicitement une exclusion de tout le reste. Un --include "*.jpg" seul ne copie donc que les fichiers .jpg, même sans --exclude.

Fenêtre de terminal
# Copier uniquement les images
rclone copy /photos/ minio:photos/ --include "*.jpg" --include "*.png"
# Exclure les fichiers temporaires
rclone sync /projet/ minio:projet/ --exclude "*.tmp" --exclude ".git/**"
# Combiner inclusion et exclusion
rclone copy /data/ minio:data/ --include "*.log" --exclude "*"

Pour des règles complexes, utilisez un fichier :

filters.txt
# Inclure les documents
+ *.pdf
+ *.docx
+ /important/**
# Exclure le reste
- *.tmp
- .git/**
- node_modules/**
- *
Fenêtre de terminal
rclone sync /projet/ minio:backup/ --filter-from filters.txt

Toujours tester vos filtres avant exécution :

Fenêtre de terminal
rclone sync /source/ remote:dest/ --filter-from filters.txt --dry-run -v

Au-delà du transfert de fichiers, rclone sait exposer un remote comme un système de fichiers local ou comme un serveur. Ces deux modes transforment un stockage objet distant en ressource utilisable par des applications qui ne connaissent rien à S3, au prix d'une latence et de limites qu'il vaut mieux connaître avant de les mettre en production.

Le montage passe par FUSE et reste actif tant que le processus tourne : --daemon le détache du terminal. Sans --vfs-cache-mode, les écritures en accès aléatoire échouent, car un objet distant ne se modifie pas en place.

Fenêtre de terminal
# Monter Google Drive sur /mnt/gdrive
rclone mount gdrive: /mnt/gdrive --daemon
# Avec cache pour de meilleures performances
rclone mount gdrive: /mnt/gdrive --vfs-cache-mode full --daemon

Ces serveurs écoutent par défaut sur 127.0.0.1:8080 et n'exigent aucune authentification. Écrire --addr :8080 comme ci-dessous les rend accessibles depuis tout le réseau : n'ajoutez cette option qu'accompagnée de --user et --pass, ou d'un fichier --htpasswd.

Fenêtre de terminal
# Serveur HTTP simple
rclone serve http minio:bucket/ --addr :8080
# Serveur WebDAV
rclone serve webdav minio:bucket/ --addr :8080
  • Remote = stockage configuré : un remote est un alias vers un service cloud. Utilisez remote:chemin dans toutes les commandes.
  • sync ≠ copy : copy ajoute des fichiers, sync rend la destination identique (supprime les extras), bisync synchronise dans les deux sens.
  • --dry-run toujours : avant tout sync ou delete, prévisualisez avec --dry-run pour éviter les mauvaises surprises.
  • Filtres puissants : utilisez --include, --exclude et --filter-from pour cibler précisément les fichiers.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn