You need to enable JavaScript to run this app.
文档中心
云备份

云备份

复制全文
下载 pdf
ECS 整机
创建 ECS 备份任务(Go SDK)
复制全文
下载 pdf
创建 ECS 备份任务(Go SDK)
本文介绍通过 Go SDK 创建 ECS 备份任务的示例代码。​
示例代码​
您可以通过以下示例代码,创建一个 ECS 类型的备份源,然后为其创建一个备份任务,待备份任务结束后,删除恢复点和备份源,释放资源。​
​
package main​
​
import (​
"fmt"​
"os"​
"time"​
​
"github.com/volcengine/volcengine-go-sdk/service/cbr"​
"github.com/volcengine/volcengine-go-sdk/volcengine"​
"github.com/volcengine/volcengine-go-sdk/volcengine/credentials"​
"github.com/volcengine/volcengine-go-sdk/volcengine/session"​
)​
​
func deleteRecoveryPoint(client *cbr.CBR, recoveryPointId string) {​
deleteRecoveryPointInput := &cbr.DeleteRecoveryPointInput{​
RecoveryPointId: &recoveryPointId,​
}​
_, err := client.DeleteRecoveryPoint(deleteRecoveryPointInput)​
if err != nil {​
panic(err)​
}​
​
// 等待备份点删除完成​
for {​
describeRecoveryPointInput := &cbr.DescribeRecoveryPointsInput{​
Filters: &cbr.FiltersForDescribeRecoveryPointsInput{​
RecoveryPointId: &recoveryPointId,​
},​
}​
describeRecoveryPointOutput, err := client.DescribeRecoveryPoints(describeRecoveryPointInput)​
if err != nil {​
panic(err)​
}​
if len(describeRecoveryPointOutput.RecoveryPoints) == 0 {​
break​
}​
fmt.Printf("Recovery point status:%s\n", *describeRecoveryPointOutput.RecoveryPoints[0].Status)​
time.Sleep(5 * time.Second)​
}​
​
fmt.Printf("Recovery point deleted, recovery point id:%s", recoveryPointId)​
}​
func main() {​
var (​
ak string​
sk string​
region string​
config *volcengine.Config​
sess *session.Session​
client *cbr.CBR​
err error​
)​
ak = os.Getenv("VOLCENGINE_ACCESS_KEY_ID")​
sk = os.Getenv("VOLCENGINE_ACCESS_KEY_SECRET")​
region = "cn-beijing"​
ecsInstanceId := "your ecs instance id"​
ecsInstanceName := "your ecs instance name"​
recoveryPointName := "manualbackup_test"​
​
config = volcengine.NewConfig().​
WithCredentials(credentials.NewStaticCredentials(ak, sk, "")).​
WithRegion(region)​
​
sess, err = session.NewSession(config)​
if err != nil {​
panic(err)​
}​
​
client = cbr.New(sess)​
​
// 创建备份源​
createBackupSourceInput := &cbr.CreateBackupResourceInput{​
InstanceId: volcengine.String(ecsInstanceId),​
InstanceName: volcengine.String(ecsInstanceName),​
ResourceType: volcengine.String("ECS"),​
}​
createBackupResourceOutput, err := client.CreateBackupResource(createBackupSourceInput)​
if err != nil {​
panic(err)​
}​
resourceId := createBackupResourceOutput.ResourceId​
defer func() {​
// 删除备份源​
deleteBackupResourceInput := &cbr.DeleteBackupResourceInput{​
ResourceId: resourceId,​
}​
_, err := client.DeleteBackupResource(deleteBackupResourceInput)​
if err != nil {​
panic(err)​
}​
fmt.Printf("Backup resource deleted, resource id:%s", *resourceId)​
}()​
​
fmt.Printf("Backup resource created, resource id:%s", *resourceId)​
​
// 针对备份源,手动创建备份任务​
createBackupJobInput := &cbr.CreateBackupJobInput{​
ResourceId: resourceId,​
RecoveryPointName: volcengine.String(recoveryPointName),​
BackupType: volcengine.String("FULL"),​
RetentionDay: volcengine.Int32(1),​
Metadata: volcengine.String("{\"AutoBackupAllAttachedVolumes\":true}"), // 备份 ecs 实例上所有的云盘​
}​
createBackupJobOutput, err := client.CreateBackupJob(createBackupJobInput)​
if err != nil {​
panic(err)​
}​
​
recoveryPointId := createBackupJobOutput.RecoveryPointId​
​
defer func() {​
// 删除备份任务(恢复点)​
deleteRecoveryPoint(client, *recoveryPointId)​
}()​
​
// 轮询查询备份任务(恢复点)状态,循环总时间不超过 10 分钟​
for i := 0; i < 120; i++ {​
describeBackupJobInput := &cbr.DescribeRecoveryPointsInput{​
Filters: &cbr.FiltersForDescribeRecoveryPointsInput{​
RecoveryPointId: recoveryPointId,​
},​
}​
describeBackupJobOutput, err := client.DescribeRecoveryPoints(describeBackupJobInput)​
if err != nil {​
panic(err)​
}​
if *describeBackupJobOutput.RecoveryPoints[0].Status == "AVAILABLE" {​
break​
}​
fmt.Printf("Recovery point status:%s\n", *describeBackupJobOutput.RecoveryPoints[0].Status)​
time.Sleep(5 * time.Second)​
}​
​
fmt.Printf("Backup completed, recovery point id:%s", *recoveryPointId)​
}​
​
​
​
最近更新时间:2025.10.31 16:30:56
这个页面对您有帮助吗?
有用
有用
无用
无用