Backup e restore de RPO em producao

Estrategia completa de backup do RPO Protheus: o que copiar, frequencia, restore rapido em caso de problema, automacao.

RPO e o "binario" do Protheus — sem ele, AppServer nao sobe. Perda do RPO = sistema parado. Backup confiavel e estrategia de restore rapida sao basicas em qualquer producao seria.

O que precisa de backup

ComponenteFrequenciaOnde
RPO principal (tttp.rpo)Apos cada release TOTVS/protheus_data/apo/
RPO customizacao (cliente.rpo)Diaria + apos cada deploy/protheus_data/apo/
RPO patches (patch_*.rpo)A cada patch/protheus_data/apo/
appserver.iniAntes de cada alteracao/protheus_data/
Pasta system/ (SX*)Diaria/protheus_data/system/
Banco de dadosA cada hora (incremental)Backup do SQL/Oracle/PG
Spool/anexosDiaria/protheus_data/spool/

Script de backup automatico (Linux)

#!/bin/bash
# /scripts/backup-protheus.sh

DATA=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backups/protheus"
PROTHEUS_DIR="/protheus_data"

mkdir -p "$BACKUP_DIR/$DATA"

# RPOs
cp -v $PROTHEUS_DIR/apo/*.rpo $BACKUP_DIR/$DATA/

# Config
cp -v $PROTHEUS_DIR/appserver.ini $BACKUP_DIR/$DATA/

# System (dicionarios SX*)
tar czf $BACKUP_DIR/$DATA/system.tar.gz $PROTHEUS_DIR/system/

# Spool (so apos comprimir, e seletivo)
find $PROTHEUS_DIR/spool/ -mtime -1 -type f |     tar czf $BACKUP_DIR/$DATA/spool-recent.tar.gz -T -

# Banco (PostgreSQL exemplo)
pg_dump -U archtec -h localhost protheus_db | gzip > $BACKUP_DIR/$DATA/db.sql.gz

# Limpar > 30 dias
find $BACKUP_DIR -mtime +30 -type d -exec rm -rf {} +

echo "Backup completo em $BACKUP_DIR/$DATA"

Cron — automacao

# Backup completo diario as 2h
0 2 * * * /scripts/backup-protheus.sh

# Backup incremental do banco a cada hora
0 * * * * pg_basebackup -U archtec -D /backups/db_inc/$(date +%H)

Backup remoto (offsite)

# Sincronizar pra storage S3
aws s3 sync /backups/protheus s3://empresa-backups/protheus/     --storage-class GLACIER_IR     --delete

Restore — cenarios

Cenario 1: RPO custom corrompeu

# 1. Parar AppServer
systemctl stop appserver

# 2. Restaurar RPO anterior
cp /backups/protheus/20260512_020000/cliente.rpo /protheus_data/apo/

# 3. Subir
systemctl start appserver

# 4. Validar via SmartClient
# Tempo total: 5-10 min

Cenario 2: Servidor inteiro perdido

# 1. Provisionar nova VM identica
# 2. Instalar Protheus base
# 3. Restaurar RPO + config + system
tar xzf /backups/protheus/20260513_020000/system.tar.gz -C /

# 4. Restaurar banco
gunzip -c /backups/protheus/20260513_020000/db.sql.gz | psql -U archtec protheus_db

# 5. Configurar appserver.ini
# 6. Subir e validar
# Tempo: 1-2 horas (RTO real)

Cenario 3: Restaurar registro especifico

Pra recuperar 1 cliente apagado por engano sem fazer restore completo:

# Restaurar SO a tabela SA1 em base separada
gunzip -c db.sql.gz | psql -U archtec protheus_temp

# Em SQL, copiar SA1 do temp pra prod
psql -U archtec protheus_db -c "
    INSERT INTO sa1010
    SELECT * FROM dblink('host=localhost dbname=protheus_temp', 'SELECT * FROM sa1010 WHERE a1_cod = ''000123''')
    AS t(...)
"

Validar backup mensalmente

Backup nao testado nao e backup. Faca restore drill 1x por mes em ambiente isolado.

Pegadinhas

RTO/RPO recomendado

CriticidadeRTORPO
Mission-critical< 1h< 15 min
Importante< 4h< 1h
Operacional< 24h< 24h

Veja também