pastas tar mais antigas da semana passada

0

Estou tentando criar um script que precisa arquivar logs de texto da semana passada.

Basicamente, temos um caminho onde temos pastas na data da seguinte forma, cada pasta contém arquivos csv contendo dados para esse dia

2015-02-01
2015-02-02
2015-02-03
2015-02-04
2015-02-05

Queremos executar um script que seja executado todos os domingos e arquivar todas as pastas e arquivos em um arquivo para todas as pastas na semana passada.

Alguma ideia de como posso conseguir isso?

Estou usando este comando como um teste que deve arquivar todas as pastas com mais de 5 dias, mas é apenas uma pasta compactada

find . -type d -mtime +5 -print -exec tar -zvcf test.tar.gz {} \;
    
por Junaid388 18.02.2015 / 21:26

1 resposta

0

Se você estiver executando o script em um dia específico e tiver acesso ao GNU date e ao GNU tar (por exemplo, Linux), poderá usar algo assim (imagino que esteja usando o bash, e não testado em outros shells) :

for i in {1..7}; do
    FOLDER='date +%Y-%m-%d -d "$i days ago"'
    tar zcfv /var/tmp/${FOLDER}.tgz ${FOLDER}/
done

A data do GNU é importante, pois entende o -d "N dias atrás" param.

Como os nomes das pastas são previsíveis, isso geralmente também é mais rápido do que um achado

/ Edit: se você precisar de um arquivo por uma semana inteira, basta adicionar às fontes tar.

WEEK='date +%U'
SOURCE=""
for i in {1..7}; do
    FOLDER='date +%Y-%m-%d -d "$i days ago"'
    SOURCE=${SOURCE}" "${FOLDER}/
done
tar zcfv /var/tmp/week${WEEK}.tgz ${SOURCE}

Saída dos meus testes (a partir de hoje):

tar zcfv /var/tmp/week07.tgz 2015-02-17/ 2015-02-16/ 2015-02-15/ 2015-02-14/ 2015-02-13/ 2015-02-12/ 2015-02-11/
    
por 18.02.2015 / 21:41