OneDrive sous Ubuntu : exclure un dossier et activer la synchronisation continue (skip_dir, sync_list, systemd)

Besoin de garder OneDrive et Ubuntu synchronisés sans récupérer un sous‑dossier lourd (ex. Documents/Videos) et sans relancer la commande à la main ? Voici deux méthodes solides et un mode « surveillance » pour une synchro continue et fiable.

Sommaire

Vue d’ensemble

Le client libre onedrive (projet communautaire) sait :

  • Exclure un dossier avec un filtre côté client (via skip_dir ou sync_list).
  • Fonctionner en mode continu grâce à --monitor et un service systemd utilisateur.
  • Recalculer proprement son état de synchronisation via --resync après toute modification de règles.

Prérequis

  • Ubuntu 20.04+ (fonctionne aussi sur 22.04/24.04).
  • Paquet onedrive installé.
  • Un compte OneDrive (Personnel ou Entreprise/Éducation).

Installer le client

sudo apt update
sudo apt install onedrive

Au premier lancement, le client demande d’ouvrir une URL d’autorisation Microsoft, puis de coller le jeton fourni :

onedrive
# 1) Copiez/ouvrez l'URL affichée dans un navigateur
# 2) Connectez-vous et autorisez
# 3) Copiez le code/URL de retour, collez dans le terminal

Répertoires et fichiers de configuration

  • Répertoire de configuration : ~/.config/onedrive/
  • Fichier principal : ~/.config/onedrive/config (créé au premier run si absent)
  • Liste de synchro (optionnelle) : ~/.config/onedrive/sync_list

Vérifiez en un clin d’œil la config effective :

onedrive --display-config

Méthode A — Exclure un dossier avec skip_dir (simple et rapide)

Idéal si vous voulez juste ignorer un ou quelques sous‑dossiers par nom ou motif.

Étapes

  1. Éditez le fichier de configuration utilisateur :
    ~/.config/onedrive/config
  2. Ajoutez (ou adaptez) ces lignes :
skip_dir = "Documents/Videos"
skip_dir_strict_match = "true"
  • skip_dir : liste de motifs de dossiers à ignorer. Plusieurs motifs ? Séparez‑les par | (barre verticale).
  • skip_dir_strict_match : évite les exclusions accidentelles d’autres dossiers nommés Videos ailleurs.

Exemples de motifs utiles

skip_dir = "Documents/Videos|node_modules|.cache"
skip_dir_strict_match = "true"
  • Les motifs sont insensibles à la casse (pratique sous Linux/OneDrive).
  • Globs acceptés : * et ?, par exemple "**/node_modules" ou "*/Temp".

Relancer la synchro après changement de filtres

Après toute modification de config, forcez un recalcul d’état :

onedrive --resync --sync
# ...ou selon votre version :
onedrive --synchronize --resync

Avantages / limites

CritèreForcesLimites
SimplicitéDeux lignes suffisentMoins granulaire qu’une liste blanche
MaintenanceRapide à ajusterDes motifs trop larges peuvent exclure « trop »
Cas d’usageIgnorer 1–3 répertoires lourdsPolitiques d’inclusion complexes → préférez sync_list

Méthode B — Contrôle fin avec sync_list (liste blanche + exclusions)

Parfaite pour définir exactement ce qui doit être synchronisé, puis soustraire des sous‑arbres précis.

Principe

Quand un sync_list est présent, le client considère tout exclu par défaut. Vous devez donc inclure ce qui vous intéresse, puis éventuellement exclure des sous‑dossiers spécifiques.

Exemple : inclure tout sauf Documents/Videos

  1. Créez/éditez ~/.config/onedrive/sync_list :
