Linux

管理每周備份

  • December 3, 2011

我編寫了一個腳本,它接受 MySQL 轉儲並將其上傳到 Amazon S3。我已將腳本添加到 cronjob,它在午夜 2 點執行並將 MySQL 轉儲上傳到 S3。在將文件上傳到 S3 之前,我使用日期和時間戳作為文件名。

我的問題是我需要在 S3 上管理 7 天的備份,並且我必須自動從 S3 中刪除第 8 天的備份文件,因為我使用日期和時間戳作為文件名以使每個文件都是唯一的,我無法計算出來怎麼做。

而且我還必須在另一個 EC2 實例中恢復最新的備份。

date 可以幫助您找出正確的 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 備份進行自動備份和恢復。

引用自:https://serverfault.com/questions/337306