Ajuda para criação de script

Iniciado por RogerioFiorentino, 19 de Fevereiro de 2025, 15:59

tópico anterior - próximo tópico

RogerioFiorentino

Estou com uma dúvida e não sei como resolver.
Criei um script para fazer um backup full todas as terças (exemplo) e um incremental de quarta a segunda (via rsync).
O backup full está executando com sucesso, porem o incremental não. O primeiro incremental após o full cria a estrutura de pasta corretamente, porem faz a copia completa novamente e não somente dos arquivos alterados. A partir dai sim, ele leva somente o que foi alterado.
A minha ideia é que na pasta incremental, seja criado uma pasta para cada dia de execução(data) somente com esses arquivos alterados. É possível?

parte do script

----------------------
# 🟢 BACKUP FULL (Terça-feira)
# ----------------------
if [ "$DIA_SEMANA" -eq 2 ]; então
    echo "Executando Backup FULL - $DATA_ATUAL" >> "$EMAIL_MENSAGEM"
    FULL_PATH="$DEST_FULL/$DATA_ATUAL"

    # Criar diretório para o novo backup full
    mkdir -p "$FULL_PATH"

    # Percorrer lista de departamentos
    for DEPT in "${DEPARTAMENTOS
  • }"; do
        DEPT_PATH="$SOURCE_DIR/$DEPT"
       
        if [ -d "$DEPT_PATH" ]; então
            if rsync -a --delete "$DEPT_PATH/" "$FULL_PATH/$DEPT"; então
                echo "✅ Backup FULL realizado com sucesso: $DEPT" >> "$EMAIL_MENSAGEM"
            else
                echo "❌ Erro ao realizar backup FULL: $DEPT" >> "$EMAIL_MENSAGEM"
            fi
        fi
    done

    echo "$FULL_PATH" > "$FLAG_FULL" # Atualiza o local do último backup full

# ----------------------
# 🟡 BACKUP INCREMENTAL (Quarta a Segunda)
# ----------------------
else
    if [ -f "$FLAG_FULL" ]; então
        LAST_FULL=$(cat "$FLAG_FULL")
        INCREMENTAL_PATH="$DEST_INCREMENTAL/$DATA_ATUAL"

        echo "Executando Backup INCREMENTAL - $DATA_ATUAL" >> "$EMAIL_MENSAGEM"

        mkdir -p "$INCREMENTAL_PATH"

        # Percorrer lista de departamentos
        for DEPT in "${DEPARTAMENTOS
  • }"; do
            DEPT_PATH="$SOURCE_DIR/$DEPT"
           
            if [ -d "$DEPT_PATH" ]; então
                if rsync -a --link-dest="$LAST_FULL/$DEPT" "$DEPT_PATH/" "$INCREMENTAL_PATH/$DEPT"; então
                    echo "✅ Backup INCREMENTAL realizado com sucesso: $DEPT" >> "$EMAIL_MENSAGEM"
                else
                    echo "❌ Erro ao realizar backup INCREMENTAL: $DEPT" >> "$EMAIL_MENSAGEM"
                fi
            fi
        done
    else
        echo "⚠ Nenhum backup FULL encontrado. Execute um backup FULL antes do incremental." >> "$EMAIL_MENSAGEM"
    fi
fi