cumbucadev / cinemaempoa

Site que agrega filmes em cartaz em algumas das diversas salas de cinema de Porto Alegre.
https://cinemaempoa.com.br
28 stars 15 forks source link

Automatizar upload do backup do banco de dados para o google drive #101

Open guites opened 1 week ago

guites commented 1 week ago

Abrindo esse issue estilo tiro no escuro, pq não sei se tem como fazer isso.

No servidor do hetzner eu tenho um cronjob que faz um backup do banco todo dia à meia noite.

A pasta de backups fica assim:

guites@debian-2gb-ash-1:~$ ls -la backups/
total 744
drwxr-xr-x 2 guites guites  4096 Oct 15 00:00 .
drwx------ 7 guites guites  4096 Oct 15 08:33 ..
-rw-r--r-- 1 guites guites 14742 Sep 24 22:05 2024-09-25T01:05:38+00:00.zip
-rw-r--r-- 1 guites guites 14742 Sep 24 22:06 2024-09-25T01:06:35+00:00.zip
-rw-r--r-- 1 guites guites 18880 Sep 26 00:00 2024-09-26T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 22334 Sep 27 00:00 2024-09-27T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 24205 Sep 28 00:00 2024-09-28T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 25706 Sep 29 00:00 2024-09-29T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 26365 Sep 30 00:00 2024-09-30T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 26365 Oct  1 00:00 2024-10-01T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 28283 Oct  2 00:00 2024-10-02T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 29084 Oct  3 00:00 2024-10-03T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 31112 Oct  4 00:00 2024-10-04T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 34826 Oct  5 00:00 2024-10-05T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 36643 Oct  6 00:00 2024-10-06T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 36878 Oct  7 00:00 2024-10-07T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 37405 Oct  8 00:00 2024-10-08T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 38340 Oct  9 00:00 2024-10-09T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 38973 Oct 10 00:00 2024-10-10T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 42751 Oct 11 00:00 2024-10-11T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 44374 Oct 12 00:00 2024-10-12T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 44955 Oct 13 00:00 2024-10-13T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 45796 Oct 14 00:00 2024-10-14T00:00:01-03:00.zip
-rw-r--r-- 1 guites guites 46793 Oct 15 00:00 2024-10-15T00:00:01-03:00.zip

Será que tem uma forma de automaticamente enviar o último backup pra esse diretório do google drive https://drive.google.com/drive/folders/1c57i0LdFqWWt7QwdI7cLFQhgpMjuiqUE ?

Assim poderíamos colocar no README esse link, pra novos devs conseguirem uma versão atualizada do banco.

ps. tem uma questão de segurança que é referente à tabela users, pq a gente taria compartilhando a versão criptografada da senha. Não sei se isso é um grande problema, mas daria pra sobrescrever a coluna password.

guites commented 1 week ago

@camilamaia 👀 @vianaz 👀 (sorrateiramente marcando quem eu sei que manja de devops)

jbonadiman commented 5 days ago

Olá! Acabei de chegar aqui e depois de dar uma passeada pelas issues, resolvi ajudar nessa que tá na mão 👋

Dá pra fazer isso tranquilo com o rclone. Na máquina do Hetzner você teria que instalar o rclone e depois usar o rclone config pra adicionar a configuração do Google Drive (a autenticação é interativa e tranquila, talvez haja maior dificuldade se não tiver um browser na máquina, mas ainda dá pra fazer). Depois de ter a configuração você pode fazer o backup efetivamente usando o rclone copy ou rclone sync, dependendo de como você prefere deixar o setup. No cenário que você descreveu de simplesmente passar o banco mais recente pro Drive, acho que o rclone copy atende bem. Você também pode fazer o backup dessa configuração do rclone se quiser, ela fica no diretório apontado por rclone config paths.

guites commented 4 days ago

Opa! Muito obrigado pela indicação. Vou ler a documentação com calma de noite, mas parece promissor.

Realmente não tem browser na máquina pois eu acesso via ssh. Talvez tenha como gerar um token do Google ou algo assim

Em dom., 20 de out. de 2024 14:44, João Vitor Bonadiman < @.***> escreveu:

Olá! Acabei de chegar aqui e depois de dar uma passeada pelas issues, resolvi ajudar nessa que tá na mão 👋

Dá pra fazer isso tranquilo com o rclone https://rclone.org/. Na máquina do Hetzner você teria que instalar o rclone https://rclone.org/install/ e depois usar o rclone config https://rclone.org/commands/rclone_config/ pra adicionar a configuração do Google Drive (a autenticação é interativa e tranquila, talvez haja maior dificuldade se não tiver um browser na máquina, mas ainda dá pra fazer). Depois de ter a configuração você pode fazer o backup efetivamente usando o rclone copy https://rclone.org/commands/rclone_copy/ ou rclone sync https://rclone.org/commands/rclone_sync/, dependendo de como você prefere deixar o setup. No cenário que você descreveu de simplesmente passar o banco mais recente pro Drive, acho que o rclone copy atende bem. Você também pode fazer o backup dessa configuração do rclone se quiser, ela fica no diretório apontado por rclone config paths https://rclone.org/commands/rclone_config_paths/.

— Reply to this email directly, view it on GitHub https://github.com/cumbucadev/cinemaempoa/issues/101#issuecomment-2425148449, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARFGRE3UKJJYZBU6DC2KOYDZ4PTWJAVCNFSM6AAAAABP7SVNACVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMRVGE2DQNBUHE . You are receiving this because you authored the thread.Message ID: @.***>

jbonadiman commented 4 days ago

Opa! Muito obrigado pela indicação. Vou ler a documentação com calma de noite, mas parece promissor. Realmente não tem browser na máquina pois eu acesso via ssh. Talvez tenha como gerar um token do Google ou algo assim

O rclone tem o comando rclone authorize em que você consegue autorizar no browser da sua máquina local e passar o token pro servidor, mas eu só fiz isso uma vez então não sei o passo-a-passo de cabeça 🤔. Mas lembro que não era muito complicado, só foge da configuração "next>next>next" habitual.

guites commented 4 days ago

O rclone tem o comando rclone authorize em que você consegue autorizar no browser da sua máquina local e passar o token pro servidor, mas eu só fiz isso uma vez então não sei o passo-a-passo de cabeça 🤔. Mas lembro que não era muito complicado, só foge da configuração "next>next>next" habitual.

Acho que deu bom! Usei o rclone config e segui esses passos aqui: https://rclone.org/drive/#making-your-own-client-id .

Configurei um remote chamado "cinemaempoa_backups" e consegui enviar um arquivo lá pro meu drive: https://drive.google.com/drive/u/0/folders/1f9qFHb2Fxdg_EGg3Vq4W-leDaGed9kXk

rclone sync test-rclone.txt cinemaempoa_backups:/cinemaempoa_backups
guites commented 4 days ago

Acho que pra conseguir finalizar essa tarefa ainda tem alguns passos: