如何在Google Compute Engine中自动备份快照/图像

时间:2017-01-24 16:05:38

标签: google-app-engine google-compute-engine

我有Google Compute Engine实例,我想进行自动快照/图像备份。 它应该像计划作业一样,每隔5个小时为我的实例创建一个快照/图像。

我读到可以使用Cron工作,但我无法理解如何操作。

您能帮我理解如何进行自动快照/图像处理吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用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

答案 1 :(得分:0)

Google现在推出了Snapshot Scheduler。您可以在快照部分->创建快照计划中找到它。

一旦有了日程表,就可以创建一个新磁盘并选择日程表,或者编辑现有的磁盘并分配日程表。