¿Cómo sincronizar OneDrive Business / Office 365 en Linux?

24

Microsoft OneDrive Business / Office 365 Pro ofrece 1 TB de almacenamiento en la nube, pero desafortunadamente nunca ha habido un método para sincronizarlo en Linux.

Sayed Metwaly
fuente
2
Bienvenido a Ask Ubuntu ! Somos un sitio de preguntas y respuestas, no un foro. Actualmente tiene tanto una pregunta como una respuesta en la sección de preguntas designada. Por favor, editar tu post para eliminar la respuesta y después de que en la sección de respuestas a continuación (debe haber un botón en la parte inferior de la página). ¡Gracias!
Seth
¿Posible duplicado de Cómo sincronizar onedrive para empresas?
bmaupin

Respuestas:

7

Actualmente, el onedrive-d experimental es un programa de código abierto que puede sincronizar solo cuentas personales de OneDrive, ya que no acepta enlaces de Microsoft Sharepoint. Aquí hay un método para sincronizar OneDrive Business / Office 365 usando GoodSync para Linux , que es gratuito para uso personal.

  1. Instale la versión adecuada en su máquina Linux, por ejemplo:

    ./goodsync-linux-x86_64-release.run
    

    Respuesta por n o tanto para la configuración GoodSync Connect y GsServer interfaz de usuario web.

  2. Abra OneDrive en un navegador web. seleccione "Volver a Classic OneDrive" en el lado inferior derecho.
  3. La dirección web en su navegador ahora se verá así: https://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents/Forms/All.aspxy en base a ella obtenga su enlace de sincronización que será office365://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents.
  4. Cree un nuevo archivo en la subcarpeta .goodsync en su hogar:

    gedit ~/.goodsync/jobs.tix
    
  5. Ingrese el siguiente código en el archivo y guárdelo:

    <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. Comience el proceso de sincronización:

    gsync sync "OneDrive_Sync"
    
  7. En este paso, su navegador web abrirá la página OneDrive / Office 365 y solicitará su autorización para permitir que Goodsync acceda a su cuenta. Después de ingresar sus credenciales, se iniciará la sincronización.

Limitaciones: Microsoft no permite solicitudes de URL con una longitud de más de 270 caracteres, por lo que GoodSync NO PUEDE sincronizar archivos con rutas largas.

¡Disfrutar!

Sayed Metwaly
fuente
3
Mi navegador web no abre la página de autorización en el paso 7. ¿Alguna idea de cómo hacerlo manualmente?
pat-s
3
Mi navegador web no está abierto para iniciar sesión también
Haha TTpro
2
Sistema de archivos en office365: /.../ Documentos ha sido reemplazado por New OneDrive V2 API. Haga clic en el botón Examinar para volver a examinar su carpeta de sincronización de OneDrive, ya que New OneDrive requiere autenticación basada en navegador (OAuth2)
Ferroao
6

Ubuntu 18.04 y posterior

Hay un cliente OneDrive en los repositorios predeterminados de Ubuntu en Ubuntu 18.04 y versiones posteriores. OneDrive es el sistema de almacenamiento en la nube de Microsoft. Este paquete proporciona el cliente de línea de comandos especializado en sincronización con el almacenamiento en la nube OneDrive.

Instalarlo con:

sudo apt install onedrive

En la primera ejecución, le pide que se autentique con un enlace. Después de la autenticación, puede habilitar el demonio con systemctl --user enable onedrivey luego systemctl --user start onedrive. Se pueden encontrar más explicaciones en la página de manual man onedrive. Es muy fácil de configurar y solo lleva unos cinco minutos.

Mattia_98
fuente
44
Esto no funciona para OneDrive for Business
tricasse
1
@tricasse Funciona para Office 365 Pro
Mattia_98
2

Si bien la onedrivedherramienta original y de uso común de xybu todavía no es compatible con OneDrive para la Empresa, sino solo con OneDrives personales. sin embargo, hay una bifurcación de este proyecto en GitHub por derrix060 que tiene una implementación que funciona de alguna manera (pero aún con errores) para el cliente de negocios.

Advertencia: cuando use este método, le recomiendo verificar siempre que los archivos se sincronizaron correctamente al verificarlos en línea en https://www.office.com , y / o usar mi script de envoltura que se muestra al final de esta página para al menos estar informado de cualquier error usando notificaciones de escritorio!

A veces, onedrived parece fallar al recoger algunos cambios o cargarlos correctamente, dejando su OneDrive en un estado (parcialmente) no sincronizado. También puede suceder que genere conflictos de fusión consigo mismo por algún motivo y cambie el nombre de sus archivos localmente agregando su nombre de host entre paréntesis y opcionalmente un número. Lamentablemente, no hay notificaciones sobre errores, pero puede ver las entradas en su archivo de registro.

Si esto sucede, puede hacer que intente sincronizar los archivos respectivos nuevamente, por ejemplo, tocándolos o renombrándolos o la carpeta en la que están.

Consejo: Parece que la biblioteca onedrived a menudo tiene problemas, especialmente con archivos que se guardaron directamente en la raíz de OneDrive. Probablemente sea mejor poner todos los archivos en subdirectorios en lugar de descargarlos directamente en la carpeta OneDrive.

Aunque suena estúpido, también noté que parece causar menos problemas cargar archivos a través del cliente web OneDrive y esperar hasta que se vuelvan a sincronizar a su carpeta local (que puede tomar varios minutos) que crearlos, copiarlos o moverlos. en la zona. Si esto es práctico o anula totalmente, el propósito de OneDrive depende de su propia decisión ...

