1
resposta

Diretório não é criado

Estou tendo dificuldade em criar o diretório TEMP_DIR. Por algum motivo ele não é criado. O que acho estranho é que o diretório ARQUIVO_DIR que é criado na mesma pasta (myapp) é criado normamente mas o temp não.

LOG_DIR="/home/thiago/myapp/logs"
ARQUIVO_DIR="/home/thiago/myapp/logs-processados"
TEMP_DIR="/home/thiago/myapp/logs-temp"

mkdir -p $ARQUIVO_DIR
mkdir -p $TEMP_DIR

Outro ponto que estranheei é que ao final do codigo na compactação do arquivo (tar) o operador -C esta com uma cor (laranja) diferente da que aparece na aula (roxo). Não sei se tem relação mas reparei essa diferença também.

Segue o codigo completo do script caso ajude:

#!/bin/bash

LOG_DIR="/home/thiago/myapp/logs"
ARQUIVO_DIR="/home/thiago/myapp/logs-processados"
TEMP_DIR="/home/thiago/myapp/logs-temp"

mkdir -p $ARQUIVO_DIR
mkdir -p $TEMP_DIR

echo "Verificando os logs no diretorio $LOG_DIR"

find $LOG_DIR -name "*.log" -print0 | while IFS= read -r -d '' arquivo; do
        grep "ERROR" $arquivo > "${arquivo}.filtrado"
        grep "SENSITIVE_DATA" $arquivo >> "${arquivo}.filtrado"

        sed -i 's/User password is .*/User password is REDACTED/g' "${arquivo}.filtrado"
        sed -i 's/User password reset request with token .*/User password reset request with token REDACTED/g' "${arquivo}.filtrado"
        sed -i 's/API key leaked: .*/API key leaked: REDACTED/g' "${arquivo}.filtrado"
        sed -i 's/User credit card last four digits: .*/User credit card last four digits: REDACTED/g' "${arquivo}.filtrado"
        sed -i 's/User session initiated with token: .*/User session initiated with token: REDACTED/g' "${arquivo}.filtrado"

        sort "${arquivo}.filtrado" -o "${arquivo}.filtrado"

        uniq "${arquivo}.filtrado" > "${arquivo}.unico"

        num_palavras=$(wc -w < "${arquivo}.unico")
        num_linhas=$(wc -l < "${arquivo}.unico")

        nome_arquivo=$(basename "${arquivo}.unico")

        echo "Arquivo: ${arquivo}.unico" >> "${ARQUIVO_DIR}/log_stats_$(date +%F).txt"
        echo "Número de linhas: $num_linhas" >> "${ARQUIVO_DIR}/log_stats_$(date +%F).txt"
        echo "Número de palavras: $num_palavras" >> "${ARQUIVO_DIR}/log_stats_$(date +%F).txt"
        echo "--------------------------" >> "${ARQUIVO_DIR}/log_stats_$(date +%F).txt"
 if [[ "$nome_arquivo" == *frontend* ]]; then
                sed 's/^/[FRONTEND] /' "${arquivo}.unico" >> "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log"
        elif [[ "$nome_arquivo" == *backend* ]]; then
                sed 's/^/[BACKEND] /' "${arquivo}.unico" >> "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log"
        else
                cat "${arquivo}.unico" >> "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log"
        fi

        sort -k2 "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log" -o "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log"
                                                                                                              mv "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log" "$TEMP_DIR/"
        mv "${ARQUIVO_DIR}/log_stats_$(date +%F).txt" "$TEMP_DIR/"

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

        rm -r "$TEMP_DIR"
done                          
1 resposta

Olá, Thiago. Tudo bem?

Vamos tentar resolver o problema do diretório TEMP_DIR não estar sendo criado. Pelo que você descreveu, o diretório ARQUIVO_DIR é criado normalmente, então podemos verificar algumas possibilidades para o TEMP_DIR:

  1. Permissões: Você precisa ter permissão para criar diretórios no caminho especificado. Você pode testar isso manualmente executando mkdir /home/thiago/myapp/logs-temp no terminal e ver se ocorre algum erro.

  2. Erros de Sintaxe: Verifique se não há erros de sintaxe no script. Às vezes, um erro em outra parte do script pode interromper a execução antes de chegar ao mkdir.

  3. Espaços ou Caracteres Especiais: Verifique se não há espaços ou caracteres especiais invisíveis no nome da variável TEMP_DIR ou no caminho. Isso pode ser feito reescrevendo a linha onde a variável é definida.

  4. Execução do Script: Verifique se o script está sendo executado corretamente e que as alterações foram salvas. Você pode adicionar um echo logo após a criação do diretório para verificar se a linha está sendo executada:

    mkdir -p $TEMP_DIR
    echo "TEMP_DIR criado em $TEMP_DIR"
    

Sobre a cor diferente do operador -C no comando tar, isso geralmente é uma questão de configuração do seu editor de texto ou terminal e não deve afetar a execução do script. Cores diferentes podem indicar tipos diferentes de sintaxe ou apenas uma configuração de tema.

Espero ter ajudado e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!