Você está seriamente superando isso. Mal.
Veja alguns pseudocódigo:
- Todos os dias:
- faça um backup, coloque em
daily
directory - remover tudo, exceto os últimos 7
daily
backups
- faça um backup, coloque em
- toda semana:
- faça um backup, coloque em
weekly
directory - remover tudo, exceto os últimos 5
weekly
backups
- faça um backup, coloque em
- Todo mês:
- faça um backup, coloque em
monthly
directory - remover tudo, exceto os últimos 12
monthly
backups
- faça um backup, coloque em
- todos os anos:
- faça um backup, coloque em
yearly
directory
- faça um backup, coloque em
A quantidade de lógica que você precisa implementar é quase a mesma, né? BEIJO.
Isso parece mais fácil:
s3cmd ls s3://backup-bucket/daily/ | \
awk '$1 < "'$(date +%F -d '1 week ago')'" {print $4;}' | \
xargs --no-run-if-empty s3cmd del
Ou por contagem de arquivos em vez de idade:
s3cmd ls s3://backup-bucket/daily/ | \
awk '$1 != "DIR"' | \
sort -r | \
awk 'NR > 7 {print $4;}' | \
xargs --no-run-if-empty s3cmd del