:::: MENU ::::

domingo, 3 de junho de 2012

Imaginemos a situação:
Você possui um servidor que recebe os arquivos de backup, eles são guardados por 30 dias e depois são removidos, liberando espaço para os mais novos. Ah, lembre-se de ter um log dos arquivos removidos ;)
Um modo fácil de fazer essa rotação é guardando os backups em pastas por mês, por exemplo, todos os arquivos de Janeiro ficarão no diretório 01, Fevereiro no 02 e por aí vai...
Mas, caso não seja possível fazer isso, vamos montar um simples script para executar essa tarefa :)


#!/bin/bash
# Remove arquivos maiores que 30 dias e gera um log
FILENAME=FILES_$(date +%Y%m%d%H%M%m).log
find . -mtime +30 -exec echo {} \; > $FILENAME
rm -rfv $(cat $FILENAME)

A lógica é simples:
Na variável, eu crio um arquivo que possui um prefixo e como sufixo coloco:
  1. Ano, com 4 dígitos - %Y
  2. Mês, com 2 dígitos - %m
  3. Dia, com 2 dígitos - %d
  4. Horas, com 2 dígitos - %H
  5. Minutos, com 2 dígitos - %M
  6. Segundos, com 2 dígitos - %S

O Find irá buscar por arquivos que não modificados nos últimos 30 dias, exibindo os seus nomes e enviando o seu output para um arquivo, que será o log dos arquivos removidos naquele momento.

Após isso, o rm irá ler o arquivo gerado pelo find e removê-los um a um.

Mole né?

0 comentários:

Postar um comentário

Só não vale xingar a mãe ou puxar cabelo nos comentários =)

Posts populares