Blog Linux Avante

Como manter o OneDrive em sincronia com uma pasta no Linux usando o OneDrive Free Client Fork

5 de outubro de 2020

OneDrive é um serviço de hospedagem e sincronização de arquivos oferecido pela Microsoft, semelhante ao Dropbox, Google Drive, MEGA e assim por diante. Não há cliente Microsoft OneDrive oficial para Linux, mas ainda é possível manter seus arquivos OneDrive em sincronia (com monitoramento de arquivos em tempo real) com uma pasta em sua máquina Linux, e este artigo mostrará como, usando um fork of Cliente gratuito OneDrive que ainda é mantido (um cliente OneDrive de linha de comando para Linux).

Cliente gratuito OneDrive para Linux (fork)

Há algum tempo, escrevi sobre montar o OneDrive no Linux usando Rclone (com suporte a contas comerciais e pessoais). Alguns usuários podem preferir manter seus arquivos do OneDrive sincronizados com uma pasta em sua máquina Linux (ter os arquivos no disco após a sincronização ser realizada, permitindo o acesso mesmo quando o computador está offline), apenas fazendo upload/download das alterações em vez de montar o OneDrive, e neste artigo faremos exatamente isso usando um fork do OneDrive Free Client.

O cliente gratuito OneDrive original foi abandonado no outono de 2018, mas a ferramenta foi bifurcada alguns meses depois com o mesmo nome, estando em constante desenvolvimento desde então.

O fork do OneDrive Free Client é uma ferramenta completa para interagir e sincronizar o OneDrive no Linux, apresentando:

  • Cache de estado
  • Monitoramento de arquivos em tempo real com Inotify
  • Validação de upload / download de arquivo para garantir a integridade dos dados
  • Uploads recuperáveis
  • Suporte OneDrive for Business (parte do Office 365)
  • Pastas compartilhadas (OneDrive Personal)
  • Bibliotecas compartilhadas do SharePoint / Office 365
  • Notificações da área de trabalho via libnotify
  • Capacidade de operação a seco para testar alterações de configuração
  • Evita a exclusão acidental de dados do OneDrive após a alteração da configuração

Como o projeto original, o fork do OneDrive Free Client não tem uma interface gráfica do usuário, então deve ser usada na linha de comando, embora tenha notificações na área de trabalho que permitem que você saiba sobre o status de sincronização e qualquer erro de sincronização que ocorra .

Também é importante observar que enquanto as alterações locais são carregadas imediatamente para a conta Microsoft OneDrive vinculada, as alterações remotas são atrasadas até a próxima sincronização ao usar --monitor (este modo de 'monitor' permite que o OneDrive Free Client monitore continuamente seu sistema de arquivos local para alterações e carregue-os quando detectados). Por exemplo. ao executar esta ferramenta como um serviço, o intervalo de monitoramento do OneDrive Free Client é de 45 segundos, portanto, pode levar até 45 segundos para que as alterações remotas sejam sincronizadas com sua unidade local.

Quanto às pastas compartilhadas, para contas pessoais do OneDrive, tudo que você precisa fazer é adicioná-las ao seu OneDrive. Faça isso acessando o site do OneDrive e fazendo login em sua conta, em seguida, vá para a lista de arquivos compartilhados, clique com o botão direito na pasta que deseja sincronizar e clique em "Adicionar ao meu OneDrive". Para contas OneDrive Business ou Office 365, pastas compartilhadas atualmente não são suportadas.

Como instalar o cliente gratuito OneDrive (fork) no Debian (e Ubuntu, etc.), Fedora e mais

O OneDrive Free Client (fork) para documentação do Linux menciona que esta ferramenta está disponível nos repositórios Fedora, em AUR para Arch Linux / Manjaro, em slackbuilds.org para Slackware e no canal instável no NixOS.

