【问题标题】:How to automatically backup snapshots/images in Google Compute Engine如何在 Google Compute Engine 中自动备份快照/图像
【发布时间】:2017-01-24 16:05:37
【问题描述】:

我有 Google Compute Engine 实例,我想做自动快照/映像备份。 它应该像一个计划作业,每 5 小时为我的实例制作一个快照/图像。

我读到可以使用 Cron 作业,但我不明白该怎么做。

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

提前致谢。

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

    • 谢谢。它似乎对我有用。您能否解释一下如何将 sh 文件与 cron 连接?我的意思是,我创建了这个 sh 文件,但我如何告诉 Google 每 X 小时运行一次呢?我应该在 gcloud 中运行这个脚本吗?我是谷歌云的新手,我很困惑从哪里开始......这段代码有帮助,但是如何执行你描述的其他步骤,你能描述更多吗?
    • gcloud 是用于在 Google Cloud Platform 中运行作业的命令行工具。它应该已经安装在 GCP 中启动的 Linux 实例上。只需在命令行上键入 gcloud 即可对其进行测试。要授权您的工作,您需要创建一个具有正确权限的服务帐户。您可以在 IAM 下的控制台中创建一个。
    • 关于 cron,您可以使用命令“crontab -e”添加一个新的 cron。您需要添加如下一行: 0 */5 * * * /command/to/run 如果您想了解有关 cron 的可能性和选项的详细信息,那么互联网上有很多指南。
    【解决方案2】:

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

    一旦您有了计划,您就可以创建一个新磁盘并选择计划或编辑现有的磁盘并分配计划程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 2015-02-02
      • 2016-10-27
      • 2018-04-21
      相关资源
      最近更新 更多