web-dev-qa-db-fra.com

Comment synchroniser OneDrive Business / Office 365 sur Linux?

Microsoft OneDrive Business/Office 365 Pro offre 1 TB de stockage en nuage mais, malheureusement, il n’ya jamais eu de méthode pour le synchroniser sous Linux.

22
Sayed Metwaly

L’expérimental OneDrive-d est actuellement un programme à source ouverte qui ne peut synchroniser que les comptes personnels OneDrive, car il n’accepte pas les liens Microsoft Sharepoint. Voici une méthode pour synchroniser OneDrive Business/Office 365 en utilisant GoodSync pour Linux , qui est libre pour un usage personnel.

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

    ./goodsync-linux-x86_64-release.run
    

    Répondez par n o pour l’installation de GoodSync Connect et l’interface utilisateur Web de GsServer.

  2. Ouvrez OneDrive dans un navigateur Web. sélectionnez "Return to Classic OneDrive" dans le coin inférieur droit.
  3. L’adresse Web de votre navigateur va maintenant ressembler à ceci: https://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents/Forms/All.aspx et obtenir son 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. Entrez 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. Démarrer le processus de synchronisation:

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

Limitations: Microsoft n'autorise pas les demandes d'URL d'une longueur supérieure à 270 caractères. GoodSync NE PEUT PAS synchroniser les fichiers dont le chemin d'accès est long.

Prendre plaisir!

7
Sayed Metwaly

Ubuntu 18.04 et plus tard

Il existe un client OneDrive dans les référentiels Ubuntu par défaut dans Ubuntu 18.04 et versions ultérieures. OneDrive est le système de stockage en nuage de Microsoft. Ce package fournit le client de ligne de commande spécialisé dans la synchronisation avec le stockage en nuage OneDrive.

Installez-le avec:

Sudo apt install OneDrive

À la première exécution, il vous demande de vous authentifier avec un lien. Après l’authentification, vous pouvez activer le démon avec systemctl --user enable OneDrive, puis systemctl --user start OneDrive. Vous trouverez des explications plus détaillées dans la page de manuel man OneDrive. Il est très facile à installer et ne prend que cinq minutes environ.

3
Mattia_98

L'outil onedrived d'origine et couramment utilisé de xybu ne prend toujours pas en charge OneDrive for Business, mais uniquement les OneDrives personnels. Cependant, il existe un fork de ce projet sur GitHub de derrix060 qui a une implémentation qui fonctionne (mais qui pose encore des problèmes) pour le client Business.

Avertissement: Lorsque vous utilisez cette méthode, il est vivement recommandé de toujours vérifier que les fichiers sont correctement synchronisés en les vérifiant en ligne à l'adresse . https://www.office.com , et/ou d'utiliser le script d'encapsulation présenté à la fin de cette page pour au moins être informé de toute erreur à l'aide des notifications du bureau!

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

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

Astuce: Il semble que la bibliothèque onedrived ait souvent des problèmes, en particulier avec les fichiers enregistrés directement dans la racine OneDrive. Il est probablement préférable de placer tous les fichiers dans des sous-répertoires au lieu de les transférer directement dans le dossier OneDrive.

Bien que cela paraisse stupide, j’ai aussi remarqué que le téléchargement de fichiers via le client Web OneDrive posait moins de problèmes et qu’ils attendaient jusqu’à ce qu’ils soient de nouveau synchronisés dans votre dossier local (ce qui peut prendre plusieurs minutes) que de les créer ou les copier/déplacer. localement. Que ce soit pratique ou totalement nul, le but de OneDrive dépend de votre propre décision ...

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

Installation

  1. Assurez-vous qu'aucune autre version de onedrived (ou OneDrive-d) n'est installée.

  2. Installez les paquets de dépendance:

    Sudo apt install build-essential python3-dev libssl-dev inotify-tools python3-dbus libdbus-1-dev libdbus-glib-1-dev
    
  3. Téléchargez le dernier client ngrok pour Linux sur le site officiel à l'adresse https://ngrok.com/download . Le paquet ngrok-client des référentiels Ubuntu est trop ancien et ne répond pas aux exigences.
    Décompressez l’archive ngrok-stable-linux-AMD64.Zip téléchargée. Il contient un seul binaire ngrok, que vous devez placer à l’emplacement de votre $PATH, par exemple. dans /usr/local/bin/.
    Il n'est probablement pas nécessaire de s'inscrire à ngrok.

  4. Installez l'application onedrived Python3 à partir de GitHub en utilisant pip3:

    Sudo -H pip3 install git+https://github.com/derrix060/onedriveClient.git
    
  5. Configurez éventuellement un emplacement de fichier journal pour onedrived, où vous pourrez rechercher des problèmes si quelque chose ne doit pas fonctionner correctement, par exemple:

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

Configuration du compte et configuration du lecteur

Une fois l'installation réussie, vous devez configurer votre compte et votre ou vos lecteurs:

  1. Ajoutez votre compte OneDrive for Business en 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 sera demandé de coller l’URL vers laquelle vous serez redirigé après avoir confirmé l’autorisation dans l’assistant interactif. S'il vous plaît faites comme indiqué et suivez les instructions que la commande vous donne.

  2. Vérifiez que le compte a été ajouté avec succès en vérifiant le résultat de la commande ci-dessous. Il devrait ressembler 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:

    onedrived-pref drive set
    

    Vous verrez une liste de tous vos lecteurs et on vous demandera de 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 frapper Enter et il utilisera le ~/OneDrive par défaut. Si le chemin n'existe pas, il sera créé. Même chose pour le chemin du fichier ignorer que vous voulez utiliser, vous pouvez simplement cliquer sur Enter et il utilisera le ~/.config/onedrived/ignore_v2.txt par défaut et le créera, si nécessaire.

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

    onedrived-pref drive list
    

Lancer le démon

Maintenant que votre lecteur est configuré, vous devez essayer de démarrer le démon onedrived. Je recommande de le lancer en mode débogage en premier, au cas où il y aurait un problème que vous auriez autrement oublié. Ceci démarrera onedrived au premier plan:

onedrived start --debug

Si tout va bien et que la commande ne plante pas et ne se ferme pas, essayez de placer des fichiers dans votre dossier OneDrive local et voyez si elle se synchronise. Vous devriez probablement pouvoir le vérifier en visitant l’application Web OneDrive à l’adresse https://www.office.com et en vérifiant si les fichiers que vous avez ajoutés localement y apparaissent.

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

Pour lancer onedrived normalement, en tant que démon en arrière-plan, exécutez-le 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 puis-je démarrer des applications automatiquement à la connexion? pour cela.

Wrapper pour les notifications d'erreur

Si vous souhaitez recevoir des notifications de poste de travail chaque fois que onedrived enregistre une erreur (par exemple, la synchronisation de fichiers a échoué), voici un script d'encapsuleur qui analyse le fichier journal en temps réel et utilise notify-send pour vous les afficher.

Vous pouvez démarrer le script d'encapsulation sans argument (ou le placer dans vos applications à démarrage automatique) au lieu de la commande onedrived start.

#!/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
        echo "$LINE"
        if MESSAGE="$(grep -Pio '(?<=ERROR: ).*' <<< "$LINE")" ; then
            notify-send -i "$ICON_ERROR" "OneDrive Error" "$MESSAGE"
        fi
    done
2
Byte Commander