Bash script tar arquivos específicos com período de retenção

0

Eu sou novo no bash script. Eu preciso manter o arquivo por um período de retenção de um mês e arquivar outro.

Exemplo:

Formato do arquivo: WE20160225.log (20160225 YYYYMMDD)

Diga no diretório /oracle/Sales tem 2 arquivos:

WE20160130.log

WE20151201.log

Eu preciso tar o WE20151201.log

Mas não WE20160130.log porque o arquivo está a menos de um mês a partir de agora. Como posso fazer isso? (provavelmente precisará substring o nome do arquivo)

Consigo alterar o diretório, mas não sei o que fazer a seguir. Minha lógica é percorrer o arquivo, obter a data do nome do arquivo e comparar com a data atual.

Eu preciso usar a data do nome do arquivo, não a data de modificação do arquivo.

SALES_DIR="/oracle/sales/"
cd $SALES_DIR
    
por hades 25.02.2016 / 13:45

2 respostas

0

Você pode usar algo assim:

find somedir/* -mtime +5 -exec rm {} \;

É usado para encontrar arquivos com mais de 5 dias e passar o arquivo encontrado para excluir.

    
por 25.02.2016 / 14:06
0

Aqui está o script para compactar arquivos de log antigos.

#!/bin/bash
files=($(find /oracle/Sales -mtime +30))
tar cvfz backup.tar.gz "${files[@]}"

-mtime +number-of-days para descrever o arquivo que você precisa fazer backup.

Para excluir o arquivo antigo, tente isto

find /oracle/Sales -mtime +30 | xargs -n1 echo rm

Se você obtiver a saída correta, remova echo da linha.

    
por 25.02.2016 / 14:09

Tags