date pode ajudá-lo a descobrir o nome do arquivo com 7 dias de idade:
$ date -I
2011-12-03
0 thorsten@moppel:~
$ date -I -d '7 days ago'
2011-11-26
Eu escrevi um script que pega o MySQL e faz o upload para o Amazon S3. Eu adicionei o script ao cronjob e ele é executado às 2 horas da meia-noite e envia o dump MySQL para o S3. Eu estou usando o carimbo de data e hora como o nome do arquivo antes de enviá-lo para S3.
Meu problema é que preciso gerenciar backups de 7 dias no S3 e automaticamente tenho que excluir o arquivo de backup do 8º dia do S3, pois estou usando o carimbo de data e hora como nome de arquivo para tornar cada arquivo único. capaz de descobrir como fazer isso.
E também preciso restaurar o backup mais recente em outra instância do EC2.
Use o script a seguir para girar os backups após o número N de dias:
#!/bin/bash
if [ "$#" == "0" ];then
echo "$0 upper-limit path {command}"
exit 1
fi
### SSH Server setup ###
SSH_USER="vivek"
SSH_SERVER="nas.nixcraft.in"
START=7
DIR_FORMAT="%d-%m-%Y" # DD-MM-YYYY format
#DIR_FORMAT="%m-%d-%Y" #MM-DD-YYYY format
## do not edit below ##
LIMIT=$( expr $START + $1 )
## default CMD ##
CMD="ls"
SSH_PATH="."
[ "$3" != "" ] && CMD="$3" || :
[ "$2" != "" ] && SSH_PATH="$2" || :
DAYS=$(for d in $(seq $START $LIMIT);do date --date="$d days ago" +"${DIR_FORMAT}"; done)
for d in $DAYS
do
ssh ${SSH_USER}@${SSH_SERVER} ${CMD} ${SSH_PATH}/$d
done
Este script precisa de alguma modificação, eu tirei daqui.
Você pode ler o artigo completo para entendê-lo e modificá-lo de acordo com suas necessidades.
Além de tudo isso, recomendo que você use o backup do Rsnaphot ou Bacula para backup e recuperação automatizados.
Se você precisar apenas de 7 dias de backups, poderá usar o "dia da semana" (% A ou% a) ou o "dia da semana" (% w) com data e deixar o upload do S3 substituir o arquivo da semana anterior.
FILENAME=$(date '+%A.sql')
mysqldump > $FILENAME