Я написал сценарий, который берет дампы MySQL и загружает их в Amazon S3. Я добавил скрипт в задание cron, и он запускается в 2 часа ночи и выгружает дамп MySQL на S3. Я использую дату и время в качестве имени файла перед его загрузкой в S3.
Моя проблема в том, что мне нужно управлять 7-дневным резервным копированием на S3, и я автоматически должен удалить файл резервной копии 8-го дня из S3, поскольку я использую дату и время в качестве имени файла, чтобы сделать каждый файл уникальным, я не могу понять как это сделать.
А также мне нужно восстановить последнюю резервную копию в другом экземпляре EC2.
date может помочь вам определить правильное имя файла 7-дневной давности:
$ date -I
2011-12-03
0 thorsten@moppel:~
$ date -I -d '7 days ago'
2011-11-26
Если вам нужно только 7 дней резервного копирования, вы можете использовать «название дня недели» (% A или% a) или номер «дня недели» (% w) с датой и позволить загрузке S3 заменить файл прошлой недели.
FILENAME=$(date '+%A.sql')
mysqldump > $FILENAME
Используйте следующий сценарий для ротации резервных копий через 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 Backup для автоматического резервного копирования и восстановления.