Ir para o conteúdo

Scrip copia

De RJGSWiki
#!/bin/bash +x
#
# ###########################
# ### DECLARAÇÃO DE VARIÁVEIS
MEU_IP="$(hostname -I | awk '{print $1}')"

timestamp() {
    date +"%d/%m/%y-%H:%M"
}

log() {
    local MENSAGEM="$1"
    local COR="${2:-$COR_L_BRANCO}"  # Se não informar cor, usa branco
    echo -e "[$(timestamp)] - ${COR}${MENSAGEM}${COR_FINAL}"
}


confirmar() {
    echo -e "$COR_N_L_BRANCO -------------------------------------------------- $COR_FINAL"
    echo -e "$COR_N_L_BRANCO  0$CORFINAL - Sair"
    echo -e "$COR_L_N_BRANCO  1$CORFINAL - Voltar"
    echo -e "$COR_L_N_BRANCO  2$CORFINAL - Confirmar"
    echo -e "$COR_N_L_BRANCO -------------------------------------------------- $COR_FINAL"
    echo
    read -rs OPCAO

    case "$OPCAO" in
        0)
            log "Você digitou $OPCAO. Encerrando o script..." "$COR_L_VERMELHO"
            #echo " " 
            sleep 3
            exit 0
            ;;
        1)
            #echo " "
            log "Você digitou $OPCAO. Vamos voltar para o começo..." "$COR_L_AMARELO"
            log " "
            log "Reiniciando o script..."
            sleep 2
            exec "$0"
            ;;
        2)
            #echo " "
            log "Você digitou o $OPCAO. Prosseguindo..." "$COR_L_AZUL"
            log " "
            ;;
        *)
            log "Opção inválida!"
            confirmar
            ;;
    esac
}

### VARIÁVEIS DE CORES
COR_L_PRETO="\033[30m"
COR_L_VERMELHO="\033[31m"
COR_L_VERDE="\033[32m"
COR_L_AMARELO="\033[33m"
COR_L_AZUL="\033[34m"
COR_L_MAGENTA="\033[35m"
COR_L_CIANO="\033[36m"
COR_L_BRANCO="\033[37m"
COR_FINAL="\033[0m"
# NEGRITO
COR_N_L_BRANCO="\033[1;37m"
COR_N_L_PRETO="\033[30m"
COR_N_L_VERMELHO="\033[31m"
COR_N_L_VERDE="\033[32m"
COR_N_L_AMARELO="\033[33m"
COR_N_L_AZUL="\033[34m"
COR_N_L_MAGENTA="\033[35m"
COR_N_L_CIANO="\033[36m"
# FUNDO VERMELHO
COR_F_VERMELHO_L_PRETO="\033[30;41m"
COR_F_VERMELHO_L_VERDE="\033[32;41m"
COR_F_VERMELHO_L_AMARELO="\033[33;41m"
COR_F_VERMELHO_L_AZUL="\033[34;41m"
COR_F_VERMELHO_L_MAGENTA="\033[35;41m"
COR_F_VERMELHO_L_CIANO_="\033[36;41m"
COR_F_VERMELHO_L_BRANCO="\033[37;41m"
# FUNDO VERDE
COR_F_VERDE_L_PRETO="\033[30;42m"
COR_F_VERDE_L_VERMELHO="\033[31;42m"
COR_F_VERDE_L_AMARELO="\033[33;42m"
COR_F_VERDE_L_AZUL="\033[34;42m"
COR_F_VERDE_L_MAGENTA="\033[35;42m"
COR_F_VERDE_L_CIANO="\033[36;42m"
COR_F_VERDE_L_BRANCO="\033[37;42m"
# FUNDO AMARELO
COR_F_AMARELO_L_PRETO="\033[30;43m"
COR_F_AMARELO_L_VERMELHO="\033[31;43m"
COR_F_AMARELO_L_VERDE="\033[32;43m"
COR_F_AMARELO_L_AZUL="\033[34;43m"
COR_F_AMARELO_L_MAGENTA="\033[35;43m"
COR_F_AMARELO_L_CIANO="\033[36;43m"
COR_F_AMARELO_L_BRANCO="\033[37;43m"
# FUNDO AZUL
COR_F_AZUL_L_PRETO="\033[30;44m"
COR_F_AZUL_L_VERMELHO="\033[31;44m"
COR_F_AZUL_L_VERDE="\033[32;44m"
COR_F_AZUL_L_AMARELO="\033[33;44m"
COR_F_AZUL_L_MAGENTA="\033[35;44m"
COR_F_AZUL_L_CIANO="\033[36;44m"
COR_F_AZUL_L_BRANCO="\033[37;44m"
# FUNDO VERMELHO COM NEGRITO
COR_F_VERMELHO_L_N_PRETO="\033[1;30;41m"
COR_F_VERMELHO_L_N_VERDE="\033[1;32;41m"
COR_F_VERMELHO_L_N_AMARELO="\033[1;33;41m"
COR_F_VERMELHO_L_N_AZUL="\033[1;34;41m"
COR_F_VERMELHO_L_N_MAGENTA="\033[1;35;41m"
COR_F_VERMELHO_L_N_CIANO="\033[1;36;41m"
COR_F_VERMELHO_L_N_BRANCO="\033[1;37;41m"
# FUNDO VERDE COM NEGRITO
COR_F_VERDE_L_N_PRETO="\033[1;30;42m"
COR_F_VERDE_L_N_VERMELHO="\033[1;31;42m"
COR_F_VERDE_L_N_AMARELO="\033[1;33;42m"
COR_F_VERDE_L_N_AZUL="\033[1;34;42m"
COR_F_VERDE_L_N_MAGENTA="\033[1;35;42m"
COR_F_VERDE_L_N_CIANO="\033[1;36;42m"
COR_F_VERDE_L_N_BRANCO="\033[1;37;42m"
# FUNDO AMARELO COM NEGRITO
COR_F_AMARELO_L_N_PRETO="\033[1;30;43m"
COR_F_AMARELO_L_N_VERMELHO="\033[1;31;43m"
COR_F_AMARELO_L_N_VERDE="\033[1;32;43m"
COR_F_AMARELO_L_N_AZUL="\033[1;34;43m"
COR_F_AMARELO_L_N_MAGENTA="\033[1;35;43m"
COR_F_AMARELO_L_N_CIANO="\033[1;36;43m"
COR_F_AMARELO_L_N_BRANCO="\033[1;37;43m"
# FUNDO AZUL COM NEGRITO
COR_F_AZUL_L_N_PRETO="\033[1;30;44m"
COR_F_AZUL_L_N_VERMELHO="\033[1;31;44m"
COR_F_AZUL_L_N_VERDE="\033[1;32;44m"
COR_F_AZUL_L_N_AMARELO="\033[1;33;44m"
COR_F_AZUL_L_N_MAGENTA="\033[1;35;44m"
COR_F_AZUL_L_N_CIANO="\033[1;36;44m"
COR_F_AZUL_L_N_BRANCO="\033[1;37;44m"
#############################
#
echo " "
echo -e "$COR_F_VERDE_L_N_PRETO                                                      $COR_FINAL"
echo -e "$COR_F_AMARELO_L_N_BRANCO                                                      $COR_FINAL"
echo -e "$COR_F_VERMELHO_L_N_BRANCO                                                      $COR_FINAL"
echo "                                                                                         |"
echo -e " ####################################################"
echo -e " AUTOR.: Róbison Joel Guimarães Simon"
echo -e " DATA..: 14/02/2026"
echo -e " TÍTULO: Script para copiar arquivos e diretórios"
echo -e " ####################################################"
echo " "
echo -e "$COR_F_VERMELHO_L_BRANCO                                                      $COR_FINAL"
echo -e "$COR_F_VERMELHO_L_N_BRANCO   ATENÇÃO                                            $COR_FINAL"
echo -e "$COR_F_VERMELHO_L_BRANCO   Esse script vai fazer tal coisa                    $COR_FINAL"
echo -e "$COR_F_VERMELHO_L_BRANCO                                                      $COR_FINAL"
echo " "
echo " Você confirma a execução do script?"
confirmar

