"github.com/volcengine/ve-tos-golang-sdk/v2/tos"
"github.com/volcengine/ve-tos-golang-sdk/v2/tos/enum"
type eventChange struct {
func (e eventChange) EventChange(event *tos.CopyEvent) {
case enum.CopyEventCreateMultipartUploadSucceed:
fmt.Println("Resume Create Multipart Upload Success.\n ")
case enum.CopyEventCreateMultipartUploadFailed:
fmt.Println("Resume Create Multipart Upload Fail.\n ")
case enum.CopyEventUploadPartCopySuccess:
fmt.Printf("Copy %s %s part success, CopyPartInfo:%v\n", event.Bucket, event.Key, event.CopyPartInfo)
case enum.CopyEventUploadPartCopyFailed:
fmt.Printf("Copy %s %s part aborted.\n", event.Bucket, event.Key)
case enum.CopyEventUploadPartCopyAborted:
fmt.Printf("Copy %s %s part fail, err:%v\n", event.Bucket, event.Key, event.Err)
case enum.CopyEventCompleteMultipartUploadSucceed:
fmt.Printf("Copy %s %s success.\n", event.Bucket, event.Key)
case enum.CopyEventCompleteMultipartUploadFailed:
fmt.Printf("Copy %s %s fail,err:%v\n", event.Bucket, event.Key, event.Err)
func checkErr(err error) {
if serverErr, ok := err.(*tos.TosServerError); ok {
fmt.Println("Error:", serverErr.Error())
fmt.Println("Request ID:", serverErr.RequestID)
fmt.Println("Response Status Code:", serverErr.StatusCode)
fmt.Println("Response Header:", serverErr.Header)
fmt.Println("Response Err Code:", serverErr.Code)
fmt.Println("Response Err Msg:", serverErr.Message)
fmt.Println("Error:", err)
accessKey = os.Getenv("TOS_ACCESS_KEY")
secretKey = os.Getenv("TOS_SECRET_KEY")
endpoint = "https://tos-cn-beijing.volces.com"
srcBucketName = "*** Provide your src bucket name ***"
dstBucketName = "*** Provide your dst bucket name ***"
srcObjectKey = "srcObjectKey"
dstObjectKey = "dstObjectKey"
checkPointFilePath = "./example.checkpoint"
ctx = context.Background()
client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey)))
input := &tos.ResumableCopyObjectInput{
CreateMultipartUploadV2Input: tos.CreateMultipartUploadV2Input{
SrcBucket: srcBucketName,
PartSize: 20 * 1024 * 1024,
CheckpointFile: checkPointFilePath,
CopyEventListener: eventChange{},
output, err := client.ResumableCopyObject(ctx, input)
fmt.Println("ResumableCopyObject Request Bucket:", output.Bucket)
fmt.Println("ResumableCopyObject Request Key:", output.Key)
fmt.Println("ResumableCopyObject Request UploadID:", output.UploadID)
fmt.Println("ResumableCopyObject Request Etag:", output.Etag)
fmt.Println("ResumableCopyObject Request Location:", output.Location)
fmt.Println("ResumableCopyObject Request VersionID:", output.VersionID)
fmt.Println("ResumableCopyObject Request HashCrc64ecma:", output.HashCrc64ecma)