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).
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:
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.
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:
sudo dnf install onedrive
sudo eopkg install onedrive
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:
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.
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:
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:
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:
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:
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:
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:
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:
systemctl --user enable onedrive
systemctl --user start onedrive
Verifique o status do serviço systemd do OneDrive Free Client com:
systemctl status --user onedrive
Verifique apenas os registros:
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:
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.
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
How To Keep OneDrive In Sync With A Folder On Linux Using OneDrive Free Client Fork