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.
Vue d’ensemble
Le client libre onedrive (projet communautaire) sait :
- Exclure un dossier avec un filtre côté client (via
skip_dir
ousync_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
- Éditez le fichier de configuration utilisateur :
~/.config/onedrive/config
- 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ère | Forces | Limites |
---|---|---|
Simplicité | Deux lignes suffisent | Moins granulaire qu’une liste blanche |
Maintenance | Rapide à ajuster | Des motifs trop larges peuvent exclure « trop » |
Cas d’usage | Ignorer 1–3 répertoires lourds | Politiques 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
- 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ère | Forces | Limites |
---|---|---|
Précision | Politique d’inclusion maîtrisée, exclusions ciblées | Demande une attention particulière à l’ordre des lignes |
Évolutivité | Idéale pour de grands arborescences | Plus 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
ousync_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 unsync_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)
Commande | Effet |
---|---|
onedrive | Premier run, authentification, synchro par défaut |
onedrive --sync / --synchronize | Lance une synchronisation manuelle |
onedrive --monitor | Surveillance continue (local & cloud) |
onedrive --resync | Recalcule l’état (à faire après modification des règles) |
onedrive --dry-run | Simule sans modifier de fichiers |
onedrive --display-config | Affiche la configuration effective |
systemctl --user enable/start/status onedrive | Active/démarre/contrôle le service de fond |
journalctl --user-unit onedrive -f | Consulte 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
ousync_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
- Ajoutez à
~/.config/onedrive/config
:skip_dir = "Documents/Videos"
skip_dir_strict_match = "true"
onedrive --resync --synchronize
systemctl --user enable --now onedrive
Cas 2 : vous souhaitez une politique stricte de « liste blanche »
- Créez
~/.config/onedrive/sync_list
avec les racines à inclure et vos exclusions!…
. onedrive --resync --synchronize
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
ousync_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
(viaskip_dir
ousync_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.