Como sincronizar o OneDrive Business / Office 365 no Linux?

24

O Microsoft OneDrive Business / Office 365 Pro oferece 1 TB de armazenamento em nuvem, mas infelizmente nunca houve um método para sincronizá-lo no Linux.

Sayed Metwaly
fonte
2
Bem-vindo ao Ask Ubuntu ! Somos um site de perguntas e respostas, não um fórum. Atualmente, você tem uma pergunta e uma resposta na seção de perguntas designadas. Por favor edite seu post para remover a resposta e pós que, em resposta a seção abaixo (deve haver um botão na parte inferior da página). Obrigado!
Seth
Possível duplicata de Como sincronizar o onedrive para empresas?
precisa saber é

Respostas:

7

Atualmente, o onedrive-d experimental é um programa de código aberto que pode sincronizar apenas contas pessoais do OneDrive, pois não aceita links do Microsoft Sharepoint. Aqui está um método para sincronizar o OneDrive Business / Office 365 usando o GoodSync para Linux , que é gratuito para uso pessoal.

  1. Instale a versão adequada na sua máquina Linux, por exemplo:

    ./goodsync-linux-x86_64-release.run
    

    Resposta pelo n o tanto para configuração GoodSync Connect e GsServer Web UI.

  2. Abra o OneDrive em um navegador da web. selecione "Voltar ao Classic OneDrive" no lado inferior direito.
  3. O endereço da web no seu navegador agora se parece com: https://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents/Forms/All.aspxe com base nele obter o seu link de sincronização que será office365://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents.
  4. Crie um novo arquivo na subpasta .goodsync em sua casa:

    gedit ~/.goodsync/jobs.tix
    
  5. Digite o seguinte código no arquivo e salve-o:

    <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. Inicie o processo de sincronização:

    gsync sync "OneDrive_Sync"
    
  7. Nesta etapa, o seu navegador abrirá a página do OneDrive / Office 365 e solicitará sua autorização para permitir que o goodsync acesse sua conta. Depois de inserir suas credenciais, a sincronização será iniciada.

Limitações: A Microsoft não permite solicitações de URL com mais de 270 caracteres e, portanto, o GoodSync NÃO PODE sincronizar arquivos com nomes de caminho longos.

Apreciar!

Sayed Metwaly
fonte
3
Meu navegador não abre a página de autorização na etapa 7. Alguma idéia de como fazê-lo manualmente?
-
3
Meu navegador não está aberto para login também
Haha TTpro
2
Sistema de arquivos no office365: /.../ Documents foi substituído pela nova API do OneDrive V2. Clique em Procurar botão para Re-navegar até a pasta sync onedrive, como New onedrive requer autenticação baseada em navegador (OAuth2)
Ferroao
6

Ubuntu 18.04 e posterior

Há um cliente OneDrive nos repositórios padrão do Ubuntu no Ubuntu 18.04 e posterior. O OneDrive é o sistema de armazenamento em nuvem da Microsoft. Este pacote fornece o cliente de linha de comando especializado em sincronização com o armazenamento em nuvem do OneDrive.

Instale-o com:

sudo apt install onedrive

Na primeira execução, solicita que você se autentique com um link. Após a autenticação, você pode ativar o deamon com systemctl --user enable onedrivee depois systemctl --user start onedrive. Mais explicações podem ser encontradas na página de manual man onedrive. É muito fácil de configurar e leva apenas cerca de cinco minutos.

Mattia_98
fonte
4
Isso não funciona para o OneDrive for Business
tricasse 18/10
1
@tricasse Funciona para o Office 365 Pro
Mattia_98 19/18
2

Embora a onedrivedferramenta original e comumente usada pelo xybu ainda não suporte o OneDrive for Business, mas apenas o OneDrives pessoal. no entanto, existe uma bifurcação deste projeto no GitHub por derrix060 que possui uma implementação de alguma forma funcionando (mas ainda com erros) para o cliente Business.

Aviso: Quando você usa esse método, é altamente recomendável verificar sempre se os arquivos foram sincronizados corretamente, verificando-os on-line em https://www.office.com e / ou usar meu script de wrapper mostrado no final desta página para pelo menos ser informado de quaisquer erros usando as notificações da área de trabalho!

Às vezes, o onedrived parece falhar ao captar algumas alterações ou carregá-las corretamente, deixando o OneDrive em um estado (parcialmente) não sincronizado. Também pode acontecer que ele gere conflitos de mesclagem por algum motivo e renomeie seus arquivos localmente, acrescentando o nome do host entre parênteses e, opcionalmente, um número. Infelizmente não há notificação sobre erros, mas você pode ver as entradas no seu arquivo de log.

Se isso acontecer, você pode tentar sincronizar os arquivos respectivos novamente, por exemplo, tocando neles ou renomeando-os ou a pasta em que estão.

Dica: Parece que a biblioteca onedrived geralmente tem problemas, especialmente com arquivos que foram salvos diretamente na raiz do OneDrive. Provavelmente, é melhor colocar todos os arquivos em subdiretórios em vez de jogá-los diretamente na pasta do OneDrive.

Embora pareça estúpido, também notei que parece causar menos problemas para carregar arquivos através do cliente Web OneDrive e esperar até que sejam sincronizados de volta à sua pasta local (o que pode levar alguns minutos) do que para criar ou copiar / movê-los localmente. Se isso é prático ou totalmente anula, o objetivo do OneDrive depende de sua própria decisão ...