# Exclure ce sous-dossier
!/Documents/Videos/*

# Inclure tout le reste à la racine OneDrive

/\* 

Remarques importantes :

  • Les chemins du sync_list sont relatifs à la racine OneDrive (pas à ~). Un / initial ancre à la racine du compte.
  • L’ordre des lignes compte : les exclusions commençant par ! sont évaluées avant/avec les inclusions selon leur position. Placez vos !… avant des inclusions globales pour éviter toute ambiguïté.

Resynchroniser après création/modification de sync_list

onedrive --resync --sync
# ou :
onedrive --synchronize --resync

Avantages / limites

CritèreForcesLimites
PrécisionPolitique d’inclusion maîtrisée, exclusions cibléesDemande une attention particulière à l’ordre des lignes
ÉvolutivitéIdéale pour de grands arborescencesPlus verbeux que skip_dir pour de petits besoins

Activer la synchronisation continue (mode « surveillance »)

Deux options : test interactif, puis service de fond pour ne plus y penser.

Tester en interactif

onedrive --monitor

Ce mode utilise inotify pour détecter les changements locaux et interroge régulièrement le cloud pour les changements distants. Les transferts démarrent quasi instantanément.

Démarrage automatique à chaque session (systemd — service utilisateur)

# Activer le service au login
systemctl --user enable onedrive

# Démarrer maintenant

systemctl --user start onedrive

# Vérifier

systemctl --user status onedrive 

Le service est lancé dans le gestionnaire systemd utilisateur : pas besoin de privilèges root. Pour qu’il reste actif même après fermeture de session (machines « toujours allumées »), vous pouvez envisager :

# Optionnel : maintenir le gestionnaire utilisateur actif hors session
loginctl enable-linger "$USER"

Journal et diagnostic du service

# Suivre les logs en direct
journalctl --user-unit onedrive -f

Bonnes pratiques après mise en place

  • Resynchroniser après tout changement de filtre (skip_dir ou sync_list) avec --resync.
  • Valider à blanc les actions avec --dry-run avant un gros mouvement de données.
  • Surveiller l’espace disque local si vous passez d’un mode sélectif à un mode large.
  • Éviter les chevauchements : n’utilisez pas skip_dir et un sync_list contradictoires en même temps.
# Exemple : simuler une synchronisation (aucun fichier modifié)
onedrive --synchronize --dry-run

Exemples concrets de filtres

Ignorer un sous‑dossier lourd unique

# ~/.config/onedrive/config
skip_dir = "Documents/Videos"
skip_dir_strict_match = "true"

Ignorer plusieurs répertoires connus (où qu’ils soient)

skip_dir = "node_modules|.venv|.cache|Downloads/Temp"
skip_dir_strict_match = "true"

Inclure tout sauf un répertoire précis (avec sync_list)

!/Documents/Videos/*
/*

Inclure seulement des projets spécifiques

/Projets/ClientA/*
/Projets/ClientB/*
!/Projets/ClientB/Archives/*

Commandes utiles (mémo)

CommandeEffet
onedrivePremier run, authentification, synchro par défaut
onedrive --sync / --synchronizeLance une synchronisation manuelle
onedrive --monitorSurveillance continue (local & cloud)
onedrive --resyncRecalcule l’état (à faire après modification des règles)
onedrive --dry-runSimule sans modifier de fichiers
onedrive --display-configAffiche la configuration effective
systemctl --user enable/start/status onedriveActive/démarre/contrôle le service de fond
journalctl --user-unit onedrive -fConsulte les logs en direct

Dépannage — problèmes fréquents et solutions

Le dossier exclu apparaît quand même

  • Vérifiez l’orthographe et la casse : skip_dir est tolérant, mais un chemin mal ancré peut matcher trop largement.
  • Assurez‑vous d’avoir relancé un --resync après la modification.
  • Si vous avez un sync_list, souvenez‑vous que tout est exclu par défaut ; il faut inclure (/* ou les dossiers souhaités), puis exclure avec !….

« No space left on device » ou disque saturé

  • Réduisez la portée via skip_dir ou sync_list.
  • Utilisez --dry-run pour mesurer l’impact avant d’élargir.

Erreurs liées à inotify ou trop de « watches »

Le mode --monitor s’appuie sur inotify. Sur des arborescences volumineuses, augmentez les limites noyau (ex. max_user_watches et max_user_instances) puis rechargez sysctl :

# Exemple de valeurs plus confortables
echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/60-inotify.conf
echo fs.inotify.max_user_instances=1024 | sudo tee -a /etc/sysctl.d/60-inotify.conf
sudo sysctl --system

Le service systemd ne démarre pas au login

  • Vérifiez systemctl --user status onedrive pour les messages d’erreur.
  • Assurez‑vous que votre session utilise bien systemd en tant que gestionnaire utilisateur.
  • Si vous voulez qu’il tourne hors session : loginctl enable-linger "$USER".

Les options --sync vs --synchronize

Les versions récentes acceptent --sync ; d’autres préfèrent --synchronize. En cas de doute, lancez onedrive --help ou utilisez --synchronize.

Tests ciblés pour vérifier une exclusion

# Prévisualiser les actions sans rien changer
onedrive --synchronize --dry-run | grep -i "videos" || true

La commande ne doit pas proposer d’upload/download pour le dossier exclu.

Sécurité et cohérence

  • Ne combinez pas ce client avec d’autres outils OneDrive actifs sur le même répertoire (ex. montages FUSE concurrents).
  • Les règles d’exclusion s’appliquent côté client Linux : un fichier déjà dans le cloud mais exclu localement ne sera pas rapatrié, mais il restera visible via le Web/Windows.
  • Pour un comportement « Fichiers à la demande » (téléchargement à l’ouverture seulement), envisagez un client de montage dédié ; ne l’utilisez pas en même temps que onedrive sur la même cible.

Scénarios prêts à l’emploi

Cas 1 : vous avez un unique sous‑dossier très volumineux

  1. Ajoutez à ~/.config/onedrive/config :
    skip_dir = "Documents/Videos"
    skip_dir_strict_match = "true"
  2. onedrive --resync --synchronize
  3. systemctl --user enable --now onedrive

Cas 2 : vous souhaitez une politique stricte de « liste blanche »

  1. Créez ~/.config/onedrive/sync_list avec les racines à inclure et vos exclusions !….
  2. onedrive --resync --synchronize
  3. systemctl --user enable --now onedrive

Cas 3 : machine partagée ou serveur headless

  • Authentifiez‑vous une fois en console (onedrive), puis activez le service utilisateur.
  • Si nécessaire, loginctl enable-linger "$USER" pour conserver le service actif hors session.

FAQ express

Q : Où se trouve la racine des chemins ?
R : La racine utilisée par skip_dir et sync_list est celle de votre espace OneDrive côté cloud. /Documents/Videos signifie « le dossier Videos dans Documents à la racine OneDrive ».

Q : Puis‑je exclure par motif et pas seulement par chemin exact ?
R : Oui, skip_dir accepte des glob patterns (ex. **/node_modules, */Temp), et la correspondance est insensible à la casse. Avec sync_list, privilégiez des chemins explicites pour éviter les surprises.

