Script move diretório por nome,data?

1. Script move diretório por nome,data?

Loro
Lorosp

(usa Red Hat)

Enviado em 13/08/2014 - 11:12h

Bom Dia Pessoal

Tenho uma tarefa um pouco confusa num server Linux aqui, estou com a estrutura de pastas assim:

/home/user/fotos e dentro da pasta /fotos tenho;

/D01
/D02
/D03

Dentro de cada pasta D01 por exemplo, tenho pastas geradas diariamente que ficam
armazenando fotos de um sistema de automação, com a seguinte nomenclatura

/20140501 - Estas pasta se referem a data em que as fotos são criadas
"YYYYMMDD" Ano, Mês, Dia.

Pois bem, preciso copiar estas pastas para uma HD externa já configurada;

/HdBkp

Estou tentando criar um script, para que eu mantenha no server, somente 3 meses
de pastas.

Manualmente executo o seguinte comando:

mv -v D01/201405* /HdBkp/D01/

- Assim na pasta /home/user/fotos/D01 as pastas do mês de Maio inteiro são movidas para /HdBkp

Não encontro uma maneira para se considerar as pastas "201405*" dentro de D01 por exemplo,
como garantir que na data de hoje 13/08/2014 seja movida a pasta de 20140513 para
as pastas /HdBkp/D01 , /HdBkp/D02 e /HdBkp/D03 respectivamente?

Se puderem ajudar, agradeço.

Abraços





  


2. Re: Script move diretório por nome,data?

luiz
luizsouza99

(usa Linux Mint)

Enviado em 13/08/2014 - 11:32h

Você tem que olhar isto por outro ângulo, por exemplo, se dou o comando ls | sort ele exibirá o conteúdo de determinado diretório em ordem alfabética e numérica, então …

1º ls | sort | wc -l # irá contar quantas linhas o comando vai gerar
2º ls | sort | sed -n '3p' # mostra apenas a terceira linha onde está a sua ultima pasta

no passo 2 você joga o resultado dele numa variavel, depois é só dar o comando para recortar usando esta variavel. Assim toda vez o script irá recortar a terceira pasta que é a mais velha.

Testa se o sort esta ordenando corretamente as pastas, senão muda o esquema de datas

qualquer duvida de como montar o script consulte o “Shell Script do Zero”
http://www.vivaolinux.com.br/topico/Shell-Script/Dica-Aulas-Shell-Script-do-zero


3. Script move diretório por nome,data?

Loro
lorosp

(usa Red Hat)

Enviado em 13/08/2014 - 14:23h

Valeu luizsouza99 em outros casos eu uso o rsync pois fica tudo igual,
tanto no Host como no Destino.

Mas nesse caso específico, preciso manter somente 3 meses de pastas;

Ex. 20140501 até 20140901

ou seja a cada dia as pastas de 3 meses atrás são movidas para o Destino.

Utilizando o mv ;

mv -v /home/etr/fotos/D01/201405* /HdBkp/D01/

então as pastas 201405 * todos os dias da pasta serão movidas para /HdBkp/D01

isso deverá ser feito para todas as pastas: D01, D02 e D03.

