Grive2, um cliente Google Drive de linha de comando gratuito e de código aberto para Linux que suporta sincronização parcial, é bastante popular entre os usuários do Linux, mas muitos provavelmente não sabem que a ferramenta inclui uma solução integrada para sincronização automática de arquivos do Google Drive com uma pasta local.
A página do projeto Grive2 GitHub foi atualizada recentemente para incluir instruções para habilitar uma solução de sincronização automática: sincronização programada (verifica as alterações no Google Drive a cada 5 minutos e sincroniza as alterações localmente) e sincronização no arquivo local eventos de alteração (carrega automaticamente arquivos novos e alterados do sistema de arquivos local conforme eles acontecem) com o Google Drive, usando inotify com unidades systemd.
As unidades do systemd, bem como um script de sincronização, estão diretamente disponíveis no repositório Grive2 e são instalados automaticamente ao instalar o aplicativo. Eles não são novos (houve uma correção recentemente para lidar com diretórios com espaços em seus nomes), mas isso não foi mencionado na página do projeto até recentemente, portanto, muitos usuários podem ter perdido isso.
Graças a esta funcionalidade, Grive2 pode oferecer uma experiência próxima à do cliente oficial do Google Drive (apenas do ponto de vista da sincronização, pois não há integração com o gerenciador de arquivos, etc.).
A sincronização automática do Grive2 não é perfeita (mas deve ser o suficiente para a maioria dos usuários). Graças ao inotify (usado por meio de um Bash script), as alterações de arquivos locais são carregadas instantaneamente para o Google Drive, mas os arquivos alterados no Google Drive não são imediatamente baixados para o sistema de arquivos local porque Grive2 não pode detectar automaticamente quando as alterações ocorrem no Google Drive. Para contornar esse problema, Grive2 usa uma unidade systemd timer para verificar as alterações remotas (definido para 5 minutos por padrão).
A página inicial do wiki Grive2 menciona que um modo daemon pode ser implementado no futuro, para evitar a execução de Grive2 várias vezes para sincronizar arquivos.
Grive2 é um fork do cliente Grive Google Drive original para Linux. O projeto original foi abandonado, mas Vitaliy Filippov o bifurcou com o nome Grive2 e adicionou suporte para Drive REST API, suporte para sincronização parcial, entre outras melhorias.
Os recursos do Grive 2 incluem:
.griveignore
. Você também pode sincronizar apenas um subdiretório com grive -s subdir
--no-remote-new
(baixe apenas os arquivos que foram alterados no Google Drive e já existem localmente) e os modos --upload-only
(não baixe nada do Google Drive, apenas carregue as alterações locais)Para ver tudo o que ele tem a oferecer, execute man grive
após instalá-lo.
O aplicativo não oferece suporte a Documentos do Google ou links simbólicos. Ele também não oferece suporte à sincronização automática direta (aguardando continuamente por alterações no sistema de arquivos ou no Google Drive e fazendo upload automaticamente das alterações), mas está disponível graças ao script inotify e às unidades do systemd que acompanham o Grive 2, que mencionei em o início do artigo.
Para saber como instalar o Grive2, consulte a página instalação. Certifique-se de baixar o código Git mais recente, e não a versão mais recente, porque a última é bem antiga.
As instruções incluem etapas para criar um pacote Debian (que você pode usar no Debian, Ubuntu, Linux Mint, elementaryOS e outras distribuições Linux baseadas em DEB/Apt), mas você também pode baixar os binários DEB do Grive2 para Ubuntu ou Linux Mint daqui (você também pode adicionar o PPA se quiser atualizações automáticas). Apesar do fork ser chamado de Grive2, o binário continua a ser chamado de grive
, como o projeto antigo e sem manutenção. Certifique-se de baixar a última compilação do Grive2 para a sua versão do Ubuntu (você pode olhar a data para ver qual é a mais recente).
Agora que o Grive2 está instalado, vamos usá-lo para sincronizar seus arquivos do Google Drive com um diretório local e habilitar sincronizações programadas e sincronizar recursos de alterações de arquivos.
1. Crie uma pasta em seu diretório inicial onde sincronizaremos os arquivos do Google Drive.
A pasta local do Google Drive DEVE ser criada no diretório inicial do usuário, caso contrário, os scripts de sincronização automática não funcionarão. Eu sugiro que você crie uma pasta chamada GoogleDrive
em seu diretório inicial, usando um gerenciador de arquivos ou digitando este comando:
mkdir ~/GoogleDrive
O artigo presumirá que é o que você usou de agora em diante, portanto, certifique-se de alterar isso nas instruções abaixo se escolher um nome de pasta diferente.
2. Autorize o Google Drive com Grive 2 e execute a sincronização inicial.
A primeira vez que você executa o Grive2, precisa executá-lo com o argumento -a
para autorizá-lo com o seu Google Drive. Navegue na pasta GoogleDrive recém-criada em seu diretório inicial a partir da linha de comando e execute grive -a
nesta pasta:
cd ~/GoogleDrive
grive -a
Um link deve ser exibido na linha de comando. Você precisa copiar este link e colá-lo em um navegador da web. Quando solicitado, aceite dar permissão ao Grive2 para acessar seus arquivos do Google Drive e copiar o código exibido na próxima página. De volta ao terminal onde você executou Grive2, cole o código de autorização e pressione a tecla Enter
.
Grive agora deve começar a sincronizar seus arquivos do Google Drive com a pasta de seu sistema de arquivos local.
3. Ative a sincronização automática do Grive 2 (sincronizações programadas - verifique as alterações no Google Drive a cada 5 minutos e sincronize com a pasta local, e sincronize nos eventos de alteração de arquivo local - carregue automaticamente arquivos novos e alterados do sistema de arquivos local conforme eles acontecem) do Google Drive com uma pasta local.
Para habilitar e iniciar as unidades do systemd Grive2, use estes comandos (não os execute como root):
systemctl --user enable grive-timer@$(systemd-escape GoogleDrive).timer systemctl --user start grive-timer@$(systemd-escape GoogleDrive).timer systemctl --user enable grive-changes@$(systemd-escape GoogleDrive).service systemctl --user start grive-changes@$(systemd-escape GoogleDrive).service
GoogleDrive de cada um desses 4 comandos representa o nome da pasta do Google Drive criada em seu diretório inicial na etapa 1. Se você usou um nome de pasta diferente de GoogleDrive
, substitua-o nesses comandos pelo nome que você deu à pasta. A pasta PRECISA estar no seu diretório pessoal ou então não funcionará!
Caso deseje sincronizar várias contas do Google Drive, você pode repetir as etapas acima usando um nome de pasta diferente (use uma pasta diferente para cada conta). Repita os comandos systemctl
acima para cada pasta que deseja sincronizar automaticamente com o Google Drive.
Você também pode tentar o Grive Indicator, um novo Indicador Grive Gtk que usa o Grive2 para sincronizar com o Google Drive. Ele não parece suportar o recurso de sincronização automática integrado do Grive2, porém, e em vez disso, parece usar um temporizador simples para sincronizar arquivos com o Google Drive em um determinado intervalo.
Você também pode estar interessado em:
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
Cli Google Drive Client Grive2: How To Enable Automatic Synchronization