AWS EBS Snapshot每月一次,每天一次,为期7天

时间:2018-08-16 14:51:26

标签: amazon-web-services aws-ebs

我想每周天制作一次快照,并删除7天之前的快照,但同时,我想每月保存一个快照。

有人知道如何编辑这行代码吗?

我每天都在执行ebs-snapshot.sh时使用玉米,例如,我需要保存每月第一天制作的快照。

 # How many days do you wish to retain backups for? Default: 7 days
retention_days="7"
retention_date_in_seconds=`date +%s --date "$retention_days days ago"`

[...] 

# Purge all instance volume snapshots created by this script that are older than 7 days
for snapshot_id in $(cat /tmp/snapshot_info.txt)
do
    echo "Checking $snapshot_id..."
    snapshot_date=$(aws ec2 describe-snapshots --output=text --snapshot-ids $snapshot_id --query Snapshots[].StartTime | awk -F "T" '{printf "%s\n", $1}')
    snapshot_date_in_seconds=`date "--date=$snapshot_date" +%s`

    if (( $snapshot_date_in_seconds <= $retention_date_in_seconds )); then
        echo "Deleting snapshot $snapshot_id ..." >> $logfile
        aws ec2 delete-snapshot --snapshot-id $snapshot_id
    else
        echo "Not deleting snapshot $snapshot_id ..." >> $logfile
    fi
done

1 个答案:

答案 0 :(得分:1)

Automate the Amazon EBS Snapshot Lifecycle - Amazon Elastic Compute Cloud可能会更容易。

此功能可以使用已定义的保留策略定期自动创建快照

只需对其进行配置即可创建每日快照,并将其保留7天。

关于每月快照,由于您显然希望永久保留它们,因此只需触发cron作业即可每月创建一次快照。不需要保留逻辑,因此这只是一个简单的aws ec2 create-snapshot命令。