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:
- copy: copia arquivos de uma origem para um destino, ignorando arquivos idênticos.
- sync: faz origem e destino serem idênticos, modificando apenas o destino.
- move: move arquivos de uma origem para um destino.
- bisync: realiza sincronia bidirecional entre dois caminhos.
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:
- A primeira execução do comando
rclone bisyncdeve sempre acompanhar a flag--resync.- A flag
--verboseaumenta as informações geradas em log, o que pode ajudar a depurar problemas.- A flag
--dry-runserve para mostrar quais mudanças seriam feitas, sem realizá-las.- Daqui em diante, caso tudo tenha dado certo, deve-se remover as flags
--resynce--dry-run.
Vamos, agora, aprimorar o comando de sincronia bidirecional, acrescentando outras flags:
--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).--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.--log-file: a saída do comandorcloneserá 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.