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.
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
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.
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.
Tags bash