#############################
### ORIGEM
log "Digite o caminho absoluto do que será copiado:"
echo " "
read -r OQUEVAI
echo " "
# if [ ! -e "$OQUEVAI" ]; then
#     log "O caminho informado não existe!"
#     exit 1
# fi

log "Você digitou: $OQUEVAI. Confirma?"
echo " "
confirmar
#############################
### DESTINO
log "Digite o caminho absoluto PARA ONDE SERÁ COPIADO:"
echo " "
read -r PRAONDE
echo " "
log "Destino informado: $PRAONDE. Confirma?"
echo " "
confirmar
#############################s
### LOCAL OU REMOTO
log "A cópia será local (1) ou remota via SCP (2)?"
echo " "
echo -e "$COR_N_L_BRANCO 1 - Local$COR_FINAL"
echo -e "$COR_N_L_BRANCO 2 - Remota$COR_FINAL"
read -rs TIPO
echo " "

case "$TIPO" in
    1)
        log "Cópia local selecionada. Confirma?" "$COR_L_AMARELO"
        confirmar
        log "Iniciando cópia local..."
        cp -r "$OQUEVAI" "$PRAONDE"
        log " "
        log "Cópia local concluída com sucesso!" "$COR_L_VERDE"
        log " "
        ;;
    2)
        log "Cópia remota selecionada" "$COR_L_AMARELO"
        log " "
        log "Digite o IP do destino:"
        echo " "
        read -r IPONDE
        echo " "

        log " "
        log "Digite o usuário remoto:"
        echo " "
        read -r USERCOPY
        echo " "

        log "Confirma cópia para $USERCOPY@$IPONDE:$PRAONDE ?" "$COR_L_AMARELO"
        confirmar

        log "Iniciando cópia remota..."
        scp -r "$OQUEVAI" "$USERCOPY@$IPONDE:$PRAONDE"
        log " "
        log "Cópia remota concluída com sucesso!" "$COR_L_VERDE"
        log " "
        ;;
    *)
        log "Opção inválida!"
        exec "$0"
        ;;
esac

log "Script finalizado com sucesso."
echo " "
echo -e "$COR_F_VERDE_L_N_PRETO                                                      $COR_FINAL"
echo -e "$COR_F_AMARELO_L_N_BRANCO                                                      $COR_FINAL"
echo -e "$COR_F_VERMELHO_L_N_BRANCO                                                      $COR_FINAL"