дата может помочь вам определить правильное имя файла 7-дневной давности:
$ date -I
2011-12-03
0 thorsten@moppel:~
$ date -I -d '7 days ago'
2011-11-26
Используйте следующий сценарий для ротации резервных копий через N дней:
#!/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
Этот сценарий требует некоторых изменений, я взял его отсюда.
http: // www.cyberciti.biz/tips/ssh-rotate-backup-shell-script.html
Вы можете прочитать всю статью, чтобы понять ее и изменить в соответствии с вашими потребностями.
Помимо всего этого, я бы порекомендовал использовать Rsnaphot или Bacula для автоматического резервного копирования и восстановления.
Если вам нужно только 7 дней резервного копирования, вы можете использовать "название дня недели" (% A или% a) или номер "дня недели" (% w) с датой и позволить Загрузка S3 заменяет файл прошлой недели.
FILENAME=$(date '+%A.sql')
mysqldump > $FILENAME