Comment synchroniser OneDrive Business / Office 365 sur Linux?

24

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

Sayed Metwaly
la source
2
Bienvenue sur Ask Ubuntu ! Nous sommes un site de questions et réponses, pas un forum. Actuellement, vous avez à la fois une question et une réponse dans la section de questions désignée. Veuillez modifier votre message pour supprimer la réponse et la publier dans la section des réponses ci-dessous (il devrait y avoir un bouton en bas de la page). Merci!
Seth
Copie
bmaupin

Réponses:

7

Actuellement, l'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 n o pour les GoodSync Connect et configuration GsServer interface utilisateur Web.

  2. Ouvrez OneDrive dans un navigateur Web. sélectionnez "Revenir à Classic OneDrive" dans le coin inférieur droit.
  3. L'adresse Web dans votre navigateur ressemblera maintenant à: https://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents/Forms/All.aspxet sur cette base, obtenez 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. 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émarrez 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 autoriser goodsync à accéder à votre compte. Après avoir entré vos informations d'identification, la synchronisation commencera.

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

Prendre plaisir!

Sayed Metwaly
la source
3
Mon navigateur Web n'ouvre pas la page d'autorisation à l'étape 7. Avez-vous une idée de comment le faire manuellement?
pat-s
3
Mon navigateur Web n'est pas ouvert pour se connecter également
Haha TTpro
2
Système de fichiers à office365: /.../ Documents a été remplacé par la nouvelle API OneDrive V2. Cliquez sur le bouton Parcourir pour re-parcourir votre dossier de synchronisation OneDrive, car le nouveau OneDrive nécessite une authentification basée sur le navigateur (OAuth2)
Ferroao
6

Ubuntu 18.04 et versions ultérieures

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 cloud de Microsoft. Ce package fournit le client de ligne de commande spécialisé dans la synchronisation avec le stockage cloud OneDrive.

Installez-le avec:

sudo apt install onedrive

Au premier lancement, il vous demande de vous authentifier avec un lien. Après l'authentification, vous pouvez activer le démon avec systemctl --user enable onedrivepuis systemctl --user start onedrive. De plus amples explications peuvent être trouvées dans la page de manuel man onedrive. Il est très facile à configurer et ne prend que cinq minutes environ.

Mattia_98
la source
4
Cela ne fonctionne pas pour OneDrive Entreprise
tricasse
1
@tricasse Cela fonctionne pour Office 365 Pro
Mattia_98
2

Alors que l' onedrivedoutil original et couramment utilisé par xybu ne prend toujours pas en charge OneDrive Entreprise, mais uniquement des OneDrives personnels. cependant, il y a un fork de ce projet sur GitHub par derrix060 qui a une implémentation qui fonctionne (mais qui est toujours boguée) pour le client Business.

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

Parfois, onedrived semble ne pas réussir à récupérer 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 nombre. Malheureusement, il n'y a pas de notification d'erreurs, mais vous pouvez voir les entrées dans votre fichier journal.

Si cela se produit, vous pouvez essayer de synchroniser à nouveau les fichiers respectifs 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 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 au lieu de les vider directement dans le dossier OneDrive.

Bien que cela semble stupide, j'ai également remarqué que cela semble causer moins de problèmes pour télécharger des fichiers via le client Web OneDrive et attendre jusqu'à ce qu'ils soient synchronisés dans votre dossier local (ce qui peut prendre plusieurs minutes cependant) que pour les créer, les copier ou les déplacer. localement. Que ce soit pratique ou totalement nul, le but de OneDrive dépend de votre propre décision ...

Consultez le fichier Lisezmoi du projet pour obtenir 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 packages 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échargez le dernier ngrokclient pour Linux sur le site officiel à https://ngrok.com/download . Le ngrok-clientpackage des référentiels Ubuntu est trop ancien et ne répond pas aux exigences.
    Décompressez l' ngrok-stable-linux-amd64.ziparchive téléchargée . Il contient un seul ngrokbinaire, que vous devez placer dans un emplacement sur votre $PATH, par exemple dans /usr/local/bin/.
    L'inscription à ngrok n'est probablement pas nécessaire.

  4. Installez l' onedrivedapplication 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 pouvez vérifier les 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 configuration du lecteur

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

  1. Ajoutez votre compte OneDrive Entreprise en utilisant le mode interactif en exécutant:

    onedrived-pref account add -b
    

    L'assistant interactif vous demandera deux fois 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 êtes redirigé après avoir confirmé l'autorisation dans l'assistant interactif. Veuillez suivre les instructions et suivre les instructions de la commande.

  2. Vérifiez que le compte a bien été ajouté en vérifiant la sortie de la commande ci-dessous. Il devrait ressembler et répertorier 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 disques en mode de commande interactif en exécutant:

    onedrived-pref drive set
    

    Vous verrez une liste de tous vos lecteurs et vous serez invité à entrer 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 Enteret il utilisera la valeur par défaut ~/OneDrive. Si le chemin n'existe pas, il sera créé. Même chose pour le chemin d'accès au fichier ignoré que vous souhaitez utiliser, vous pouvez simplement appuyer sur Enteret il utilisera la valeur par défaut ~/.config/onedrived/ignore_v2.txtet le créera, si nécessaire.

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

    onedrived-pref drive list
    

Lancement du démon

Maintenant que votre lecteur est configuré, vous devez essayer de démarrer le onedriveddémon. Je recommande de le lancer en mode débogage d'abord, au cas où il y aurait des problèmes que vous auriez autrement manqués. Cela commencera onedrivedau premier plan:

onedrived start --debug

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

Vous pouvez à nouveau quitter le onedrivedprocessus dans votre terminal en appuyant sur Ctrl+ C.

Pour lancer onedrivednormalement, en tant que démon d'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 les applications automatiquement à la connexion? pour ça.

Wrapper pour les notifications d'erreur

Si vous souhaitez obtenir des notifications sur le bureau chaque fois onedrivedqu'une erreur est enregistrée (par exemple, la synchronisation des fichiers a échoué), voici un script wrapper qui analyse le fichier journal en temps réel et utilise notify-send pour vous les afficher.

Vous pouvez démarrer le script wrapper sans arguments (ou le placer dans vos applications de démarrage automatique) au lieu de la onedrived startcommande.

#!/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
Byte Commander
la source
Je reçois toujours le message "Impossible d'autoriser onedrived: interaction_required". après avoir entré le deuxième lien pour authentifier le compte ODfB. Des idées pourquoi cela pourrait arriver?
Jimakos
@Jimakos Désolé, je n'ai jamais rencontré ce message. Aucune idée malheureusement.
Byte Commander
1

rclone prend en charge OneDrive Entreprise. 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 pour configurer une nouvelle télécommande onedrive1avec 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 /ElementinnerHTMLet ne contient pas de fichiers dans mon cas.

Montez-le ensuite sur un répertoire local via la ligne de commande, rclone-browser ou l'interface graphique Web depuis la v1.49 .

critiquer
la source