Contexte
Dans le cadre de mon travail, j'ai récement migré sur Pop!_OS pour mon environnement du quotidien. Etant un utilisateur de plusieurs comptes OneDrive (perso & pro), il me fallait pouvoir synchroniser ceux-ci dans des dossiers différents de mon système.
Par exemple :
- Mon compte OneDrive perso dans
~/OneDrive_Perso
- Mon compte OneDrive pro dans
~/OneDrive_Pro
Bien evidément, cela doit fonctionner en tant que service.
Je suis tombé sur ce projet : https://github.com/skilion/onedrive
C'est un outil sous licence GPL3 permettant d'intéragir avec OneDrive sous Linux.
Les fonctionnalités sont les suivantes :
- State caching
- Real-Time file monitoring with Inotify
- Resumable uploads
- Support OneDrive for Business (part of Office 365)
- Shared folders (only OneDrive Personal)
J'ajouterai également qu'il est possible de faire du multi-comptes.
C'est parfait car c'est mon besoin 🙂
Installation
Pour information, j'ai réalisé cette installation sous Pop!_OS 21.10 mais celle-ci devrait fonctionner à partir des dérivés d'Ubuntu 18+. Pour Fedora, CentOS, ArchLinux, se référer directement à la page du projet cité plus haut.
Tout d'abord l'installation des pré-requis :
sudo apt install git libcurl4-openssl-dev libsqlite3-dev snap
sudo snap install --classic dmd
Puis le clonage du projet et l'installation de l'outil :
git clone https://github.com/skilion/onedrive.git
cd onedrive
make
sudo make install
Configuration
La configuration est optionnelle. Par défaut, tous les fichiers seront stockés dans ~/OneDrive
et les fichiers/dossiers commençant par .
et ~
seront ignorés.
3 directives sont définissables :
-
sync_dir
: Le répertoire où seront stockés les données. -
skip_file
: Les fichiers / dossiers à ne pas synchroniser. L'utilisation des wildcards*
et?
sont autorisés. Le|
peut être employé pour séparer différents patterns.> L'outil doit être relancé avec l'argument
--resync
après une modification de la directiveskip_file
. -
sync_list
: Spécifier les fichiers / dossiers à synchroniser. J'en parlerai dans un prochain article.> L'outil doit être relancé avec l'argument
--resync
après une modification de la directiveskip_file
.
Comme je veux utiliser 2 configurations différentes (une perso et une pro), j'ai créé 1 répertoire pour chaque compte où seront stockés mes données respectives :
mkdir -p ~/{OneDrive_Perso,OneDrive_Pro}
Ensuite, j'ai créé 2 dossiers de configuration (un dossier par compte) :
mkdir -p ~/.config/{onedrive_perso,onedrive_pro}
J'ai ensuite créé mes 2 fichiers de configurations (un fichier par compte).
-
OneDrive perso :
cat > ~/.config/onedrive_perso/config < ~/.config/onedrive_pro/config < Il est important de libèrer le token office avant. J'étais, au préalablement, identifié sur mon compte perso. > > Pour cela, je me suis déconnecté avec mon navigateur internet de mon compte office perso précédement connecté à l'aide de l'URL suivante : https://www.office.com/?auth=2
5. Services
Lors de l'installation de l'outil un service a été créé : /usr/lib/systemd/user/onedrive.service
.
J'ai décidé de garder ce service pour mon compte perso et d'en créer un second pour mon compte pro :
cp /usr/lib/systemd/user/onedrive.service /usr/lib/systemd/user/onedrive_pro.service
J'ai ensuite édité mon 1er service (onedrive perso) pour correspondre à sa configuration :
vi /usr/lib/systemd/user/onedrive.service
Puis, j'ai modifié la ligne ExecStart
:
ExecStart=/usr/local/bin/onedrive --monitor --confdir="~/.config/onedrive_perso"
Et enfin la même modification pour mon serive OneDrive pro :
vi /usr/lib/systemd/user/onedrive_pro.service
Cette fois-ci, j'ai modifié comme suit :
ExecStart=/usr/local/bin/onedrive --monitor --confdir="~/.config/onedrive_pro"
Pour terminer, j'ai activé mes 2 services :
systemctl --user enable onedrive.service
systemctl --user enable onedrive_pro.service
systemctl --user start onedrive.service
systemctl --user start onedrive_pro.service
6. Vérifications / Logs
Pour vérifier le bon fonctionnement des services, j'utilise ces 2 commandes :
journalctl --user-unit onedrive -f
journalctl --user-unit onedrive_pro -f
7. Désinstallation
sudo make uninstall
rm -rf ~/.config/onedrive*