【发布时间】:2017-01-24 16:05:37
【问题描述】:
我有 Google Compute Engine 实例,我想做自动快照/映像备份。 它应该像一个计划作业,每 5 小时为我的实例制作一个快照/图像。
我读到可以使用 Cron 作业,但我不明白该怎么做。
您能帮我了解如何进行自动快照/图像吗?
提前致谢。
【问题讨论】:
标签: google-app-engine google-compute-engine
我有 Google Compute Engine 实例,我想做自动快照/映像备份。 它应该像一个计划作业,每 5 小时为我的实例制作一个快照/图像。
我读到可以使用 Cron 作业,但我不明白该怎么做。
您能帮我了解如何进行自动快照/图像吗?
提前致谢。
【问题讨论】:
标签: google-app-engine google-compute-engine
您可以使用 gcloud 命令创建一个 .sh 脚本来制作快照。这是我们正在使用的脚本:
# Settings
GCLOUD_PROJECT="my-project"
SERVICE_ACCOUNT_JSON="location to service account json"
DISK_NAME="my-disk"
GCE_ZONE="europe-west1-d"
DATETIME=`date "+%Y-%m-%d-%H-%M-%S"`
# authenticate first
export CLOUDSDK_PYTHON_SITEPACKAGES=1
gcloud auth activate-service-account --key-file $SERVICE_ACCOUNT_JSON --project $GCLOUD_PROJECT
# sync => empty filesystem buffers
sync
# make the actual snapshot
gcloud --project $GCLOUD_PROJECT compute disks snapshot $DISK_NAME --zone $GCE_ZONE --snapshot-names $DISK_NAME-$DATETIME
这将在您每次运行时创建一个新的增量快照(例如创建一个 cron 以在晚上运行它)。您需要做的下一件事是决定要保留多少快照。我们保留了 5 个快照并创建了下一个脚本来删除比 5 个最近的快照更早的快照。我们在第一个脚本后 30 分钟运行此脚本,以确保完成快照的创建。
# Settings
GCLOUD_PROJECT="my-project"
SERVICE_ACCOUNT_JSON="location to service account json"
DISK_NAME="my-disk"
GCE_ZONE="europe-west1-d"
# authenticate first
export CLOUDSDK_PYTHON_SITEPACKAGES=1
gcloud auth activate-service-account --key-file $SERVICE_ACCOUNT_JSON --project $GCLOUD_PROJECT
# list snapshots
snapshot_list=($(gcloud --project $GCLOUD_PROJECT compute snapshots list --sort-by NAME --regexp "$DISK_NAME-.*" | tail -n +2 | awk '{print $1}'))
keep_index=$(expr ${#snapshot_list[*]} - 5)
for i in $(seq 0 $keep_index);
do
gcloud --project $GCLOUD_PROJECT compute snapshots delete ${snapshot_list[i]} -q
done
【讨论】:
Google 现在推出了Snapshot Scheduler。您可以在快照部分 -> 创建快照计划中找到它。
一旦您有了计划,您就可以创建一个新磁盘并选择计划或编辑现有的磁盘并分配计划程序。
【讨论】: