A criação de backups de sites deve ser uma das tarefas recorrentes mais importantes para um administrador de sites, e mesmo assim os backups são muitas vezes esquecidos quando se pensa em segurança de sites.
A criação de backups usando ferramentas de linha de comando está disponível para todos os usuários de Linux/Mac gratuitamente. Se você não estiver usando Linux/Mac, temos um guia passo-a-passo sobre como criar backups de sites usando um software com uma interface gráfica que funciona no Windows.
Este post não tem como objetivo fornecer uma solução completa para backups, mas, foi escrito para quem tem tempo e quer aprender algumas ferramentas básicas de linha de comando que podem ser usadas para criar backups.
Requisitos
Seu host pode ajudá-lo a confirmar que você possui o software e as credenciais necessários.
Software no Servidor:
- tar
Software no seu Computador:
- SSH (usado para criar/deletar arquivos de backup)
- SCP (usados para baixar o arquivo de backup)
- Terminal (como o gnome-terminal – usado para executar todos os comandos)
h
Informação Necessária:
- Credenciais do IP e SSH do seu servidor
- Credenciais da sua base de dados
- Diretório root do seu site (e qualquer diretório que você queira incluir/excluir do seu backup)
- O tipo da sua base de dados: MySQL, PostgreSQL ou SQLite (se seu site tiver uma base de dados)
Passos para Criar um Backup
Depois de conectar seu computador e seu servidor, você pode usar comandos para fazer backup rápido do seu site.
Conectando-se ao servidor via SSH:
SSH significa Secure Shell e é comumente usado para a execução de comandos remotos.
Abra seu terminal e digite o seguinte comando para se conectar ao seu servidor usando o protocolo SSH:
ssh username@serversIP
Uma vez que você está conectado ao servidor no terminal, todos os comandos que você digitar serão executados no seu servidor. Agora, vamos criar uma nova pasta no seu servidor chamada “backup“. Você pode localizar esta pasta em qualquer lugar, desde que seja um local não disponível publicamente.
Se o diretório root da sua aplicação web é /home/username/html, crie sua pasta de “backup” no /home/username/. Vamos remover backups do servidor após serem transferidos para o seu computador.
Se você não sabe qual é o diretório root do seu site, você pode encontrar essas informações na sua conta cPanel:
Aqui você pode ver que o diretório root deste site é: /home/ma658tvk.
No Linux e no MacOS, você pode criar um diretório usando o comando mkdir, desta maneira:
mkdir -p /home/username/backup/{db,core,logs,conf}
Esse comando criará um doretório “backup” em /home/username/. Dentro desta pasta, criamos mais quatro diretórios: db, core, logs, e conf.
Segue uma observação sobre a flag -p para o comando mkdir; ela indica que não haverá erros se os diretórios já existirem e também criará diretórios pais se necessário.
É muito importante fazer o backup de toda sua aplicação, incluindo dumps de bancos de dados, arquivos principais, plugins e arquivos de mídia. Se você quiser ir um passo adiante, faça backups dos arquivos de configuração do servidor e dos seus logs, pois podem ser importantes no caso de problemas de conformidade, no qual é necessário fazer análise forense.
Exportando a Base de Dados
Uma das razões pelas quais eu adoro criar backups a partir da linha de comando é que na maioria das vezes eu não tenho que usar qualquer ferramenta externa para fazer o backup da base de dados. A maioria dos mecanismos de base de dados possui utilitários de linha de comando que transformam esse processo em algo simples e indolor. Você só precisa de suas credenciais da base de dados.
Os comandos a seguir irão exportar um dump da base de dados e localizá-lo no /home/username/backup/db/
Se seu site o MySQL, execute o comando a seguir:
mysqldump -u [database_user] -p [database_name] > [/home/username/backup/db/yourdomain.sql]
Se seu site o PostgreSQL, execute o comando a seguir:
pg_dump -U [database_user] [database_name] > [/home/username/backup/db/yourdomain.sql]
Esses comandos irão solicitar-lhe sua senha. Depois de digitá-la (os caracteres não serão visíveis no seu terminal), o dump será salvo na pasta de backup especificada.
Se seu site usa o SQLite, copie o arquivo:
cp [/path/to/your/SQLite.db] [/home/username/backup/db/]
Criando um Arquivo Tar a Partir dos Arquivos do seu Site
Agora vamos comprimir (por conveniência) os principais arquivos do seu site. Para esta etapa, tudo o que você precisa ter instalado em seu servidor é o programa tar e conhecer a localização dos seus arquivos principais, além de qualquer pasta que você deseja incluir ou excluir do backup.
Novamente, digamos que seu site esteja localizado em: /home/username/html. Você pode criar um arquivo tar usando o comando a seguir:
tar -cf /home/username/backup/core/core.tar /home/username/html
O comando acima funcionará bem se você quiser incluir todos os arquivos dentro do /home/username/html, e se você não quiser fazê-lo?
Imagine que a estrutura do seu site seja a seguinte:
html ├── cache ├── core └── www ├── index.php └── media
Se comprimirmos o diretório completo, a pasta cache também será copiada. Isso não é necessário e, ao removê-la do backup, você economizará muito tempo e largura de banda. Com o comando tar, você pode excluir facilmente diretórios com o flag –exclude.
Agora, vamos comprimir novamente o diretório do site, excluindo o diretório do cache.
tar --exclude='/home/username/html/cache' -cf /home/username/backup/core/core.tar /home/username/html
E lá está – um arquivo .tar com o nome core.tar será salvo dentro do /home/username/backup/core/. Você pode usar o flag –exclude quantas vezes for necessário para excluir tudo do que você não precisa do seu backup!
Opcional: Faça o Backup da sua Configuração & dos seus Arquivos de Log
Descobri que vale a pena fazer backup de arquivos de configuração e logs. Houve momentos em que me esqueci de como era o `httpd.conf`, e é muito mais fácil revisá-lo no meu computador pessoal. Eu sou uma pessoa preguiçosa, entenda o meu lado – o mesmo se aplica aos arquivos de log.
Não há localização universal para configuração e arquivos de log, mas, felizmente, você pode adicionar vários locais ao comando tar. Segue um exemplo:
tar -cf /home/username/backup/conf/conf.tar \ /full/path/to/first_location \ /full/path/to/second_location \ /full/path/to/third_location
O caractere “\” no final da primeira linha pede para o seu terminal não executar o comando ao pressionar a tecla “Enter”, mas sim esperar que o comando tenha várias linhas. A última linha é a única que não inclui o caractere “\“. Isso indica ao terminal que o comando agora está pronto para ser executado. Desta forma, você pode criar um .tarcontendo seus arquivos de configuração/log localizados em diferentes pastas em todo o seu sistema!
Restaurar seus arquivos de configuração só permitirá que você replique a sua configuração, desde que você instale o software exato como no servidor de backup. Se você restaurar arquivos de configuração em um servidor de produção e o software for diferente, você acabará tendo muitos erros. Seja cuidadoso.
Hora de Terminar Tudo
Criando um Arquivo Tar Final
Agora que temos todos os arquivos que queremos na pasta /home/username/backup/, tudo o que precisamos fazer é criar um tar definitivo e baixá-lo para o nosso computador pessoal. Isso não é um requisito, pois podemos baixar toda a pasta de backup sem compactá-la, mas eu prefiro baixar um único arquivo em vez de muitos.
tar -cf /home/username/latest.backup.tar /home/username/backup/
Isso criará um arquivo chamado latest.backup.tar contendo todos os nossos arquivos de backup. Você pode desconectar seu computador do seu servidor digitando exit no seu terminal.
Baixando o Arquivo com SCP
Para baixar o arquivo latest.backup.tar, você precisará do comando scp. Veja como você baixa o arquivo:
scp username@serversIP:/home/username/latest.backup.tar /home/username/backups/domainname/backup_$(date +%Y%m%d_%H%M%S).tar
O que esse comando faz é pegar o arquivo latest.backup.tar do seu servidor e baixá-lo para o seu computador para a pasta /home/username/backups/domainname/ e renomeá-lo com a ajuda do comando de data padrão (e,g. backup_20170730_142422). Esta é uma maneira muito fácil de nomear seus backups.
Deletando o Backup do Servidor
Agora que o backup está seguro no seu computador, você pode removê-lo com segurança do seu servidor.
Para fazer isso, você precisa fazer login novamente em seu servidor usando o SSH e executar os seguintes comandos
rm /home/username/latest.backup.tar rm -rfi /home/username/backup/
Com o primeiro comando, você exclui o arquivo final tar do seu servidor e, com o segundo comando, você exclui a pasta de backup do seu servidor.
Certifique-se de usar o path certo para este arquivo e pasta porque recuperar algo excluído da linha de comando é bastante difícil e demorado. Uma vez que algo é excluído, todos os links para o arquivo estão quebrados e o sistema operacional pode liberar os blocos usados pelo arquivo a qualquer momento. Mais uma vez, certifique-se de usar os paths certos!
Depois de excluir os arquivos de backup, você pode sair do servidor digitando exit. Agora você tem um backup completo em seu computador pessoal. Sucesso! Será?
Um backup nunca é bem sucedido, a menos que você o teste!
Conclusão
Esta não é uma solução completa, embora isso o ensine os princípios básicos da ciência de fazer backups.
Em posts futuros, abordaremos algumas coisas que faltam neste post:
- Restaurando backups (teste e uso de backups em caso de problema)
- Backups incrementais (ackup completo e, em seguida, salvar histórico de arquivos modificados/novos)
- Verificações de integridade para backups (não confie em nada que não esteja assinado!)
- Automação (quem faz backup de seus sites quando está de férias?)
- Replicação (backups dos backups!)
Essas quatro razões devem ser suficientes para fazê-lo refletir sobre uma solução de backup profissional sem complicações. Mas não pense mais
https://blog.sucuri.net/portugues/2017/08/como-criar-backups-usando-ferramentas-da-linha-de-comando.html