49 votes

Comment synchroniser OneDrive Business /Office 365 sur Linux ?

Microsoft OneDrive Business/Office 365 Pro offre 1 To de stockage dans le nuage, mais il n'y a malheureusement jamais eu de méthode pour le synchroniser sur Linux.

31voto

Mattia_98 Points 448

Ubuntu 18.04 et versions ultérieures

UPDATE :

Les instructions ci-dessous permettent de procéder à l'installation à partir de apt fonctionne, mais la version dans apt est trop obsolète et ne parvient pas à analyser l'URI d'autorisation. Au lieu de cela, il convient de suivre la méthode INSTALL.md La doc pour compiler et installer à partir des sources fonctionne :

https://github.com/abraunegg/onedrive/blob/master/docs/INSTALL.md

PRÉCÉDENT :

Il existe un Client OneDrive dans les dépôts Ubuntu par défaut dans Ubuntu 18.04 et plus. OneDrive est le système de stockage en nuage de Microsoft. Ce paquetage fournit le client en ligne de commande spécialisé dans la synchronisation avec le stockage en nuage OneDrive.

L'installer avec :

sudo apt install onedrive

Lors de la première exécution, il vous demande de vous authentifier à l'aide d'un lien. Après l'authentification, vous pouvez activer le deamon avec systemctl --user enable onedrive et ensuite systemctl --user start onedrive .

Il surveillera et synchronisera les données OneDrive localement dans ~/OneDrive . De plus amples explications peuvent être trouvées dans la page de manuel man onedrive . Il est très facile à installer et ne prend que cinq minutes.

9voto

Sayed Metwaly Points 581

Actuellement, le programme expérimental onedrive-d est un programme open-source qui ne peut synchroniser que les comptes OneDrive personnels car il n'accepte pas les liens Microsoft Sharepoint. Voici une méthode pour synchroniser OneDrive Business/Office 365 à l'aide de GoodSync pour Linux qui est gratuit pour un usage personnel.

  1. Installez la version appropriée sur votre machine Linux, par exemple :

    ./goodsync-linux-x86_64-release.run

    Réponse de n o pour l'installation de GoodSync Connect et l'interface Web de GsServer.

  2. Ouvrez OneDrive dans un navigateur web. Sélectionnez "Retourner à OneDrive classique" en bas à droite.

  3. L'adresse web de votre navigateur se présente désormais comme suit : https://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents/Forms/All.aspx et, sur cette base, obtenir votre lien de synchronisation qui sera office365://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents .

  4. Créez un nouveau fichier dans le sous-dossier .goodsync de votre domicile :

    gedit ~/.goodsync/jobs.tix
  5. Saisissez le code suivant dans le fichier et enregistrez-le :

    <Job>
    Name = "OneDrive_Sync"
    Side1 = <SideOptions>
    Dir = <Connect>
        Url = "put_your_syncing_link_here"
        UserID = "put_your_OneDrive/Office365_Bussiness_email_here"
    </Connect>
    </SideOptions>
    Side2 = <SideOptions>
    Dir = <Connect>
        Url = "file:///your_home_folder/one_drive_folder"
    </Connect>
    </SideOptions>
    Direction = 0
    ExcludeHidden = No
    ExcludeSystem = No
    DetectMovesAndRenames = Yes
    LinksOption = 1
    ExcludeEmptyFolders = No
    LimitChangesPercent = 100
    AutoResolveConflicts = 3
    DetectMovesAndRenames = Yes
    </Job>
  6. Lancer le processus de synchronisation :

    gsync sync "OneDrive_Sync"
  7. À cette étape, votre navigateur Web ouvrira la page OneDrive/Office 365 et vous demandera votre autorisation pour permettre à goodsync d'accéder à votre compte. Après avoir saisi vos informations d'identification, la synchronisation commencera.

Limites : Microsoft n'autorise pas les demandes d'URL de plus de 270 caractères et GoodSync NE PEUT donc PAS synchroniser des fichiers avec de longs noms de chemin.

Bonne lecture !

5voto

criticabug Points 211

rclone prend en charge OneDrive for Business. Voir un article Comment monter OneDrive sous Linux à l'aide de Rclone (prend en charge les comptes professionnels et personnels) - Linux Uprising Blog pour l'utilisation.

Voici mon exemple de mise en place d'une nouvelle télécommande onedrive1 avec rclone 1.48.0 (sur Fedora 30) :

$ rclone config
2019/10/10 06:35:56 NOTICE: Config file ".config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> onedrive1
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value

19 / Microsoft OneDrive
   \ "onedrive"

Storage> 19      
** See help for onedrive backend at: https://rclone.org/onedrive/ **

