Scrip copia
Aparência
#!/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"