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.