A ferramenta também está disponível nos repositórios oficiais do Debian e do Ubuntu, embora isso não seja mencionado na documentação (editar: a documentação foi atualizada para refletir isso). Para o Ubuntu, o fork está disponível apenas no Ubuntu 19.04, 19.10 e 20.04, enquanto o Ubuntu 18.04 ainda tem o antigo e não mantido OneDrive Free Client (que não tenho certeza se ainda funciona, mas mesmo que funcione, tem muitos bugs que nunca será corrigido). Quanto ao Debian, este pacote OneDrive está disponível em Sid e Bullseye.

Portanto, para instalar o OneDrive Free Client (fork) dos repositórios oficiais no Fedora, Debian / Ubuntu, use:

  • Instalando OneDrive Free Client (fork) no Fedora:

Comandos para usar no terminal

sudo dnf install onedrive

  • Instalando OneDrive Free Client (fork) no Solus OS:

Comandos para usar no terminal

sudo eopkg install onedrive

  • Instalando OneDrive Free Client (fork) no Debian Sid ou Bullseye/Ubuntu 20.10, 20.04 e 19.10 e distribuições Linux baseadas nesses lançamentos do Ubuntu (como Pop!_OS, Linux Mint, etc.)/Raspbian Testing/Kali Linux:

Comandos para usar no terminal

sudo apt install onedrive

*O desenvolvedor recomenda instalar a versão mais recente do código-fonte até mesmo no Ubuntu 19.10, já que a versão nos repositórios é bem antiga. Quanto ao Debian Buster e Ubuntu 18.04 (e Pop!_OS 18.04, Linux Mint 19., OS 5 ou 5.1 elementar, etc.), você precisará construir o OneDrive Free Client (fork) a partir da fonte** conforme explicado em seu wiki, porque a versão nos repositórios é o aplicativo antigo e sem manutenção.

No Ubuntu 20.04 (e Linux Mint 20) e 20.10, você pode instalar o OneDrive mais recente usando um PPA:

Comandos para usar no terminal

sudo add-apt-repository ppa: yann1ck / onedrive

sudo apt install onedrive

Para outras distribuições Linux, veja se você tem um pacote "onedrive" nos repositórios e instale-o, ou compile a partir da fonte

Uma imagem Docker do OneDrive Free Client (fork) também está disponível.

Como usar o OneDrive Free Client (fork) para sincronizar o Microsoft OneDrive com uma pasta em sua máquina Linux

1. Autorize o OneDrive Free Client (fork) para Linux com sua conta do Microsoft OneDrive.

Para Office365 / acesso a uma unidade de grupo do Sharepoint no Office 365 comercial ou educacional, consulte as instruções nesta página.

Para contas pessoais, abra um terminal e execute:

Comandos para usar no terminal

onedrive

Ao executá-lo pela primeira vez, o terminal onde você executou 'onedrive' mostra uma mensagem sobre a autorização deste aplicativo, visitando um link. Copie o link mostrado no terminal e cole-o em um navegador da web. Depois de fazer login em sua conta da Microsoft, você verá uma página perguntando se deseja permitir que este aplicativo acesse suas informações - clique em Sim.

Depois de clicar em Sim, você chegará a uma página em branco. Tudo bem, é para ser assim. Agora você precisa copiar o URL dessa página em branco e colá-lo no terminal onde está autorizando a ferramenta onedrive com sua conta do OneDrive.

Depois disso, você verá uma mensagem no terminal dizendo que Nenhuma sincronização do OneDrive será realizada sem que nenhum desses dois argumentos esteja presente. Isso ocorre porque não tentamos sincronizar nenhum arquivo, apenas autorizamos o aplicativo onedrive com sua conta do OneDrive, portanto, ignore-o.

2. Primeira sincronização entre o OneDrive e seu sistema de arquivos local.

Após a autorização, você pode executar uma sincronização dos arquivos do OneDrive em nuvem com o disco local. A ferramenta de linha de comando onedrive baixa todos os arquivos do OneDrive em ~ / OneDrive (uma pasta do OneDrive localizada em seu diretório inicial). Você não precisa criar esta pasta, pois a ferramenta onedrive a criará para você.

Vamos realizar uma simulação (sincronização de teste) que não executa nenhuma alteração real para garantir que este cliente gratuito OneDrive para Linux funcione corretamente, usando:

