1
resposta

[Dúvida] Error is not recoverable: exiting now

Olá, será que comi bola em algum momento?
Erro no script
Script Linux

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Ola

O erro principal é este:

tar (child): {ARQUIVO_DIR}/logs_2025-11-05.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now

E antes disso:

mv: cannot stat '../myapp/logs-processados/logs_stats_2025-11-05.txt': No such file or directory

Ou seja: o script está tentando mover e compactar arquivos que ainda não existem, ou o caminho que ele usa não foi criado antes da chamada ao tar.

O que está acontecendo

Na segunda imagem, seu script define:

ARQUIVO_DIR="../myapp/logs-processados"
TEMP_DIR="../myapp/logs-temp"

E mais embaixo, tenta:

tar -czf "${ARQUIVO_DIR}/logs_$(date +%F).tar.gz" -C "$TEMP_DIR" .

Mas o erro indica que ${ARQUIVO_DIR} não existia quando o tar foi executado — ou seja, o diretório ../myapp/logs-processados não foi criado antes da compactação.

Como corrigir

Adicione logo no início do seu script (após definir as variáveis):

mkdir -p "$ARQUIVO_DIR"
mkdir -p "$TEMP_DIR"

Parece que você já tem um mkdir -p "$TEMP_DIR" ali, mas talvez tenha movido ou apagado o mkdir -p "$ARQUIVO_DIR" — ele precisa vir antes do tar e antes de qualquer mv ou echo > "$ARQUIVO_DIR/...txt".
Outras boas práticas

  1. Verifique se há logs antes de processar:

    if [ -z "$(ls -A "$LOG_DIR")" ]; then
        echo "Nenhum log encontrado em $LOG_DIR"
        exit 0
    fi
    
  2. Use set -e no início para o script parar quando houver erro:

    set -e
    
  3. Teste os caminhos absolutos com:

    echo "ARQUIVO_DIR=$ARQUIVO_DIR"
    echo "TEMP_DIR=$TEMP_DIR"