Upload e sincronização com Google Drive por linha de comando - LCAD-UFES/carmen_lcad GitHub Wiki

Esse procedimento é voltado para casos em que se queira fazer upload ou sincronização de pastas muito grandes para o Google Drive do LCAD, especialmente a partir de máquinas sem interface gráfica, como foi feito com os logs existentes na máquina LCAD 10.

Obtenção de client_id da API do Google Drive

Obs: Esse procedimento já foi efetuado para a conta [email protected]. Se você tem acesso a essa conta, pule para a seção seguinte.

Se não tiver acesso à conta citada, crie sua própria client_id seguindo estes passos:

  • Acesse console.developers.google.com e faça login com alguma conta do Google sob seu controle (não precisa ser a mesma do Drive ao qual será feito o upload).
  • No canto superior esquerdo, clique em "Selecione um projeto" e em seguida "Novo Projeto". Crie um projeto com o nome que preferir.
  • Na parte superior da tela que surgirá, clique em Ativar APIs e Serviços. Desça um pouco a tela para encontrar Google Drive API e clique nela. Em seguida clique em Ativar.
  • No menu que estará à esquerda clique em Credenciais, e em seguida na opção "Configurar Tela de Consentimento". Em seguida preencha somente o campo "Nome do aplicativo", com um nome qualquer, desça até o fim e clique em Salvar.
  • Na nova tela clique em "Criar credenciais" e selecione "ID do cliente OAuth". Marque a opção "Outro" e dê um nome qualquer (pode ser o mesmo do aplicativo). Clique em Criar.
  • Serão exibidos o ID de cliente (client ID) e a chave secreta (client secret). Salve essas informações, pois serão necessárias na configuração do RClone. (Pule a seção abaixo e vá para Instalação do RClone)

Obtenção das credenciais (caso tenha acesso à conta [email protected])

  • Acesse console.developers.google.com e faça login com a conta
  • Clique em "Selecione um projeto" no canto superior esquerdo e escolha "Drive Uploader".
  • No menu que estará à esquerda, clique em Credenciais.
  • Clique em "Drive Uploader". Na tela seguinte se encontram os valores de ID do cliente (client ID) e chave secreta do cliente (client secret), que serão necessários na etapa seguinte.

Instalação do RClone

Caso ainda não esteja instalado, instalar na máquina o Rclone com o seguinte comando:

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

Em seguida, para a configuração inicial:

rclone config

Preencha as opções seguintes como abaixo (substitua o que estiver entre asteriscos pelos valores corretos):

No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> *escolha o nome que quiser (exemplo "logs-drive")*
Storage> drive
client_id> *obtido na seção anterior*
client_secret> *obtido na seção anterior*
scope> 1
root_folder_id>
service_account_file>
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> n
Enter verification code> *acesse o link fornecido em algum browser, faça login na conta onde está ativada a API e insira aqui o código recebido*
Configure this as a team drive?
y) Yes
n) No
y/n> n
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

Utilização

A função que se pretende dar a essa ferramenta se resume em boa parte a um só comando.

rclone sync source:path dest:path [flags]

"dest" se refere ao nome dado ao remote na configuração inicial. Caso o caminho "dest:path" fornecido seja uma pasta que não existe no drive, será criada uma pasta com aquele nome. Se for uma pasta já existente, ela será sincronizada com a local (útil caso tenham ocorrido modificações ou se o upload inicial tiver sido interrompido).

Exemplo de uso:

rclone sync /dados/all_logs logs-drive:all_logs --progress