Microsoft App Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id> 
Microsoft App Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret> 
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n

Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Choose a number from below, or type in an existing value
 1 / OneDrive Personal or Business
   \ "onedrive"
 2 / Root Sharepoint site
   \ "sharepoint"
 3 / Type in driveID
   \ "driveid"
 4 / Type in SiteID
   \ "siteid"
 5 / Search a Sharepoint site
   \ "search"
Your choice> 1
Found 2 drives, please select the one you want to use:
0: OneDrive - Example Inc (business) id=b!gFLg-RRe****-T9B****
1: OneDrive - Example Inc (business) id=b!gFLg-RRe****-T-H****
Chose drive to use:> 1
Found drive 'root' of type 'business', URL: https://example-my.sharepoint.com/personal/myname_example_com/Documents
Is that okay?
y) Yes
n) No
y/n> y
Current remotes:

Name                 Type
====                 ====
onedrive1            onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

L'URL du lecteur 0 se termine par /ElementinnerHTML et ne contient pas de fichiers dans mon cas.

Montez-le ensuite dans un répertoire local à l'aide de la ligne de commande, rclone-browser o interface graphique web depuis la version 1.49 .

2voto

Byte Commander Points 99026

Bien que l'expression originale et couramment utilisée onedrived de xybu ne prend toujours pas en charge OneDrive for Business, mais uniquement les OneDrives personnels. une fourche de ce projet sur GitHub par derrix060 qui dispose d'une implémentation qui fonctionne d'une certaine manière (mais qui est encore boguée) pour le client professionnel.

Avertissement : Lorsque vous utilisez cette méthode, je vous recommande vivement de toujours vérifier que les fichiers ont été synchronisés correctement en les vérifiant en ligne à l'adresse suivante https://www.office.com et/ou d'utiliser mon wrapper script montré à la fin de cette page pour au moins être informé de toute erreur à l'aide des notifications de bureau !

Parfois, onedrived semble ne pas prendre en compte certaines modifications ou les télécharger correctement, laissant votre OneDrive dans un état (partiellement) non synchronisé. Il peut également arriver qu'il génère des conflits de fusion avec lui-même pour une raison quelconque et renomme vos fichiers localement en ajoutant votre nom d'hôte entre parenthèses et éventuellement un numéro. Malheureusement, il n'y a pas de notification sur les erreurs, mais vous pouvez voir les entrées dans votre fichier journal.

Si cela se produit, vous pouvez essayer de synchroniser à nouveau les fichiers concernés, par exemple en les touchant ou en les renommant ou en renommant le dossier dans lequel ils se trouvent.

Conseil : Il semble que la bibliothèque onedrived ait souvent des problèmes, en particulier avec les fichiers qui ont été enregistrés directement dans la racine OneDrive. Il est probablement préférable de placer tous les fichiers dans des sous-répertoires plutôt que de les déverser directement dans le dossier OneDrive.

Bien que cela semble stupide, j'ai également remarqué qu'il semble y avoir moins de problèmes à télécharger des fichiers via le client Web OneDrive et à attendre qu'ils soient synchronisés avec votre dossier local (ce qui peut prendre plusieurs minutes) qu'à les créer ou à les copier/déplacer localement. C'est à vous de décider si c'est pratique ou si cela annule totalement l'objectif de OneDrive...

Voir le fichier readme du projet pour les instructions d'installation complètes, mais voici un bref résumé :

Installation

  1. Assurez-vous que vous n'avez pas d'autre version de onedrived (ou onedrive-d ) installé.

  2. Installer les paquets de dépendances :

    sudo apt install build-essential python3-dev libssl-dev inotify-tools python3-dbus libdbus-1-dev libdbus-glib-1-dev
  3. Télécharger la dernière version ngrok pour Linux sur le site officiel à l'adresse suivante https://ngrok.com/download . Les ngrok-client des dépôts Ubuntu est trop ancien et ne répond pas aux exigences.
    Décompressez le fichier téléchargé ngrok-stable-linux-amd64.zip archives. Elle contient un seul ngrok que vous devez placer dans un endroit de votre site Web. $PATH , par exemple en /usr/local/bin/ .
    Il n'est probablement pas nécessaire de s'inscrire à ngrok.

  4. Installer le onedrived Application Python3 à partir de GitHub en utilisant pip3 :

    sudo -H pip3 install git+https://github.com/derrix060/onedriveClient.git
  5. Il est possible de configurer l'emplacement d'un fichier journal pour l'application onedrived où vous pouvez vérifier s'il y a des problèmes si quelque chose ne fonctionne pas correctement, par exemple :

    onedrived-pref config set logfile_path ~/.config/onedrived/onedrived.log

Configuration du compte et du lecteur

