Blog do Guilherme

Utilizando a função Bisync do Rclone para acessar arquivos do Google Drive no Linux

Quem usa Linux e depende das funcionalidades do Google Drive vai entender o pesadelo que é utilizar a nuvem do Google de forma transparente no sistema; isto é, com a mesma comodidade proporcionada, por exemplo, pelo cliente oficial do Google Drive para sistemas Windows.

Utilizo o ambiente GNOME 48 no Arch Linux. O GNOME possui o componente GNOME Online Accounts, que permite ao usuário efetuar login e integrar contas de diversos serviços (Google, Microsoft 365, Nextcloud etc.) nos aplicativos nativos do sistema. A integração funciona bem para calendário e contatos. Mas deixa muito a desejar para arquivos armazenados no Google Drive: acesso lento, falhas na sincronia, alguns programas reconhecem esses arquivos do Google Drive apenas como read-only...

Cogitei uma migração para o ambiente KDE. Só que a integração com o Google Drive no KDE Plasma 6 é ainda pior. Há relatos de usuários que não conseguem utilizar o Google Drive no Dolphin há mais de 1 ano. Alguns usuários sugerem gambiarras, mas nenhuma solução oficial foi apresentada até agora.

Após muito procurar por alternativas, me deparei com o Rclone. Os próprios desenvolvedores o definem como "o rsync para armazenamento na nuvem". O Rclone é um software livre poderoso, compatível com inúmeros serviços online, dentre eles o Google Drive.

Principais comandos

Dentre as várias funções do Rclone, destacam-se os comandos mais usados:

Cada comando vai satisfazer um cenário/objetivo distinto. No meu caso, que pretendo ter acesso transparente aos meus arquivos do Google Drive no Linux e também às vezes manipular arquivos a partir de outras máquinas ou simplesmente pelo próprio navegador, a função Bisync é a mais indicada.

Instalando o Rclone

No Arch:

pacman -S rclone

No Debian/Ubuntu:

apt install rclone

No Fedora/Red Hat:

yum install rclone

Ou, em último caso, simplesmente execute o script fornecido pelos desenvolvedores:

sudo -v ; curl https://rclone.org/install.sh | sudo bash

Configurações iniciais do Rclone e integração com o Google Drive

Não há segredo aqui. Basta executar o comando rclone config para ser guiado por um processo interativo de configuração inicial via linha de comando.

Em caso de dúvidas, sugiro seguir a documentação oficial que descreve o passo-a-passo para a integração com o Google Drive. Para fins deste tutorial, o nome do drive remoto que eu defini na configuração foi "googledrive".

Configurando o Rclone Bisync

Atenção: é preciso salientar que esta funcionalidade ainda é experimental. O usuário deve usá-la por conta e risco. Nos meus testes iniciais e usando no dia-a-dia, não tive problemas. Antes de tudo, recomendo fortemente a leitura minuciosa do guia oficial.

Vamos criar um diretório no qual os arquivos do Google Drive serão armazenados localmente:

mkdir ~/googledrive/Documentos

Um parêntese: meu Google Drive possui mais de 15 diretórios; no entanto, quero que haja a sincronia bidirecional de apenas 1 desses diretórios com a minha máquina local. Supondo que quero que haja a sincronia somente da pasta "Documentos", vamos executar o comando:

rclone bisync --resync --verbose --dry-run ~/googledrive/Documentos googledrive:Documentos

Explicando:

Vamos, agora, aprimorar o comando de sincronia bidirecional, acrescentando outras flags:

  1. --check-access: medida adicional de segurança que ajuda a evitar a perda de dados (antes, deve-se criar arquivos vazios com o nome "RCLONE_TEST" na raiz das pastas sincronizadas, tanto localmente quanto na nuvem).
  2. --create-empty-src-dirs: por padrão, sem esta flag, o processo de sincronia ignorará a criação e a remoção de diretórios vazios.
  3. --log-file: a saída do comando rclone será armazenada em um log à parte.

Com isso, a partir de agora, nosso comando ficará assim:

rclone bisync ~/googledrive/Documentos googledrive:Documentos --check-access --create-empty-src-dirs --verbose --log-file ~/googledrive/rclone.log

Automatizando o processo de sincronia

Vamos automatizar o processo periódico de sincronia bidirecional utilizando o software Cronie. Após instalar o Cronie e suas dependências, deve-se habilitar e iniciar o serviço utilizando o systemd:

systemctl enable --now cronie.service

O próximo passo é criar um script. Vamos nomeá-lo rclone.sh:

echo "/usr/bin/rclone bisync ~/googledrive/Documentos googledrive:Documentos --check-access --create-empty-src-dirs --verbose --log-file ~/googledrive/rclone.log" > ~/googledrive/rclone.sh

Agora é preciso torná-lo executável:

chmod +x ~/googledrive/rclone.sh

Para editar as tarefas agendadas:

crontab -e

E, por fim, vamos configurar a periodicidade de execução do script rclone.sh, acrescentando a seguinte linha ao crontab:

*/15 * * * * ~/googledrive/rclone.sh

No exemplo acima, o script será executado de 15 em 15 minutos. Os registros de execução do script rclone.sh serão armazenados continuamente no arquivo ~/googledrive/rclone.log.

#linux #software