Q : Dois‑je toujours utiliser --resync ?
R : Pas pour une simple synchro. --resync est crucial après un changement de règles (skip_dir, sync_list) ou un déplacement massif, car il force le recalcul de l’index.

Q : Comment revenir en arrière si j’ai mal exclu un dossier ?
R : Corrigez la règle, exécutez onedrive --resync --synchronize. Les éléments précédemment ignorés seront à nouveau pris en compte.

Checklist finale

  • Client installé et authentifié (onedrive a déjà synchronisé au moins une fois).
  • Règles d’exclusion en place (skip_dir ou sync_list).
  • Synchronisation recalculée (--resync).
  • Service systemd utilisateur activé (systemctl --user enable --now onedrive).
  • Logs vérifiés (aucune erreur bloquante).

En bref

  • Oui, vous pouvez exclure proprement Documents/Videos (via skip_dir ou sync_list).
  • Oui, Ubuntu peut rester à jour tout seul grâce à --monitor et au service systemd utilisateur.
  • Pensez à --resync après tout changement de règles et à --display-config pour vérifier la configuration.

Annexe — Modèles prêts à copier

Fichier ~/.config/onedrive/config (modèle minimal avec exclusion)

# Répertoire local de synchronisation (par défaut : ~/OneDrive)
# sync_dir = "~/OneDrive"

# Exclure un sous-dossier lourd

skip\_dir = "Documents/Videos"
skip\_dir\_strict\_match = "true"

# Autres options utiles (selon vos besoins)

# skip\_file = "\~*|*.tmp|\*.bak"

# skip\_symlinks = "true"

# log\_dir = "\~/.local/share/onedrive/logs"

Fichier ~/.config/onedrive/sync_list (inclure tout sauf un sous‑dossier)

!/Documents/Videos/*
/*

Unités systemd utilisateur — commandes de base

systemctl --user enable onedrive
systemctl --user start onedrive
systemctl --user status onedrive
journalctl --user-unit onedrive -f

Augmenter les limites inotify (si nécessaire)

echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/60-inotify.conf
echo fs.inotify.max_user_instances=1024 | sudo tee -a /etc/sysctl.d/60-inotify.conf
sudo sysctl --system

Avec ces réglages, vous obtenez une synchronisation OneDrive fiable sous Ubuntu, tout en gardant la main sur ce qui doit (ou non) atterrir localement. Résultat : un disque qui respire, des fichiers utiles à jour, et zéro commande à relancer au quotidien.

Sommaire