您可以创建快照时间表,以定期自动备份可用区级和区域级永久性磁盘和 Google Cloud Hyperdisk 卷。您可以将快照时间表用作备份 Compute Engine 工作负载的最佳做法。
如果要创建快照时间表以在备份时截取应用数据状态,也称为应用一致性、客机刷新或 VSS 快照,请参阅创建 Linux 应用一致性磁盘快照或创建 Windows 应用一致性磁盘快照。
如需详细了解快照时间表属性,请参阅快照时间表属性。
准备工作
- 查看快照时间表的限制。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) -
连接到可以作为服务账号运行的虚拟机:Service Account User (v1) (
roles/iam.serviceAccountUser
) -
如需创建快照时间表:针对项目或组织的
compute.resourcePolicies.create
权限 -
将快照时间表挂接到磁盘需要以下权限:
-
针对磁盘的
compute.disks.addResourcePolicies
权限 -
针对资源政策的
compute.resourcePolicies.use
权限
-
针对磁盘的
-
同时创建磁盘和快照时间表需要以下权限:
- 针对项目的
compute.disks.create
权限 - 针对项目的
compute.resourcePolicies.create
权限 -
针对磁盘的
compute.disks.addResourcePolicies
权限
- 针对项目的
-
在 Google Cloud 控制台中,前往虚拟机实例页面。
前往“虚拟机实例”
其余步骤将自动显示在 Google Cloud 控制台中。 - 选择包含您的虚拟机实例的项目。
- 在名称列中,点击包含要为其创建快照时间表的永久性磁盘的虚拟机。
-
在
存储 部分,点击要为其创建快照时间表的启动磁盘或额外磁盘的名称。 - 点击 修改。您可能需要点击 更多操作菜单,然后再点击 修改。
- 在快照时间表中,选择创建时间表。
-
在名称中,为快照时间表输入以下名称之一:
boot-disk-snapshot-schedule
attached-persistent-disk-snapshot-schedule
-
在位置部分,选择快照存储位置。系统会自动选择快照设置中定义的预定义或自定义默认位置。(可选)您可以通过执行以下操作来替换快照设置并将快照存储在自定义存储位置:
- 如需完成快照时间表的创建,请点击创建。
- 如需将此快照时间表挂接到永久性磁盘,请点击保存。
如需为磁盘安排全球范围快照,请使用
gcloud compute resource-policies create snapshot-schedule
命令。并将时间表频率设为每小时、每天或每周。gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \ --description "SCHEDULE_DESCRIPTION" \ --max-retention-days MAX_RETENTION_DAYS \ --start-time START_TIME \ --hourly-schedule SNAPSHOT_INTERVAL \ --daily-schedule \ --weekly-schedule SNAPSHOT_INTERVAL or --weekly-schedule-from-file FILE_NAME \ --on-source-disk-delete DELETION_OPTION \ --storage-location=STORAGE_LOCATION
(预览版)如需为磁盘安排区域范围快照,请使用
gcloud compute resource-policies create snapshot-schedule
命令并指定快照区域。gcloud beta compute resource-policies create snapshot-schedule SCHEDULE_NAME \ --description "SCHEDULE_DESCRIPTION" \ --max-retention-days MAX_RETENTION_DAYS \ --start-time START_TIME \ --hourly-schedule SNAPSHOT_INTERVAL \ --daily-schedule \ --weekly-schedule SNAPSHOT_INTERVAL or --weekly-schedule-from-file FILE_NAME \ --on-source-disk-delete DELETION_OPTION \ --storage-location=STORAGE_LOCATION \ --region REGION \ --snapshot-region SNAPSHOT_REGION
SCHEDULE_NAME
:快照时间表的名称。SCHEDULE_DESCRIPTION
:快照时间表的说明。请使用引号将您的说明括起来。REGION
:快照时间表资源政策的位置。SNAPSHOT_REGION
:预定快照的范围所限的区域。MAX_RETENTION_DAYS
:保留快照的天数。例如,值为
3
表示快照在删除之前会保留 3 天。您必须使用值1
或更高的值。START_TIME
:开始时间,采用世界协调时间 (UTC) 时区该时间必须从整点开始。例如:
- 太平洋标准时间 (PST) 下午 2:00 必须指定为
22:00
。 - 如果您将开始时间设置为
22:13
,则会收到错误消息。
如果您使用
--weekly-schedule-from-file
标志并在该文件中指定开始时间,则无需添加此标志。- 太平洋标准时间 (PST) 下午 2:00 必须指定为
SNAPSHOT_INTERVAL
:创建连续快照之间的时间间隔。hourly-schedule
、daily-schedule
、weekly-schedule
和weekly-schedule-from-file
这三种快照频率标志是互斥的。您只能将其中一个标志用于快照时间表。- 通过添加不带任何值的
--daily-schedule
标志来设置每日时间表。 - 设置每小时时间表,并将
--hourly-schedule
标志设置为 1 到 23 之间的整数值。如需在每天同一时间生成快照,请选择一个可以整除 24 的小时数。例如,将--hourly-schedule
设置为12
表示每 12 小时创建一次快照。 - 设置每周时间表,并将
--weekly-schedule
标志设置为您希望在星期几创建快照。 您必须写清楚是周几;值不区分大小写。例如,如需每周五备份磁盘,您的命令应包含--weekly-schedule=friday
。 设置高级每周时间表,通过添加
--weekly-schedule-from-file
标志来指定一周中的不同天数和不同的开始时间。将FILE_NAME
替换为包含每周快照时间表的文件名。虽然您可以使用文件指定一周中的不同天数和不同的开始时间,但您不能直接在命令行上指定多个每周时间表。例如,您的文件可能会在星期一和星期三指定两个每周时间表,但不能在命令行中复制此设置:[ {"day": "MONDAY", "startTime": "04:00"}, {"day": "WEDNESDAY", "startTime": "02:00"} ]
如果您在文件中添加开始时间,则无需在命令行中设置
--start-time
标志。时间表使用世界协调时间 (UTC) 时区。
- 通过添加不带任何值的
DELETION_OPTION
:确定在来源磁盘删除后系统对快照执行的操作。如果要保留所有生成的快照,则可以省略此标志。否则,请指定apply-retention-policy
以使用保留政策中的设置。STORAGE_LOCATION
:可选:存储位置。如果省略此标志,系统会使用默认存储位置。- 包含了磁盘删除规则;
--on-source-disk-delete
标志设为默认值keep-auto-snapshots
,以永久保留所有自动生成的快照。另一种方法是将此标志设为apply-retention-policy
,以使用您的快照保留政策。 - 存储位置手动设置为
US
,因此所有生成的快照都存储在 美国多区域中。 - 向所有生成的快照应用了标签
env=dev
和media=images
。 - 保留政策设为 10 天。
如需为全球范围快照创建快照时间表,请构建一个对
resourcePolicies.insert
的POST
请求。您必须添加快照时间表名称和快照频率。您还可以手动指定快照存储位置并在请求中添加资源标签。
默认情况下,
onSourceDiskDelete
参数设置为keepAutoSnapshots
。这意味着,如果来源磁盘遭到删除,系统会无限期地保留为该磁盘自动生成的快照。此外,您也可以将该标志设为applyRetentionPolicy
,以应用您的保留政策。在以下示例中,每日快照时间表的开始时间设为世界协调时间 (UTC) 中午 12 点 (04:00),并每天重复。该示例还设置了 5 天的保留政策;5 天后,系统将自动移除快照。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "SCHEDULE_NAME", "description": "SCHEDULE_DESCRIPTION", "snapshotSchedulePolicy": { "schedule": { "dailySchedule": { "startTime": "12:00", "daysInCycle": "1" } }, "retentionPolicy": { "maxRetentionDays": "5" }, "snapshotProperties": { "guestFlush": "False", "labels": { "env": "dev", "media": "images" }, "storageLocations": "STORAGE_LOCATION" } } }
(预览版)如需为区域范围快照创建快照时间表,请构建一个对
resourcePolicies.insert
的POST
请求并指定快照区域。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "SCHEDULE_NAME", "description": "SCHEDULE_DESCRIPTION", "snapshotSchedulePolicy": { "schedule": { "dailySchedule": { "startTime": "12:00", "daysInCycle": "1" } }, "retentionPolicy": { "maxRetentionDays": "5" }, "snapshotProperties": { "guestFlush": "False", "region": "SNAPSHOT_REGION" } } }
PROJECT_ID
:项目名称REGION
:快照时间表资源政策的位置SNAPSHOT_REGION
:预定快照的范围所限的区域SCHEDULE_DESCRIPTION
:快照时间表的说明SCHEDULE_NAME
:快照时间表的名称STORAGE_LOCATION
:可选:存储位置。如果省略此标志,系统会使用默认存储位置。在 Google Cloud 控制台中,前往磁盘页面。
选择要挂接快照时间表的磁盘的名称。此时会打开管理磁盘页面。
在管理磁盘页面上,点击
修改。 您可能需要先点击 更多操作菜单。使用快照时间表下拉菜单将时间表添加到对应磁盘,或者创建一个新的时间表。
如果您创建了新的时间表,请点击创建。
点击保存,以完成该任务。
DISK_NAME
:现有磁盘的名称SCHEDULE_NAME
:快照时间表的名称ZONE
:磁盘的位置PROJECT_ID
:项目名称ZONE
:磁盘所在的可用区。REGION
:创建快照时间表的区域DISK_NAME
:磁盘的名称SCHEDULE_NAME
:要应用于此磁盘的快照时间表的名称在 Google Cloud 控制台中,前往磁盘页面。
点击创建磁盘。
填写必填字段,以创建可用区级磁盘或区域级磁盘。
在与快照时间表相同的区域中创建磁盘。
填充快照时间表的各个字段。
使用下拉菜单并填写用于创建时间表的各个字段。
点击创建以创建时间表。
点击创建以创建磁盘。
DISK_NAME
:新磁盘的名称SCHEDULE_NAME
:快照时间表的名称ZONE
:您要在其中创建磁盘的位置。该磁盘所在的可用区必须与快照时间表位于同一区域。- 了解如何管理快照时间表。
- 如需了解预定快照频率、保留政策和命名规则,请参阅磁盘快照时间表简介。
- 了解如何从快照创建自定义映像。
- 了解如何查看日志。
Go
如需在本地开发环境中使用本页面上的 Go 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
Java
如需在本地开发环境中使用本页面上的 Java 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
Node.js
如需在本地开发环境中使用本页面上的 Node.js 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
Python
如需在本地开发环境中使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色和权限
如需获得创建快照时间表所需的权限,请让管理员向您授予项目的以下 IAM 角色:
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含创建快照时间表所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建快照时间表需要以下权限:
创建快照时间表的概览
创建快照时间表时,您需要创建一项可应用于一个或多个永久性磁盘或 Hyperdisk 卷的资源政策。
您可以通过以下方式创建快照时间表:
将加密与快照时间表搭配使用
如果磁盘使用客户管理的加密密钥 (CMEK),则当您使用快照时间表创建该磁盘的快照时,所有创建的快照都将自动使用同一密钥加密。
您不能将快照时间表用于使用客户提供的加密密钥 (CSEK) 的磁盘。
创建快照时间表
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST 为磁盘创建快照时间表。您必须在磁盘所在的同一个区域中创建快照时间表。例如,如果您的磁盘位于可用区
us-west1-a
中,您必须在us-west1
区域中创建快照时间表。但是,您可以选择将快照时间表生成的快照存储在其他位置。控制台
gcloud
替换以下内容:
示例
在下面的所有示例中:
每小时时间表:在此示例中,快照时间表的开始时间为世界协调时间 (UTC) 晚上 10 点 (14:00 PST),每 4 小时运行 1 次。
gcloud compute resource-policies create snapshot-schedule hourly-schedule1 \ --description "MY HOURLY SNAPSHOT SCHEDULE" \ --max-retention-days 10 \ --start-time 22:00 \ --hourly-schedule 4 \ --region us-west1 \ --on-source-disk-delete keep-auto-snapshots \ --snapshot-labels env=dev,media=images \ --storage-location US
每日时间表:在此示例中,快照时间表的开始时间为世界协调时间 (UTC) 晚上 10 点 (14:00 PST),并在每天同一时间运行 1 次。
--daily-schedule
标志必须存在,但没有关联的值。gcloud compute resource-policies create snapshot-schedule daily-schedule2 \ --description "MY DAILY SNAPSHOT SCHEDULE" \ --max-retention-days 10 \ --start-time 22:00 \ --daily-schedule \ --region us-west1 \ --on-source-disk-delete keep-auto-snapshots \ --snapshot-labels env=dev,media=images \ --storage-location US
每周时间表:在此示例中,快照时间表的开始时间为世界协调时间 (UTC) 晚上 10 点 (14:00 PST),并在每个星期二运行 1 次。
gcloud compute resource-policies create snapshot-schedule weekly-schedule3 \ --description "MY WEEKLY SNAPSHOT SCHEDULE" \ --max-retention-days 10 \ --start-time 22:00 \ --weekly-schedule tuesday \ --region us-west1 \ --on-source-disk-delete keep-auto-snapshots \ --snapshot-labels env=dev,media=images \ --storage-location US
Go
Java
Node.js
Python
REST
替换以下内容:
同样,您也可以创建每周或每月时间表。请查看
resourcePolicies.insert
方法,以了解有关设置每周或每月时间表的详细信息。例如,以下请求将创建一个每周时间表,以便在星期二世界协调时间 (UTC) 9:00 运行。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "SCHEDULE_NAME", "description": "SCHEDULE_DESCRIPTION", "snapshotSchedulePolicy": { "schedule": { "weeklySchedule": { "dayOfWeeks": [ { "day": "Tuesday", "startTime": "9:00" } ] } }, "retentionPolicy": { "maxRetentionDays": "5" }, "snapshotProperties": { "guestFlush": "False", "labels": { "production": "webserver" }, "storageLocations": "US" } } }
将快照时间表挂接到磁盘
创建时间表后,您可以将其挂接到现有磁盘。使用控制台、gcloud CLI 或 Compute Engine API。
控制台
将快照时间表挂接到现有磁盘。
gcloud
如需将快照时间表附加到磁盘,请使用
gcloud disks add-resource-policies
命令。gcloud compute disks add-resource-policies DISK_NAME \ --resource-policies SCHEDULE_NAME \ --zone ZONE
请替换以下内容:
Go
Java
Python
REST
构建对
disks.addResourcePolicies
的POST
请求,以将快照时间表挂接到现有磁盘。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/addResourcePolicies { "resourcePolicies": [ "regions/REGION/resourcePolicies/SCHEDULE_NAME" ] }
替换以下内容:
同时创建磁盘和快照时间表
您可以使用 Google Cloud 控制台或 gcloud CLI 同时创建磁盘和快照时间表。
控制台
gcloud
使用
gcloud disks create
命令创建可用区级或区域级永久性磁盘或 Hyperdisk,然后向其附加快照时间表。gcloud compute disks create DISK_NAME \ --resource-policies SCHEDULE_NAME \ --zone ZONE
替换以下内容:
Go
Java
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-06-24。
-