Script de cópia (destino - origem) otimizado

Publicado por Alexandre Gonçalves Monteiro da Silva (última atualização em 07/09/2011)

[ Hits: 7.039 ]

Homepage: https://www.vivaolinux.com.br/~alexandre_gms

Download copia_pastas.sh




Pessoal, este script foi feito para economizar economizar a digitação do usuário e facilitar a busca de pastas.
Caso você queira copiar uma pasta para um determinado local, porém você não lembra exatamente o caminho, ou você precisa copiar determinado diretório e o caminho são trocentas pastas acima ou abaixo do seu diretório corrente.

O script funciona basicamente assim:
1) Digite a pasta que você quer copiar (caminho completo)
2) Digite apenas o nome da pasta destino (SOMENTE O NOME E NÃO O CAMINHO COMPLETO)
3) Caso a pasta que você digitou exista em mais de um local do Sistema, ele vai te listar todas, por exemplo, você digitou a pasta destino "bkp_old", ele listará todos os caminhos em que a pasta foi encontrada:

1 /opt/apache-tomcat/6.0.21/bkp_old
2 /etc/rc.d/bkp_old
3 /etc/appnet/conf/bkp_old
4 /var/log/rdm/bkp_old

Em seguida você digitará o numero do caminho desejado.

Após a cópia será exibida uma mensagem na tela de sucesso ou erro.

Outra opção do script é que o usuário é obrigado a digitar ambas as pastas (destino e origem), se os campos estiverem vazios, o script alertará o usuário.

Boas cópias!

  



Esconder código-fonte

#!/bin/bash

k=1
SAIDA1="pastas1.txt"
SAIDA2="pastas2.txt"

rm -f $SAIDA1 $SAIDA2 &> /dev/null

echo -e "\nQUAL PASTA VOCE DESEJA COPIAR?"
read pasta

echo -e "\nPARA ONDE VOCE DESEJA COPIAR A PASTA $pasta?"
echo -e "DIGITE SOMENTE O NOME DA PASTA (SEM O CAMINHO COMPLETO)\n"
read destino

if [ -z $pasta ] || [ -z $destino ]; then

        echo -e "\nOS 2 CAMPOS ACIMA DEVEM SER PREENCHIDOS\n"
        exit 1

fi

if [ ! -d $pasta ]; then

   echo -e "\n $pasta NAO EXISTE, FAVOR VERIFICAR O CAMINHO CORRETO!\n"
   exit 1

fi

find / -type d -iname *$destino* 2> /dev/null > $SAIDA1

if [ `cat $SAIDA1 | wc -l` -gt "1" ]; then

   echo -e "\nFOI LOCALIZADA MAIS DE 1 PASTA DE DESTINO, DIGITE O NUMERO DELA:\n"

   cat $SAIDA1 | while read line
   do

      echo "$k $line" >> $SAIDA2
      let k++

   done

   cat $SAIDA2
   read num

   if [ -z $num ]; then

      echo -e "\nVOCE DEVE ESCOLHAR UM NUMERO, EXECUTE NOVAMENTE!\n"
      exit 1

   fi

   pasta_correta=`grep ^$num $SAIDA2 | cut -d' ' -f2`
   cp -rvp "$pasta" "$pasta_correta" &> /dev/null
   if [ $? -eq 0 ]; then

      echo -e "\nPASTA $pasta COPIADA COM SUCESSO PARA $pasta_correta \n"

   else

      echo -e "\nERRO AO COPIAR A PASTA $pasta PARA $pasta_correta ---> VERIFICAR PERMISSOES!\n"

   fi

else

   cp -rvp `cat $SAIDA1` "$destino" &> /dev/null
   if [ $? -eq 0 ]; then

      echo -e "\nPASTA $pasta COPIADA COM SUCESSO PARA $destino \n"

   else

      echo -e "\nERRO AO COPIAR A PASTA $pasta PARA $destino ---> VERIFICAR PERMISSOES!\n"

   fi

fi

Scripts recomendados

Contador de tempo de execução

Montando compartilhamentos Webdav no Linux

Eu vejo gente morta. Descubra se alguém já morreu!

Configuração do horário de verão 2006/2007 (Red Hat, Fedora)

BackUp Mensal de Relatórios Diários


  

Comentários
[1] Comentário enviado por lbleite76 em 12/09/2013 - 11:56h

Show , parabens pelo script !


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts