O 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
- 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]—–+ - 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