Teste de Restore: Guia Passo a Passo

Segue um teste de restore passo a passo, prático, executável e no mundo real de sysadmin 👇
A ideia é validar seu backup na prática, não só “se o arquivo existe”.


1️⃣ Preparação do ambiente de teste (obrigatório)

⚠️ Nunca teste restore direto em produção.

Opções seguras:

  • VM separada
  • VPS temporário
  • Container / chroot
  • Snapshot clonado

Checklist inicial:

hostname
ip a
lsblk
df -h
free -h

Confirme:

  • SO compatível
  • Espaço em disco suficiente
  • Versão do banco compatível

2️⃣ Validar integridade do backup

Verificar tamanho e data

ls -lh backup.tar.gz
stat backup.tar.gz

Testar arquivo compactado

tar -tzf backup.tar.gz > /dev/null

Para .zip:

unzip -t backup.zip

Se falhar aqui → backup inválido.


3️⃣ Restore dos arquivos (dry run primeiro)

Simular extração

tar -tvzf backup.tar.gz | head

Restaurar para diretório temporário

mkdir /restore-test
tar -xvzf backup.tar.gz -C /restore-test

Verifique:

ls -lah /restore-test
du -sh /restore-test/*

4️⃣ Validar permissões e ownership

Erro clássico de restore 👇

stat /restore-test
ls -lah /restore-test

Corrigir se necessário:

chown -R www-data:www-data /restore-test
find /restore-test -type d -exec chmod 755 {} \;
find /restore-test -type f -exec chmod 644 {} \;

(Ajuste usuário conforme seu stack)


5️⃣ Restore do banco de dados

Criar banco vazio

mysql -u root -p
CREATE DATABASE restore_test;
EXIT;

Restaurar dump

mysql -u root -p restore_test < backup.sql

Validar integridade

mysql -u root -p -e "USE restore_test; SHOW TABLES;"

Verificar tamanho:

mysql -u root -p -e \
"SELECT table_schema, ROUND(SUM(data_length+index_length)/1024/1024,2) MB
FROM information_schema.tables
WHERE table_schema='restore_test';"

6️⃣ Ajustar configuração da aplicação

Exemplo WordPress:

cp wp-config.php wp-config.php.bak

Editar:

define('DB_NAME', 'restore_test');
define('DB_USER', 'restore_user');
define('DB_PASSWORD', 'senha');
define('DB_HOST', 'localhost');

URLs:

wp search-replace 'site-original.com' 'restore.site.local'

7️⃣ Subir serviços e testar aplicação

systemctl start nginx
systemctl start php-fpm
systemctl start mariadb

Testes:

  • Página inicial carrega?
  • Login funciona?
  • Upload funciona?
  • Logs limpos?

Logs:

tail -f /var/log/nginx/error.log
tail -f /var/log/php-fpm/error.log

8️⃣ Testes funcionais críticos

Checklist mínimo:

  • ✅ Login
  • ✅ CRUD básico
  • ✅ Upload/download
  • ✅ Cron / tarefas agendadas
  • ✅ Integrações externas (se houver)

9️⃣ Medir tempo de restore (RTO)

Cronometre:

time tar -xzf backup.tar.gz -C /restore-test
time mysql restore_test < backup.sql

Anote:

  • Tempo total
  • Gargalos
  • Etapas lentas

🔟 Documentar o teste (parte esquecida)

Registre:

  • Data do teste
  • Backup usado
  • Resultado (OK / falha)
  • Tempo de restore
  • Ajustes necessários

Exemplo:

Restore testado em 2026-02-10
Backup: backup-full-2026-02-08.tar.gz
Resultado: OK
Tempo total: 11min
Observação: permissões quebradas após restore

🧠 Regra de ouro

Backup que nunca foi restaurado
não é backup, é esperança.