A ideia do tutorial é que tenham um backup da vossa base de dados mariadb no formato .sql para que seja de fácil importação caso necessitem de forma rápida.
Esta pequena explicação tem como base o uso de nodered e scripts.
Começo:
-
Criar uma pasta dentro de /config/ com o nome ssh ficando o caminho: /config/ssh
-
Criar uma pasta dentro de config/www com o nome temp ficando o caminho: /config/www/temp
e colocar este ficheriro lá dentro : backup_mysql.txt (1.5 KB)
Antes de colocares o ficheiro dentro de /config/www/temp renomeia o nome de .txt para .sh
-
Instalar o addon Advanced SSH & Web Terminal
-
Na shell do Home Assistant ir até ao caminho /config/ssh com o comando cd /config/ssh e criar uma chave
ssh com o comando:
ssh-keygen -t rsa , quando pedir o nome escrever mariadb dar enter e não escolher password. -
Copiar a chave com o comando cat mariadb.pub
-
Ainda na shell tens que dar permissão ao ficheiro.
Escreve o comando : chmod u+x /config/www/temp/backup_mysql.sh -
Abrir a configuraçao do addon Advanced SSH & Web Terminal e colocar a chave anteriormente copiada.
como também um username e password caso queiras usar sftp tens que usar root como username.
Exemplo:
username: root
password: cpha
authorized_keys:
- >-
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABgQCzlqDVnR30txo87P00U4DpXUJZoS2egudyO2qSIc/moL9F/XVi1AE17eIflsU3vNJyW6RsDstDZGwQSA8ClPiSbxcRY4NPWXL/VwManQfoM9qoi/BiUhzsm4Irk6RrAs0sh4x9NFoQRS4
root@a0d7b954-ssh
sftp: true
compatibility_mode: false
allow_agent_forwarding: false
allow_remote_port_forwarding: false
allow_tcp_forwarding: false
- Por fim o flow do nodered:
[{"id":"b4c0f224473a1f2f","type":"inject","z":"c1f01768.5a3bc8","name":"Trigger meia noite","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 00 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":490,"y":80,"wires":[["c1d05849742f35b5"]]},{"id":"c1d05849742f35b5","type":"exec","z":"c1f01768.5a3bc8","command":"","addpay":"","append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"Backup MariaDB","x":710,"y":80,"wires":[["a04cab74d51ed001"],["1a1c6eddb5c5ca73"],["6255739bf3abfb66"]]},{"id":"a04cab74d51ed001","type":"debug","z":"c1f01768.5a3bc8","name":"debug 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":960,"y":40,"wires":[]},{"id":"1a1c6eddb5c5ca73","type":"debug","z":"c1f01768.5a3bc8","name":"debug 2","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":960,"y":80,"wires":[]},{"id":"6255739bf3abfb66","type":"debug","z":"c1f01768.5a3bc8","name":"debug 3","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":960,"y":120,"wires":[]}]
No campo command:
Tens que por isto:
ssh -i /config/ssh/mariadb root@192.168.1.85 'bash -s < /root/config/www/temp/backup_mysql.sh' > erro.log
Não te esqueças de alterar onde diz root@192.168.1.85 para o teus dados.
Resumindo o que este script faz juntamente com o nodered todos os dias à meia noite colocar dentro de /config/www/temp um backup da tua base de dados e mantem os ultimos 7 criando no fim um zip dos mesmos.
Caso depois queiras enviar o zip , usando o rclone que tenhas configurado na tua máquina assim poderás o enviar, para que tenhas um backup também da tua nuvem preferida.
Caso queiras mover o zip para o teu Nas também o poderás fazer, mas deixo isso para outro “episódio”
Créditos para @nikito7 @bbaixo e @domusonline