Consulte el archivo Léame del proyecto para obtener instrucciones completas de instalación, pero aquí hay un breve resumen:

Instalación

  1. Asegúrese de no tener instalada otra versión de onedrived(o onedrive-d).

  2. Instalar paquetes de dependencia:

    sudo apt install build-essential python3-dev libssl-dev inotify-tools python3-dbus libdbus-1-dev libdbus-glib-1-dev
    
  3. Descargue el último ngrokcliente para Linux desde el sitio web oficial en https://ngrok.com/download . El ngrok-clientpaquete de los repositorios de Ubuntu es demasiado viejo y no cumple con los requisitos.
    Descomprima el ngrok-stable-linux-amd64.ziparchivo descargado . Contiene un solo ngrokbinario, que debe colocar en una ubicación en su $PATH, por ejemplo, en /usr/local/bin/.
    Registrarse en ngrok probablemente no sea necesario.

  4. Instale la onedrivedaplicación Python3 desde GitHub usando pip3:

    sudo -H pip3 install git+https://github.com/derrix060/onedriveClient.git
    
  5. Opcionalmente, configure una ubicación para el archivo de registro onedrived, donde puede verificar si hay problemas si algo no funciona correctamente, por ejemplo:

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

Configuración de cuenta y configuración de unidad

Una vez que la instalación se realizó correctamente, debe configurar su cuenta y unidad (es):

  1. Agregue su cuenta de OneDrive para la Empresa usando el modo interactivo ejecutando:

    onedrived-pref account add -b
    

    El asistente interactivo le pedirá dos veces que abra un enlace en su navegador, donde deberá autorizar la aplicación con su cuenta Microsoft Business.
    Le pedirá que pegue la URL a la que será redirigido después de confirmar la autorización nuevamente en el asistente interactivo. Haga lo que se le indica y siga las instrucciones que le da el comando.

  2. Verifique que la cuenta se haya agregado correctamente al verificar la salida del comando a continuación. Debería ser similar y enumerar la cuenta con la que inició sesión:

    $ 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. Configure sus unidades en el modo de comando interactivo ejecutando:

    onedrived-pref drive set
    

    Verá una lista de todas sus unidades y se le pedirá que ingrese el número de fila de la unidad que desea agregar a su configuración local.
    Luego debe especificar un directorio local que desee usar como carpeta raíz para sincronizar con su unidad. Puedes presionar Entery usará el predeterminado ~/OneDrive. Si la ruta no existe, se creará. Lo mismo para la ruta al archivo de ignorar que desea usar, puede presionar Entery usará el predeterminado ~/.config/onedrived/ignore_v2.txty crearlo, si es necesario.

  4. Verifique la salida del comando a continuación para mostrar la información sobre todas las unidades disponibles y configuradas. Debería mostrar la unidad que acaba de configurar con la configuración correcta debajo del título Drives that have been set up:

    onedrived-pref drive list
    

Lanzando el demonio

Ahora que su unidad está configurada, debe intentar iniciar el onedriveddemonio. Recomiendo iniciarlo primero en modo de depuración, en caso de que surja algún problema. Esto comenzará onedriveden primer plano:

onedrived start --debug

Si todo está bien y el comando no se bloquea y sale, intente colocar algunos archivos en su carpeta local de OneDrive y vea si se sincroniza. Probablemente debería poder verificar eso visitando la aplicación web OneDrive en https://www.office.com y verificando si los archivos que agregó localmente están apareciendo allí.

Puede salir del onedrivedproceso en su terminal nuevamente presionando Ctrl+ C.

Para iniciar onedrivednormalmente, como daemon en segundo plano, ejecútelo con:

onedrived start

Probablemente debería agregar este comando a sus Aplicaciones de inicio, para que se inicie automáticamente cada vez que inicie sesión. Consulte ¿Cómo inicio las aplicaciones automáticamente al iniciar sesión? para eso.

Contenedor para notificaciones de error

Si desea recibir notificaciones de escritorio cada vez que onedrivedregistra un error (por ejemplo, una sincronización de archivo fallida), aquí hay un script de envoltura que analiza el archivo de registro en tiempo real y utiliza el envío de notificaciones para mostrarlo.

Puede iniciar el script del contenedor sin argumentos (o ponerlo en sus aplicaciones de inicio automático) en lugar del onedrived startcomando.

#!/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
fuente
Todavía recibo el mensaje "No se pudo autorizar onedrived: Interaction_required". después de ingresar el segundo enlace para autenticar la cuenta ODfB. ¿Alguna idea de por qué esto podría suceder?
Jimakos
@Jimakos Lo siento, nunca encontré ese mensaje. Ni idea por desgracia.
Byte Commander
1

rclone es compatible con OneDrive para la Empresa. Vea un artículo Cómo montar OneDrive en Linux usando Rclone (compatible con cuentas comerciales y personales) - Blog de levantamiento de Linux para su uso.

Aquí está mi ejemplo para configurar un nuevo control remoto onedrive1con rclone 1.48.0 (en 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

La URL de la unidad 0 termina /ElementinnerHTMLy no contiene archivos en mi caso.

Luego, móntelo en un directorio local a través de la línea de comandos, rclone-browser o web GUI desde v1.49 .

criticabug
fuente