Cópia de arquivos

Publicado por Diego Barcelos (última atualização em 01/09/2015)

[ Hits: 11.868 ]

Download copyfile.sh

Download 1440718528.copyfile.sh (versão 2)




Olá, sou iniciante em Shell Script e estou gostando muito de estudar o mesmo.

Segue meu primeiro script. Se possível gostaria de sugestões de melhorias, entre outros.

Espero que gostem. =D

Função do script: Copiar arquivos de determinada extensão, mantendo a raiz de diretórios. Muito útil pra backups.

  



Versões atualizadas deste script

Versão 2 - Enviado por Jefferson Pires em 27/08/2015

Changelog: Comando:

rm -rf $dir_destino /tmp/qtdCopy.txt

Modificado para:

rm -rf /tmp/qtdCopy.txt

pois não deve-se remover o diretório destino.
O comando era executado quando não existia arquivos no diretório origem com a extensão informada pelo usuário.

Download 1440718528.copyfile.sh


Esconder código-fonte

#!/bin/bash
#
#
######################################################################
#    FUNÇÃO SCRIPT.: REPLICA ESTRURA DE DETERMINADO DIRETÓRIO        #
#                    ESPECIFICANDO EXTENSÃO                          #
#------------------------------------------------------------------- #
#       DEPENDÊNCIAS.:..                                 #
#                                            #
#                                                #
#                                                                    #
#       DESENVOLVIMENTO.: DIEGO BARCELOS NICACIO                     #
#       EMAIL.: BARCELOS3@HOTMAIL.COM                                #
#       DATA CRIACAO.: 20/02/2015                                    #
#       VERSAO.: 2.0_200315                      #
#                                                            #
######################################################################

####--> TELA PRINCIPAL RECEBE VALORES DE VARIAVEIS PELO USUARIO
principal(){

echo -e " \033[1;36m  #####   #######  ######   #     #  #######  ###  #        ####### \033[0m";
echo -e " \033[1;36m #     #  #     #  #     #   #   #   #         #   #        #       \033[0m ";
echo -e "\033[1;36m  #        #     #  #     #    # #    #         #   #        #        \033[0m";
echo -e "\033[1;36m  #        #     #  ######      #     #####     #   #        #####    \033[0m";
echo -e "\033[1;36m  #        #     #  #           #     #         #   #        #        \033[0m";
echo -e "\033[1;36m  #     #  #     #  #           #     #         #   #        #        \033[0m";
echo -e " \033[1;36m  #####   #######  #           #     #        ###  #######  ####### \033[0m";

echo -e " \033[1;33m Digite o caminho de origem.: \033[0m  "
read dir_origem

clear

echo -e " \033[1;34m Digite o caminho de destino.: \033[0m "
read dir_destino

clear

echo -e " \033[1;35m Digite o tipo de extensão (sem o pronto).:  \033[0m  "
read extensao

clear

####--> Exibi informações digitadas pelo usuário
echo -e " \033[1;33m Digite o caminho de origem.: $dir_origem \033[0m "
echo -e " \033[1;34m Digite o caminho de destino.: $dir_destino \033[0m "
echo -e " \033[1;35m Tipo de extensão.:$extensao  \033[0m "

}

execution(){

        clear
        echo -e " \033[41;1;37m AGUARDE... \033[0m"
        sleep 2
    echo "FORAM COPIADOS $qtd ARQUIVOS $extensao"
        rm /tmp/qtdCopy.txt
        find $dir_origem -name  "*.$extensao" | cpio -pdm $dir_destino > /dev/null 2>&1
}

############################################################################

####--> CONDICAO VERIFICA VALORES DAS VARIAVEIS
while [ "$resposta" != "y" ] ; do
    clear
        principal
    if [ ! -d "$dir_origem" ] ;
    then
            clear
            echo -e " \033[41;1;37m Diretorio de origem não existe =(   \033[0m"
        sleep 2
    else
        echo "As informações à cima estão corretas? y/n"
        read resposta
    fi
done

####--> CONDICAO VERIFICA SE DIRETORIO DESTINO EXISTE E CRIAO SE NECESSARIO
if [ ! -d "$dir_destino" ] ;
        then
    mkdir -p $dir_destino
fi

####--> VERIFICA SE EXISTE ARQUIVO E EXECUTA A MÁGICA (Até que fim he he )
find $dir_origem -name "*.$extensao" > /tmp/qtdCopy.txt
qtd=`(cat /tmp/qtdCopy.txt | wc -l)`

if [ "$qtd" = 0  ] ;
       then
       clear
       echo -e " \033[41;1;37m Desculpe, não encontramos nenhum arquivo $extensao no $dir_origem \033[0m"
       rm -rf $dir_destino /tmp/qtdCopy.txt
       exit
fi

execution

echo -e " \033[41;1;37m PROCESSO REALIZADOO COM SUCESSO!    \033[0m"