Comandos para usar no terminal

onedrive --synchronize --verbose --dry-run

Se tudo estiver certo, vamos começar a sincronizar seus arquivos do OneDrive para a pasta local ~ / OneDrive. Você pode escolher sincronizar todos os seus arquivos e pastas do OneDrive com a pasta local do OneDrive (etapa 2A abaixo) ou sincronizar apenas alguns arquivos e pastas (sincronização seletiva - etapa 2B abaixo).

2A. Para sincronizar TODOS os seus arquivos em nuvem do OneDrive com o disco local (para ~ / OneDrive), use:

Comandos para usar no terminal

onedrive --synchronize

Isso é apenas para a sincronização inicial. Para que o OneDrive Free Client para Linux seja executado em segundo plano e sincronize os arquivos quando as alterações forem detectadas, consulte a etapa 3 abaixo (habilitando o serviço systemd).

2B. Ativando e usando a sincronização seletiva.

E se você quiser sincronizar vários diretórios e arquivos, mas não todos eles? Então você vai querer usar o recurso de sincronização seletiva disponível com este cliente de linha de comando OneDrive para Linux.

A sincronização seletiva é um recurso que permite especificar os arquivos e diretórios a serem sincronizados entre o OneDrive e seu sistema de arquivos local, ignorando todos os outros diretórios e arquivos.

É muito importante observar que o OneDrive Free Client para Linux não remove nenhum diretório ou arquivo já sincronizado do seu disco, caso você os exclua posteriormente por meio de sincronização seletiva. O que isso faz os exclui de futuras sincronizações.

Exemplo: se você permitir apenas que o OneDrive sincronize a Pasta1 e a Pasta2, se posteriormente você adicionar a Pasta3 ao diretório do OneDrive em seu computador, esta Pasta3 não será sincronizada com a sua conta OneDrive; mas se você tiver Folder1, Folder2 e Folder3 sincronizado com sua conta OneDrive, então decida permitir apenas que Folder1 e Folder2 sejam sincronizados, Folder3 não será removido do diretório OneDrive em sua máquina Linux, mas quaisquer alterações feitas nesta pasta não serão sincronizadas com sua conta OneDrive.

Você pode habilitar a sincronização seletiva para o OneDrive Free Client criando um arquivo chamado sync_list em~/.config/onedrive. Edite este arquivo sync_list e adicione o caminho relativo para os arquivos e diretórios que deseja sincronizar com o OneDrive, cada um em uma nova linha. Todos os arquivos e diretórios que não corresponderem a nenhuma linha deste arquivo serão ignorados na sincronização.

Exemplo. Digamos que eu tenha muitos arquivos e pastas em minha conta do OneDrive, mas quero sincronizar apenas 2 diretórios, chamados Backup e Fotos, e 3 arquivos chamados file1.ods, file2.odt e file3.odt, todos os 3 arquivos em Documentos pasta na minha conta OneDrive. Nesse caso, o arquivo ~/.config/onedrive/sync_list precisaria conter as seguintes linhas:

Comandos para usar no terminal

Backup

Photos

Documents/file1.odt

Documents/file2.odt

Documents/file3.odt

A primeira vez que você usar a sincronização seletiva, e todas as vezes depois de fazer qualquer alteração no arquivo ~/.config/onedrive/sync_list, você deve executar uma ressincronização completa usando--resync, como este:

Comandos para usar no terminal

onedrive --synchronize --resync

Se você habilitou o serviço systemd do OneDrive Free Client (etapa 3 abaixo) e ele está em execução no momento, você receberá um erro ao tentar executar este comando, dizendo Initializing the Synchronization Engine ... A database statement execution error occurred: disk I/O error. Segmentation fault (core dumped). Nesse caso, você precisará interromper o serviço systemd onedrive, executar o comando resync e iniciar o serviço novamente, assim:

Comandos para usar no terminal

systemctl --user stop onedrive

onedrive --synchronize --resync

systemctl --user start onedrive

Também há opções para pular um diretório, pular arquivos, dotfiles e links simbólicos, que estão disponíveis por meio do arquivo de configuração do OneDrive Free Client para Linux (consulte a etapa 5 abaixo).

Assim como para a sincronização normal completa, isso é apenas para a sincronização inicial. Para que o OneDrive Free Client para Linux seja executado em segundo plano e sincronize os arquivos quando forem detectadas alterações, consulte a etapa 3 abaixo.

3. Habilite o serviço systemd OneDrive Free Client para Linux.

Para que o OneDrive Free Client para Linux seja executado como um serviço, inicie automaticamente com seu computador e observe constantemente por qualquer alteração do OneDrive, sincronizando os arquivos e pastas alterados, vamos habilitar seu serviço systemd.

Quando usado como um serviço systemd, este cliente de linha de comando OneDrive para Linux é executado no modo monitor (--monitor), o que permite monitorar continuamente seu sistema de arquivos local para alterações nos arquivos. Com muitos arquivos, porém, isso pode gerar problemas (não é possível adicionar um novo relógio inotify) causados pelo ambiente local. A solução para isso é aumentar o número máximo de relógios do usuário. Esta página mostra como fazer isso no Debian / RedHat ou similar (Ubuntu, Fedora, etc.) e Arch Linux / Manjaro.

Para habilitar e iniciar o serviço Systemd OneDrive (com notificações habilitadas) para seu usuário atual (não root), execute:

Comandos para usar no terminal

systemctl --user enable onedrive

systemctl --user start onedrive

Verifique o status do serviço systemd do OneDrive Free Client com:

Comandos para usar no terminal

systemctl status --user onedrive

Verifique apenas os registros:

Comandos para usar no terminal

journalctl --user-unit onedrive -f

relacionado ao systemd: chkservice é um gerenciador de unidades systemd com interface de usuário de terminal (nova versão disponível)

Para outras maneiras de executar o serviço OneDrive (como usuário root, via init.d), consulte sua documentação.

É muito importante observar que você não deve remover a pasta ~/OneDrive (ou qualquer caminho que esteja usando para a pasta OneDrive) enquanto estiver com o serviço systemd fork do OneDrive Free Client em execução, pois isso removerá todos seus arquivos do OneDrive (você ainda terá acesso a eles no site do OneDrive, na Lixeira).

5. (Opcional) Opções de configuração.

Caso deseje usar um local personalizado para a pasta OneDrive, você deseja alterar o intervalo de monitoramento de arquivos alterados e muito mais, você pode usar o arquivo de configuração do OneDrive Free Client.

No Debian, Ubuntu e derivados, você encontrará um exemplo de configuração em /usr/share/doc/onedrive/config. Outra distribuição Linux ou se você não conseguir encontrar este arquivo de configuração, pode obtê-lo na página do projeto OneDrive Free Client GitHub, aqui está um link direto.

Para alterar a configuração padrão do OneDrive Free Client para Linux para o seu usuário, copie o arquivo de configuração para ~/.config/onedrive. Por exemplo. no Debian / Ubuntu e outras distribuições Linux onde este arquivo está instalado em /usr/share/doc/onedrive/config, copie-o para~/.config/onedrive usando:

Comandos para usar no terminal

cp /usr/share/doc/onedrive/config ~/.config/onedrive/

Agora, para alterar algumas opções do cliente gratuito OneDrive, abra o arquivo ~/.config/onedrive/config com um editor de texto. Todas as opções lá estão comentadas (eles têm # na frente deles); para alterar um dos padrões, descomente a linha e, em seguida, defina o valor que deseja usar.

As opções no arquivo de configuração devem ser autoexplicativas na maioria dos casos. Para obter ajuda, consulte a página de manual do onedrive (man onedrive).

Para obter mais informações sobre como usar o OneDrive Free Client no Linux, incluindo como usá-lo com várias contas OneDrive, habilitando o suporte de proxy para o serviço systemd OneDrive e muito mais, verifique o OneDrive Free Client documentação de uso.

Confira a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.