All Products
Search
Document Center

Object Storage Service:Unduhan yang dapat dilanjutkan (Go SDK V1)

Last Updated:Nov 29, 2025

Saat mengunduh file besar dari Object Storage Service (OSS) (lebih dari 5 GB) ke perangkat lokal, proses unduhan mungkin gagal karena gangguan jaringan atau program yang berhenti secara tak terduga. Jika unduhan terus gagal meskipun telah dicoba beberapa kali, Anda dapat menggunakan fitur unduhan yang dapat dilanjutkan. Fitur ini membagi file besar menjadi shard-shard kecil dan mengunduhnya secara konkuren untuk mempercepat proses. Jika pengunduhan suatu shard gagal, percobaan berikutnya akan melanjutkan dari titik pemeriksaan yang terekam dalam file titik pemeriksaan—tanpa perlu mengunduh ulang seluruh file. Setelah unduhan selesai, semua shard digabung menjadi satu file utuh.

Catatan

  • Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi lebih lanjut mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.

  • Kredensial akses pada topik ini diperoleh dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan kredensial akses.

  • Instans OSSClient pada topik ini dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Konfigurasikan client (Go SDK V1).

  • Untuk melakukan unduhan yang dapat dilanjutkan, Anda harus memiliki izin oss:GetObject. Untuk informasi lebih lanjut, lihat Lampirkan kebijakan kustom ke RAM user.

  • Saat menggunakan unduhan yang dapat dilanjutkan, progres unduhan direkam dalam file titik pemeriksaan. Jika pengunduhan suatu shard gagal, percobaan berikutnya akan melanjutkan dari titik pemeriksaan yang terekam dalam file tersebut. File titik pemeriksaan akan dihapus setelah unduhan selesai.

  • SDK mencatat status unduhan dalam file titik pemeriksaan. Pastikan program Anda memiliki izin menulis untuk file ini.

  • Jangan ubah informasi verifikasi dalam file titik pemeriksaan. Jika file tersebut rusak, seluruh file akan diunduh ulang.

  • Jika ETag file berubah, atau jika suatu shard hilang atau dimodifikasi selama proses unduhan, seluruh file akan diunduh ulang.

Kode contoh

package main

import (
	"fmt"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Buat instans OSSClient.
	// Setel yourEndpoint ke titik akhir bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
	// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Setel versi signature.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Tentukan nama bucket, misalnya examplebucket.
	bucket, err := client.Bucket("examplebucket")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Setel yourObjectName ke path lengkap objek. Path lengkap tidak boleh mengandung nama bucket. Misalnya, setel ke exampledir/exampleobject.txt.
	// Setel yourLocalFile ke path lengkap file lokal, misalnya D:\\localpath\\examplefile.txt. Jika Anda tidak menentukan path lokal, file yang diunduh akan disimpan di path lokal proyek tempat program contoh berada.
	// Setel ukuran shard ke 100 KB (100 * 1024) dan jumlah thread unduhan konkuren ke 3.
	// oss.Checkpoint(true, "") mengaktifkan unduhan yang dapat dilanjutkan. Secara default, file titik pemeriksaan yang merekam titik pemeriksaan berada di folder yang sama dengan file lokal yang diunduh. File titik pemeriksaan memiliki nama yang sama dengan file lokal tetapi dengan ekstensi .temp. Anda juga dapat menggunakan oss.Checkpoint(true, "your-cp-file.temp") untuk menentukan file titik pemeriksaan.
	err = bucket.DownloadFile("file.zip", "D:\\file.zip", 100*1024, oss.Routines(3), oss.Checkpoint(true, ""))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}

Referensi

  • Untuk kode contoh lengkap mengenai unduhan yang dapat dilanjutkan, lihat contoh di GitHub.

  • Untuk informasi lebih lanjut mengenai operasi API untuk unduhan yang dapat dilanjutkan, lihat GetObject.