Scripts recomendados

Despertador com soneca

Script que execulta 5000 pastas -DarkLooping-

.conky

Obter temperatura do Weather.com

Instalação Zabbix-agent CentOS7


  

Comentários
[1] Comentário enviado por elim jorge em 25/03/2015 - 18:40h

Diego Barcelos,
Parabéns!

Nota 10.

Obrigado por compartilhar...




[2] Comentário enviado por cyberm4x em 25/03/2015 - 19:33h

Opa,

Muito obrigado elim jorge
E vamos lá aperfeiçoar e evoluir sempre!

=D

[3] Comentário enviado por CerberusBH em 26/03/2015 - 18:43h

Muito bom cara!!
Mas tenho que te dar um conselho: Shell Script é viciante, haha! Ainda assim, aprecie SEM moderação!
Sorte em seus estudos!

[4] Comentário enviado por cyberm4x em 26/03/2015 - 20:06h

Olá, CerberusBH

Muito obrigado pelo incentivo, nunca tive experiencia em nenhum tipo de linguagem.

Mas por gostar de LINUX acabei me apaixonando pelo Shell aushauhsuahsu.

[5] Comentário enviado por removido em 07/04/2015 - 21:24h

Estava precisando de algo parecido, não sei se o seu script vai servir. Seguinte, eu gosto de personalizar alguns ícones, criando os meus próprios quando acho feio ou não existe no tema em uso, só que dá um trabalhão chato de ter que copiar ícone por ícone em várias pastas (16x16, 22x22, 24x24, 48x48 e assim por diante). Será que daria para copiar um ícone específico de um tema e colar em outro usando um script como o seu? Fica ai um exercício pra vc... hehehe!!!

[6] Comentário enviado por cyberm4x em 08/04/2015 - 15:02h


[5] Comentário enviado por PauloHAC em 07/04/2015 - 21:24h

Estava precisando de algo parecido, não sei se o seu script vai servir. Seguinte, eu gosto de personalizar alguns ícones, criando os meus próprios quando acho feio ou não existe no tema em uso, só que dá um trabalhão chato de ter que copiar ícone por ícone em várias pastas (16x16, 22x22, 24x24, 48x48 e assim por diante). Será que daria para copiar um ícone específico de um tema e colar em outro usando um script como o seu? Fica ai um exercício pra vc... hehehe!!!


Olá, PauloHAC.

Obrigado por ter analisado o meu script. Eu gostaria sim, de brincar e tentar criar algo relacional ao que deseja. Porém, preciso de alguns parâmetros à baixo para entender melhor o conceito.:
## - Qual seria a estrutura de diretórios para tais arquivos, Diretório fixo ?
## - Extension files seriam algo padrão?
## - Ao copiar o arquivo, seria somente renomear o mesmo para o novo tamanho? ou transformar ?

Fico no aguardo, abs !

[7] Comentário enviado por jeffersfp em 27/08/2015 - 19:48h


Cara, tem uma pequena, mas grave falha no seu script xD
Na parte da mágica, hehe, tem um "rm -rf" muito perigoso onde apaga tudo de $dir_destino juntamente com /tmp/qtdCopy.txt.
Executei o script pra testar e informei uma extensão que nenhum arquivo possuia no diretório origem, então uma mensagem é exibida informando que não existe nenhum script com tal extensão. Em seguida o "rm -rf $dir_destino /tmp/qtdCopy.txt" entrou em ação e apagou TUDO o que tinha no meu diretório destino =/
Minha sorte foi que coloquei pra copiar no /tmp xD
CREIO eu que teria que remover o $dir_destino desse comando RM ae...
Do resto, eu curti o script e até salvei (depois de corrigir o erro) para futuros usos, hehe =D
Vlw, cara, abraços e tudo de bom!

[8] Comentário enviado por cyberm4x em 19/10/2015 - 13:11h


[7] Comentário enviado por jeffersfp em 27/08/2015 - 19:48h


Cara, tem uma pequena, mas grave falha no seu script xD
Na parte da mágica, hehe, tem um "rm -rf" muito perigoso onde apaga tudo de $dir_destino juntamente com /tmp/qtdCopy.txt.
Executei o script pra testar e informei uma extensão que nenhum arquivo possuia no diretório origem, então uma mensagem é exibida informando que não existe nenhum script com tal extensão. Em seguida o "rm -rf $dir_destino /tmp/qtdCopy.txt" entrou em ação e apagou TUDO o que tinha no meu diretório destino =/
Minha sorte foi que coloquei pra copiar no /tmp xD
CREIO eu que teria que remover o $dir_destino desse comando RM ae...
Do resto, eu curti o script e até salvei (depois de corrigir o erro) para futuros usos, hehe =D
Vlw, cara, abraços e tudo de bom!


Opa,

jeffersfp muito obrigado pela verificação. Já fiz a correção aqui pra mim também.
E vamos para os novos projetos.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts