Linux
管理每周備份
我編寫了一個腳本,它接受 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 備份進行自動備份和恢復。