Une fois l'installation réussie, vous devez configurer votre compte et votre (vos) lecteur(s) :

  1. Ajoutez votre compte OneDrive for Business à l'aide du mode interactif en exécutant :

    onedrived-pref account add -b

    L'assistant interactif vous demandera à deux reprises d'ouvrir un lien dans votre navigateur, où vous devrez autoriser l'application avec votre compte Microsoft Business.
    Il vous demandera de coller l'URL vers laquelle vous avez été redirigé après avoir confirmé l'autorisation dans l'assistant interactif. Veuillez faire ce qui vous est demandé et suivre les instructions de la commande.

  2. Vérifiez que le compte a été ajouté avec succès en consultant la sortie de la commande ci-dessous. Elle devrait être similaire et indiquer le compte avec lequel vous êtes connecté :

    $ onedrived-pref account list
    
    All OneDrive accounts associated with user "YOUR_UBUNTU_USERNAME":
    
      #  Account ID                 Owner Name     Email Address         Profile Type
    ---  -------------------------  -------------  --------------------  --------------
      0  YOUR_PERSONAL_ACCOUNT_ID   YOUR_NAME      YOUR_BUSINESS_EMAIL   Business
  3. Configurez vos lecteurs en mode de commande interactif en exécutant la commande suivante :

    onedrived-pref drive set

    Vous verrez une liste de tous vos lecteurs et serez invité à saisir le numéro de ligne du lecteur que vous souhaitez ajouter à votre configuration locale.
    Vous devez ensuite spécifier un répertoire local que vous souhaitez utiliser comme dossier racine pour la synchronisation avec votre lecteur. Vous pouvez simplement appuyer sur Enter et il utilisera l'option par défaut ~/OneDrive . Si le chemin n'existe pas, il sera créé. Même chose pour le chemin d'accès au fichier ignore que vous souhaitez utiliser, vous pouvez simplement cliquer sur Enter et il utilisera l'option par défaut ~/.config/onedrived/ignore_v2.txt et le créer, si nécessaire.

  4. Vérifiez la sortie de la commande ci-dessous pour afficher les informations sur tous les lecteurs disponibles et configurés. Le lecteur que vous venez de configurer avec les paramètres corrects devrait apparaître sous le titre Drives that have been set up :

    onedrived-pref drive list

Lancement du démon

Maintenant que votre disque est configuré, vous devez essayer de démarrer le programme onedrived daemon. Je recommande de le lancer d'abord en mode débogage, au cas où il y aurait des problèmes que vous n'auriez pas remarqués autrement. Ceci lancera onedrived au premier plan :

onedrived start --debug

Si tout va bien et que la commande ne se bloque pas et ne se termine pas, essayez de placer quelques fichiers dans votre dossier OneDrive local et voyez s'il se synchronise. Vous devriez pouvoir le vérifier en visitant l'application web OneDrive à l'adresse suivante https://www.office.com et vérifiez si les fichiers que vous avez ajoutés localement y apparaissent.

Vous pouvez quitter le onedrived dans votre terminal en appuyant sur Ctrl + C .

Pour lancer onedrived normalement, en tant que démon d'arrière-plan, le faire fonctionner avec :

onedrived start

Vous devriez probablement ajouter cette commande à vos applications de démarrage, afin qu'elle démarre automatiquement à chaque fois que vous vous connectez. Veuillez vous référer à Comment démarrer les applications automatiquement lors de la connexion ? pour cela.

Enveloppe pour les notifications d'erreur

Si vous souhaitez recevoir des notifications de bureau chaque fois que onedrived Si une erreur survient (par exemple un échec de synchronisation de fichiers), voici un script qui analyse le fichier journal en temps réel et utilise notify-send pour vous l'afficher.

Vous pouvez lancer le wrapper script sans arguments (ou le mettre dans vos applications de démarrage automatique) à la place de la commande onedrived start commande.

#!/bin/bash
LOGFILE=~/.config/onedrived/onedrived.log
ICON_START=weather-overcast
ICON_STOP=weather-few-clouds
ICON_ERROR=weather-severe-alert

onexit () {
    onedrived stop
    notify-send -i "$ICON_STOP" "OneDrive" "Wrapper stopped"
    echo "onedrived-wrapper stopped"
}

trap onexit EXIT

onedrived stop
echo "---" >> "$LOGFILE"

onedrived start || {
    echo "Failed to start onedrived!"
    exit 1
}
notify-send -i "$ICON_START" "OneDrive" "Wrapper started"

echo "Monitoring onedrived.log for error messages..."
tail -n 1 -F --pid="$(pgrep -f "onedrived start")" "$LOGFILE" |
    while read LINE ; do
        ech "$LINE"
        if MESSAGE="$(grep -Pio '(?<=ERROR: ).*' <<< "$LINE")" ; then
            notify-send -i "$ICON_ERROR" "OneDrive Error" "$MESSAGE"
        fi
    done

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X