Saat Anda menangguhkan Pengendalian versi untuk sebuah bucket, OSS berhenti membuat versi baru untuk unggahan berikutnya. Versi yang sudah ada tidak terpengaruh—Anda tetap dapat membaca dan menghapusnya dengan menentukan ID versinya setelah Pengendalian versi ditangguhkan.
Topik ini menjelaskan perilaku operasi unggah, unduh, dan hapus pada bucket dengan Pengendalian versi yang ditangguhkan.
Unggah objek
Setiap objek yang diunggah ke bucket dengan Pengendalian versi yang ditangguhkan disimpan sebagai versi dengan ID null. Karena setiap objek hanya dapat memiliki satu versi null, perilakunya bergantung pada kondisi yang sudah ada:
| Kondisi yang sudah ada | Apa yang terjadi setelah unggah |
|---|---|
| Tidak ada versi yang ada | OSS membuat versi baru dengan ID null. |
Versi yang ada dengan ID non-null (misalnya, 111111) | Unggahan menjadi versi saat ini (ID null); versi sebelumnya (111111) tetap disimpan. |
Versi null yang sudah ada | Versi null tersebut ditimpa—ID versinya tetap null, tetapi konten objeknya diganti dengan unggahan baru. |
Skenario 1: Tidak ada versi yang ada
Saat Anda menggunakan PutObject untuk mengunggah objek ke bucket dengan Pengendalian versi yang ditangguhkan, OSS menyimpan objek tersebut sebagai versi null.

Skenario 2: Versi yang ada dengan ID non-null
Saat bucket berisi versi dengan ID 111111 dan Anda mengunggah objek dengan nama yang sama, unggahan tersebut menjadi versi saat ini (ID null) dan versi 111111 disimpan sebagai versi sebelumnya.

Skenario 3: Versi null yang sudah ada
Saat bucket sudah berisi versi null dan Anda mengunggah objek dengan nama yang sama, versi null yang ada ditimpa secara permanen.

Untuk mengunggah objek ke bucket dengan Pengendalian versi yang ditangguhkan, gunakan perintah ossutil cp (upload objects) atau salah satu SDK berikut: OSS SDK for Java, OSS SDK for PHP, OSS SDK for Node.js, OSS SDK for Python, OSS SDK for .NET, OSS SDK for Go, dan OSS SDK for C++.
Unduh objek
Perilaku pengunduhan ditentukan oleh apakah Anda menentukan ID versi dalam permintaan GetObject:
ID versi tidak ditentukan: OSS mengembalikan versi saat ini. Di bucket dengan Pengendalian versi yang ditangguhkan, versi saat ini biasanya memiliki ID
null.ID versi ditentukan: OSS mengembalikan versi yang diminta secara tepat, terlepas dari apakah itu merupakan versi saat ini atau bukan.
Skenario 1: ID versi tidak ditentukan
Versi saat ini (ID null) dikembalikan.

Skenario 2: ID versi ditentukan
Versi dengan ID yang ditentukan (misalnya, 222222) dikembalikan.

Untuk mengunduh objek dari bucket dengan Pengendalian versi yang ditangguhkan, gunakan perintah ossutil cp (download objects) atau salah satu SDK berikut: OSS SDK for Java, OSS SDK for PHP, OSS SDK for Node.js, OSS SDK for Python, OSS SDK for .NET, OSS SDK for Go, dan OSS SDK for C++.
Hapus objek
Permintaan DeleteObject di bucket dengan Pengendalian versi yang ditangguhkan mengikuti aturan berikut:
ID versi tidak ditentukan: OSS memasukkan penanda hapus dengan ID
nullsebagai versi saat ini yang baru. Jika objek sudah memiliki versinull, versi tersebut diganti oleh penanda hapus (karena sebuah objek hanya dapat memiliki satu versinull). Versi non-null sebelumnya tetap disimpan.ID versi ditentukan: OSS menghapus versi tertentu tersebut secara permanen.
Skenario 1: Menghapus objek yang ID versi saat ini bukan null
OSS menambahkan penanda hapus dengan ID null sebagai versi saat ini. Versi non-null yang sudah ada menjadi versi sebelumnya.

Skenario 2: Menghapus objek yang ID versi saat ini adalah null
OSS menambahkan penanda hapus dengan ID null, yang menimpa versi null yang sudah ada. Karena sebuah objek hanya dapat memiliki satu versi null, versi null asli diganti.

Skenario 3: Menghapus versi tertentu
Saat Anda menentukan ID versi (misalnya, 333333) dalam permintaan DeleteObject, versi tersebut dihapus secara permanen.

Untuk menghapus objek dari bucket dengan Pengendalian versi yang ditangguhkan, gunakan perintah ossutil rm atau salah satu SDK berikut: OSS SDK for Java, OSS SDK for PHP, OSS SDK for Node.js, OSS SDK for Python, OSS SDK for .NET, OSS SDK for Go, dan OSS SDK for C++.