以下是一个示例的AWS Lightsail自动备份shell脚本:
#!/bin/bash
# 设置AWS凭证
export AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"
export AWS_DEFAULT_REGION="your_region"
# 设置备份参数
INSTANCE_NAME="your_instance_name"
BACKUP_NAME="backup_$(date +%Y%m%d%H%M%S)"
BACKUP_DESCRIPTION="Backup created on $(date +%Y-%m-%d-%H:%M:%S)"
# 创建备份
aws lightsail create-instance-snapshot \
--instance-name $INSTANCE_NAME \
--instance-snapshot-name $BACKUP_NAME \
--instance-snapshot-description "$BACKUP_DESCRIPTION"
# 删除旧备份(保留最近5个备份)
snapshots=$(aws lightsail get-instance-snapshots --instance-name $INSTANCE_NAME --query 'instanceSnapshots[].name' --output text)
count=0
for snapshot in $snapshots; do
if [[ $snapshot == backup_* ]]; then
count=$((count+1))
if [[ $count -gt 5 ]]; then
aws lightsail delete-instance-snapshot --instance-snapshot-name $snapshot
fi
fi
done
在这个脚本中,你需要将your_access_key
、your_secret_key
和your_region
替换为你自己的AWS凭证信息。然后,设置INSTANCE_NAME
为你要备份的Lightsail实例的名称。
脚本首先使用aws lightsail create-instance-snapshot
命令创建一个新的实例快照(备份)。BACKUP_NAME
是备份的名称,它包含了当前日期和时间。BACKUP_DESCRIPTION
是备份的描述,它包含了创建备份的日期和时间。
接下来,脚本使用aws lightsail get-instance-snapshots
命令获取所有实例快照的名称。然后,它遍历这些快照,并检查它们是否以backup_
开头。如果是,计数器count
加1。如果count
大于5,脚本使用aws lightsail delete-instance-snapshot
命令删除该快照。
你可以使用cron等工具定期运行此脚本,以实现自动备份Lightsail实例的功能。