Crie e automatize backups com Rsync com suporte ao banco de dados

  • Home
  • Dicas
  • Crie e automatize backups com Rsync com suporte ao banco de dados
Abr 13, 2021

RSYNC é uma ferramenta de código aberto para sincronizar arquivos local e remotamente entre servidores. Não é apenas rápido, mas também inteligente – a ferramenta utiliza um famoso algoritmo para detectar as diferenças entre dois arquivos ou pastas. Isso reduz a quantidade de dados enviados pela rede transferindo apenas as partes dos arquivos que foram alteradas.

Estamos disponibilizando um script para economizamos seu tempo e ajudá-lo a automatizar seus backups. Este script fará backup de seus arquivos e bancos de dados em um servidor remoto. Neste tutorial, mostraremos como personalizar o script para atender às suas necessidades exatas.

Primeiro, precisamos de um servidor de backup, que manterá nossos backups. Em nosso servidor de backup, a única coisa que precisamos instalar é o rsync executando:

Para CentOS / Fedora:

yum -y install rsync

Para Debian / Ubuntu:

 apt -y install rsync 

Agora vamos pular para o servidor de produção e personalizar nosso script de backup.

Nota: Todas as etapas abaixo são executadas como usuário root.

Devemos configurar nossas chaves SSH no servidor principal e copiá-las para o servidor de backup. Se você já possui a configuração das chaves ssh, pule a primeira etapa:

Configurar as chaves ssh

  1. Gerar chave SSH :

    [root@production ~]# ssh-keygen

    Pressione ENTER em cada linha.

    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    Created directory ‘/root/.ssh’.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:I6BN/BwVXSOXe/LuCxEIlwVKm4qValVmQtcvND9+Iv4 root@production
    The key’s randomart image is:
    +—[RSA 2048]—-+
    | .o X++==. |
    | . X **+.. |
    | + = +..+.. |
    | + O o . *.. |
    | . = = S o.= |
    | . . .. o.o |
    | . ..+ |
    | . .. |
    | .E.o. |
    +—-[SHA256]—–+
  2. Copie a chave ssh para o servidor de backup :

    [root@production ~]# ssh-copy-id root@IP-OF-OUR-BACKUP-SERVER


    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/root/.ssh/id_rsa.pub”
    The authenticity of host ‘ IP-of-our-backup-server ( IP-of-our-backup-server )’ can’t be established.
    ECDSA key fingerprint is SHA256:Ld0ma1DffczaDp/LbTEeLOZGDSo4BU2c/Hm5hdZpk7A.
    ECDSA key fingerprint is MD5:c3:a4:e8:94:3d:0e:c4:3d:3e:5c:b4:02:4e:23:e4:ff.
    Are you sure you want to continue connecting (yes/no)? yes
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys
    root@ IP-of-our-backup-server ‘s password:
    Number of key(s) added: 1
    Now try logging into the machine, with: “ssh ‘root@ IP-of-our-backup-server ‘”
    and check to make sure that only the key(s) you wanted were added.

Como as chaves SSH agora estão criadas, vamos rodar o script como root

[root@production ~]  wget https://servercheap.net/timages/rsync-backup2.sh -O /root/rsync-backup2.sh

Com o script na sua pasta / root, vamos abri-lo com o nosso editor de texto favorito:

[root@production ~]# nano -w /root/rsync-backup2.sh

Existem apenas algumas opções de configuração que precisamos cuidar, então vamos examiná-las uma a uma.

O primeiro conjunto de opções está relacionado ao servidor de backup de destino. As opções são auto-explicativas:

BackupServerIPAddress = '127.0.0.1'  
BackupServerSSHUsername = 'root'
BackupServerSSHPort = '22 '

Vamos substituir 127.0.0.1 pelo endereço IP do nosso servidor de backup. Nosso nome de usuário ssh pode ser inalterado se estivermos usando root, o mesmo que a porta ssd do nosso servidor de backup. Próximas opções:

FoldersToBackup='/var/www/html /usr/share/app/data'  DestinationBackupFolder='/rsync-backup' 

Com  FoldersToBackup  , especificamos as pastas que queremos fazer backup. Para várias pastas, nós as separamos com um espaço. DestinationBackupFolder  é a pasta do nosso servidor de backup em que queremos que os backups sejam copiados.

NOTA: É recomendável que você crie todas as pastas de destino no servidor de backup com antecedência.

É importante não colocar uma barra no final da (s) pasta (s).

Com as próximas 2 opções, especificamos se queremos receber um email após cada execução do script. O email contém informações e estatísticas sobre o backup que acabou de ser executado.

 notifyEmail = 'no'
 emailAddress='s 

As próximas 4 opções especificam o nome de usuário e a senha do servidor mysql / mariadb local, o (s) banco (s) de dados que você deseja fazer backup e a pasta de remoção onde deseja que o backup do banco de dados seja colocado.

dbUserName = 'root' 
dbPassword = ''
dbToBackup = 'wordpress'
dbDestinationFolder = '/ backup /'

Nessas duas últimas opções podem permanecer inalteradas. Na  opção logFile especifica o local do arquivo de log que é enviado por e-mail se  notifyEmail  estiver definido como  yes  . É importante saber que o arquivo de log é apenas temporário e é excluído após cada execução. rsyncOptions  são as opções rsync passadas para rsync. Altere-os por sua conta e risco.

É isso aí. Tudo o que precisamos fazer agora é testar o script executando:

[root@production ~]# chmod +x /root/rsync-backup2.sh
[root @ production ~] # /root/rsync-backup2.sh

Se tudo funcionou, agora você deve ter um novo backup no seu servidor de backup.

NOTA: este script faz um backup incremental. O que isso significa é que o script fará backup apenas dos arquivos que foram alterados desde o último backup. Isso em grandes sistemas de produção pode economizar muito tempo e largura de banda.

O último passo é automatizar isso via CRON. Nós vamos configurá-lo para que nosso script faça um backup automático uma vez por semana (você pode alterar isso para, diário, mensal e etc.), todos os domingos. Abra o cron para edição executando:

[root@production ~]# crontab -e

E coloque no fundo:

0 0 * * 0 /root/rsync-backup2.sh >/dev/null 2>&1

Você está pronto. A partir de agora, o script será executado todos os domingos à meia-noite e fará backup automaticamente de todos os arquivos que foram alterados desde o último backup.

Deixe um comentário