Tenho feito isso manualmente, mas estou procurando trabalhar na lógica de nomes das pastas
2014 Ano - 05 Mês - Dia 01 algo relacionado com ( date +%Y%m%d`) mas ainda não funcionou.

Mesmo assim
Obrigado


4. Re: Script move diretório por nome,data?

luiz
luizsouza99

(usa Linux Mint)

Enviado em 16/08/2014 - 01:24h

como garantir que na data de hoje 13/08/2014 seja movida a pasta de 20140513 ?

#!/bin/bash

DIA=$(date +%d)
MES=$(date +%m)

# pegue a variavel mês e diminua por 3 assim você irá ter exatamente a pasta com o mesmo dia só que de 3 meses atrás.

mv D01/2014${MES}${DIA} /HdBkp/D01/

O script acima coleta o número da data atual e joga no comando mv, assim ele recorta de acordo com a data, para chegar na pasta D01, D02 de forma automatica eu teria que entender o funcionamento dela, é o numero do mês ? É uma sequencia ?
depois de descobrir a lógica dela, é só usar algo no pc como referencia, por exemplo, se os numeros correspondem ao mês fica facil, se é uma sequencia numerica você pode fazer o script escrever num arquivo texto o ultimo nº recortado e quando ele for buscar este valor ele soma +1 recorta e escreve novamente o nº atual que foi recortado.

Acho que você esta se enrolando na lógica de programaçao e no leque de comandos disponíveis no shell, porque não esta dificil, dá uma olhada no shell script do zero, lá tem outras formas de misturar texto com variavel

quando se trata de numeros é bem mais facil, quando temos variação de nomes fica bem mais dificil prever o que pode vir.


5. Re: Script move diretório por nome,data?

Loro
lorosp

(usa Red Hat)

Enviado em 18/08/2014 - 08:36h

Bom Dia

Então, luizsouza99 , era algo assim que eu estava falando,
muitas vezes fico travado em coisas básicas no Linux, pois
na maioria do tempo cuido de estruturação,lógica e armazenamento de dados no Server.

As pastas D01, D02 e etc, são pastas que recebem imagens de outros servidores externos,
receberam essa nomenclatura para facilitar quando é feito um backup por exemplo.

Mas enfim, é exatamente essa visão que você postou que eu procurava,
vou testar por aqui, mas já posso considerar como resolvido.

Agradeço pela atenção e apoio, muio obrigado.



6. Script Resolvido

Loro
lorosp

(usa Red Hat)

Enviado em 22/08/2014 - 11:03h

Bom Dia

É isso aí luizsouza99, funcionou.

a lógica era esta mesma.

Agradeço o apoio, ao fórum e claro ao Luiz.

Obrigado.


7. Re: Script move diretório por nome,data?

luiz
luizsouza99

(usa Linux Mint)

Enviado em 22/08/2014 - 23:44h

que bom cara, fico feliz

coloca o topico como resolvido e se possivel posta o codigo referente a pergunta para futuras pesquisas (muda os nomes que comprometem a empresa)


8. Resolvido

Loro
lorosp

(usa Red Hat)

Enviado em 16/09/2014 - 14:56h

Olá
Desculpem a demora, mas é muito trabalho que tenho por aqui,
então só agora retornei.

Não consigo marcar como resolvido, pois quando faço isso
ele retorna a mensagem:

NotFound
Home » Página não encontrada

A página que você procura não foi encontrada.

Procure pelo documento desejado no formulário de busca presente no cabeçalho do site ou entre em contato com

suporte@vivaolinux.com.br.

Porém com a ajuda dos nobres colegas este post já está RESOLVIDO.

Agradeços a todos pelo apoio.

Loro


9. Resolvido

Loro
lorosp

(usa Red Hat)

Enviado em 16/09/2014 - 15:11h

Olá
Desculpem a demora, mas é muito trabalho que tenho por aqui,
então só agora retornei.

Não consigo marcar como resolvido, pois quando faço isso
ele retorna a mensagem:

NotFound
Home » Página não encontrada

A página que você procura não foi encontrada.

Procure pelo documento desejado no formulário de busca presente no cabeçalho do site ou entre em contato com

suporte@vivaolinux.com.br.

Porém com a ajuda dos nobres colegas este post já está RESOLVIDO.

Confiram:


#!/bin/bash

DIA=$(date +%d)
MES=$(date --date='-2 month ' +%m)

# variavel mês -2 move pasta de 2 meses atrás.

if [ -e mv_dados_S05.txt ]
then
echo "MOVENDO: "`date +%Y%m%d` `date +%H:%M:%S` "mv_dados_S05.sh em execução. Abortando..." >> mv_dados_S05.log
exit
fi

echo "MOVENDO: Iniciando BACKUP de dados da S-05" >> mv_dados_S05.log
echo "***************************************************************"

touch mv_dados_S05.txt

echo "MOVENDO: "`date +%Y%m%d` `date +%H:%M:%S` " S05 START" >> mv_dados_S05.log

mv -v /home/usr/dados/S05/2014${MES}${DIA} /home/Storage2/S05/ >> mv_dados_S05.log

echo "MOVENDO: "`date +%Y%m%d` `date +%H:%M:%S` " S05 STOP" >> mv_dados_S05.log

rm -f mv_dados_S05.txt


echo "MOVENDO: Finalizando BACKUP de dados da S-05" >> mv_dados_S05.log
echo "*****************************************************************" >> mv_dados_S05.log


export DIASEM=`date +%Y%m%d`

zip mv_dados_S05-$DIASEM mv_dados_S05.log
:> mv_dados_S05.log


Agradeços a todos pelo apoio.

Loro






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts