#!/bin/bash
BASE_DIR="/var/www/html"
ORIGEM_UPDATE="$BASE_DIR/vvs/_update"
# Interrompe o script caso ocorra um erro inesperado.
set -u
if [ ! -d "$ORIGEM_UPDATE" ]; then
echo "ERRO: A pasta de origem não existe:"
echo "$ORIGEM_UPDATE"
exit 1
fi
echo "Iniciando atualização dos sistemas..."
echo
for SISTEMA_DIR in "$BASE_DIR"/*; do
# Ignora arquivos e considera somente diretórios.
[ -d "$SISTEMA_DIR" ] || continue
SISTEMA=$(basename "$SISTEMA_DIR")
# Pastas que não devem ser atualizadas.
case "$SISTEMA" in
"vvs"|"sistema_beta"|"sistema_alfa")
echo "IGNORADO: $SISTEMA"
continue
;;
esac
UPDATE_ATUAL="$SISTEMA_DIR/_update"
UPDATE_BKP="$SISTEMA_DIR/_update-bkp"
echo "Processando: $SISTEMA"
# Só continua se o sistema já possuir uma pasta _update.
if [ ! -d "$UPDATE_ATUAL" ]; then
echo " AVISO: pasta _update não encontrada. Sistema ignorado."
echo
continue
fi
# Preserva um eventual backup anterior.
if [ -e "$UPDATE_BKP" ]; then
DATA_HORA=$(date +"%Y%m%d_%H%M%S")
BACKUP_ANTIGO="${UPDATE_BKP}_${DATA_HORA}"
echo " Backup anterior encontrado."
echo " Renomeando para: $(basename "$BACKUP_ANTIGO")"
mv "$UPDATE_BKP" "$BACKUP_ANTIGO"
if [ $? -ne 0 ]; then
echo " ERRO: não foi possível preservar o backup anterior."
echo
continue
fi
fi
# Renomeia a pasta _update atual para _update-bkp.
echo " Criando backup da pasta _update..."
mv "$UPDATE_ATUAL" "$UPDATE_BKP"
if [ $? -ne 0 ]; then
echo " ERRO: não foi possível renomear _update para _update-bkp."
echo
continue
fi
# Copia a pasta _update do VVS.
echo " Copiando a nova pasta _update..."
cp -a "$ORIGEM_UPDATE" "$SISTEMA_DIR/"
if [ $? -ne 0 ]; then
echo " ERRO: falha ao copiar a nova pasta _update."
echo " Restaurando a pasta anterior..."
rm -rf "$UPDATE_ATUAL"
mv "$UPDATE_BKP" "$UPDATE_ATUAL"
echo
continue
fi
# Restaura o arquivo de versão específico do sistema.
VERSAO_BKP="$UPDATE_BKP/versaoAtual.bkp"
VERSAO_DESTINO="$UPDATE_ATUAL/versaoAtual.php"
if [ -f "$VERSAO_BKP" ]; then
echo " Restaurando versaoAtual.php..."
cp -a "$VERSAO_BKP" "$VERSAO_DESTINO"
if [ $? -ne 0 ]; then
echo " AVISO: não foi possível copiar versaoAtual.bkp."
fi
else
echo " AVISO: arquivo versaoAtual.bkp não encontrado em:"
echo " $VERSAO_BKP"
fi
# Mantém o mesmo proprietário da pasta do sistema.
PROPRIETARIO=$(stat -c '%U:%G' "$SISTEMA_DIR")
chown -R "$PROPRIETARIO" "$UPDATE_ATUAL"
echo " CONCLUÍDO: $SISTEMA"
echo
done
echo "Atualização finalizada."