Consulte o arquivo leia-me do projeto para obter instruções completas de instalação, mas aqui está um breve resumo:

Instalação

  1. Verifique se você não tem outra versão do onedrived(ou onedrive-d) instalada.

  2. Instale pacotes de dependência:

    sudo apt install build-essential python3-dev libssl-dev inotify-tools python3-dbus libdbus-1-dev libdbus-glib-1-dev
    
  3. Faça o download do ngrokcliente mais recente para Linux no site oficial em https://ngrok.com/download . O ngrok-clientpacote dos repositórios do Ubuntu é muito antigo e não atende aos requisitos.
    Descompacte o ngrok-stable-linux-amd64.ziparquivo baixado . Ele contém um único ngrokbinário, que você deve colocar em um local no seu $PATH, por exemplo, no /usr/local/bin/.
    A inscrição no ngrok provavelmente não é necessária.

  4. Instale o onedrivedaplicativo Python3 no GitHub usando pip3:

    sudo -H pip3 install git+https://github.com/derrix060/onedriveClient.git
    
  5. Opcionalmente, configure um local do arquivo de log para onedrived, onde você poderá verificar problemas se algo não funcionar corretamente, por exemplo:

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

Configuração da conta e configuração da unidade

Depois que a instalação foi bem-sucedida, você deve configurar sua conta e unidade (s):

  1. Adicione sua conta do OneDrive for Business usando o modo interativo executando:

    onedrived-pref account add -b
    

    O assistente interativo solicitará que você duas vezes abra um link no seu navegador, onde será necessário autorizar o aplicativo com sua conta do Microsoft Business.
    Ele solicitará que você cole o URL para o qual você é redirecionado depois de confirmar a autorização novamente no assistente interativo. Por favor, faça o que foi dito e siga as instruções fornecidas pelo comando.

  2. Verifique se a conta foi adicionada com sucesso, verificando a saída do comando abaixo. Deve ser semelhante e listar a conta com a qual você está conectado:

    $ 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 suas unidades no modo de comando interativo executando:

    onedrived-pref drive set
    

    Você verá uma lista de todas as suas unidades e será solicitado a inserir o número da linha da unidade que deseja adicionar à sua configuração local.
    Você precisa especificar um diretório local que deseja usar como pasta raiz para sincronizar com sua unidade. Você pode simplesmente clicar Entere ele usará o padrão ~/OneDrive. Se o caminho não existir, ele será criado. O mesmo para o caminho para o arquivo ignorar que você deseja usar, basta clicar Entere ele usará o padrão ~/.config/onedrived/ignore_v2.txte criará, se necessário.

  4. Verifique a saída do comando abaixo para exibir as informações sobre todas as unidades disponíveis e configuradas. Ele deve mostrar a unidade que você acabou de configurar com as configurações corretas sob o título Drives that have been set up:

    onedrived-pref drive list
    

Ativando o daemon

Agora que sua unidade está configurada, você precisa tentar iniciar o onedriveddaemon. Eu recomendo iniciá-lo no modo de depuração primeiro, caso haja algum problema que você perderia. Isso começará onedrivedem primeiro plano:

onedrived start --debug

Se tudo estiver correto e o comando não travar e sair, tente colocar alguns arquivos na pasta local do OneDrive e verifique se ele é sincronizado. Provavelmente, você poderá verificar isso visitando o aplicativo Web do OneDrive em https://www.office.com e verificando se os arquivos adicionados localmente estão aparecendo lá.

Você pode sair do onedrivedprocesso no seu terminal novamente pressionando Ctrl+ C.

Para iniciar onedrivednormalmente, como um daemon em segundo plano, execute-o com:

onedrived start

Provavelmente, você deve adicionar este comando aos seus Aplicativos de Inicialização, para que seja iniciado automaticamente sempre que efetuar login. Consulte Como iniciar aplicativos automaticamente no login? por isso.

Wrapper para notificações de erro

Se você deseja receber notificações da área de trabalho sempre que onedrivedregistrar um erro (por exemplo, falha na sincronização de arquivos), aqui está um script de wrapper que analisa o arquivo de log em tempo real e usa o envio de notificação para exibi-lo.

Você pode iniciar o script do wrapper sem argumentos (ou colocá-lo em seus aplicativos de inicialização automática) em vez do 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
fonte
Ainda recebo a mensagem "Falha ao autorizar onedrived: interação_requirida". depois de inserir o segundo link para autenticar a conta ODfB. Alguma idéia de por que isso pode acontecer?
Jimakos
@ Jimakos Desculpe, nunca encontrei essa mensagem. Infelizmente não faço ideia.
Byte Commander
1

O rclone suporta o OneDrive for Business. Consulte um artigo Como montar o OneDrive no Linux usando o Rclone (suporta contas pessoais e empresariais) - Blog do Linux Uprising para uso.

Aqui está o meu exemplo para configurar um novo controle remoto onedrive1com o rclone 1.48.0 (no 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

O URL da unidade 0 termina com /ElementinnerHTMLe não contém arquivos no meu caso.

Em seguida, monte-o em um diretório local via linha de comando, navegador rclone ou GUI da web desde a v1.49 .

critabug
fonte