Script de shell para manter backups dos últimos 3 dias, das últimas 3 semanas e dos últimos 3 meses

2

Não tenho certeza absoluta de como fazer isso devido à minha falta de conhecimento da concha.

NOW=$(date +"%Y.%m.%d.%T")

tar czf /backups/web_backup_$NOW.tgz /web/

Por favor, me ajude a excluir backups antigos para que ele continue:

  1. Últimos 3 dias
  2. Um backup cada das últimas 3 semanas
  3. Um backup para os últimos 3 meses
por elated 28.09.2010 / 16:58

3 respostas

1

algo como isto: (apenas uma ideia)

mkdir -p monthly
mkdir -p weekly

ln backup_$NOW.tgz weekly/

# find current month
month=$(date +%Y-%m-)
# find the first file of the current month in the weekly folder
first_monthly=$(ls --sort=time -1 weekly/*$month* 2>/dev/null | tail -1)
# and put it in the monthly folder
ln -f $first_monthly monthly/

# we need only 5 weekly backups
ls --sort=time -1 weekly/* 2>/dev/null | tail -n+6 >> /tmp/deletebackups.txt
# we need only 5 monthly backups
ls --sort=time -1 monthly/* 2>/dev/null | tail -n+6 >> /tmp/deletebackups.txt

# delete the extra files
#rm $(cat /tmp/deletebackups.txt) 2>/dev/null
xargs --arg-file /tmp/deletebackups.txt rm
    
por 28.09.2010 / 17:12
4

Veja o rsnapshot. Pode fazer o que você quer sair da caixa.

    
por 29.09.2010 / 07:53
2

Se você usa o rsnapshot em primeiro lugar, ele realiza a devida retenção de backup na hora (cria aquela estrutura de snapshots por hora, diários, semanais ...).

Se você não criar snapshots com o rsnapshot ou já tiver um conjunto consideravelmente grande de snapshots e quiser reduzi-lo em retrospectiva, dê uma olhada em timegaps . Foi projetado exatamente neste caso de uso (implementação simples de políticas de retenção de backup). De acordo com seu caso de uso, você poderia invocar timegaps assim:

$ timegaps days3,weeks3,months3 *.tgz

Em seguida, ele identificaria os arquivos tgz que precisam ser rejeitados (com base no tempo de modificação do arquivo) e os gravaria no stdout para revisão ou processamento adicional (modo somente leitura não invasivo). Timegaps também podem --move desses arquivos ou diretamente ou --delete deles. Se necessário, ele pode analisar o tempo de criação do item a partir do nome do arquivo (dê uma olhada na mensagem de ajuda) em vez de recuperá-lo via stat() .

Disclaimer: Eu sou o autor de timegaps.

    
por 24.03.2014 / 19:14