Menggunakan objek yang dihapus untuk sementara

Ringkasan Penyiapan

Halaman ini menjelaskan cara menampilkan daftar, mengakses, dan memulihkan objek yang dihapus sementara.

Sebelum memulai

Untuk menyelesaikan tugas di halaman ini, pastikan Anda memiliki peran IAM Storage Admin (roles/storage.admin) di bucket atau project yang berisi bucket. Peran bawaan ini mencakup izin yang diperlukan untuk mengelola dan memulihkan soft delete pada bucket.

Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

  • storage.buckets.get
  • storage.buckets.update
  • storage.buckets.list
    • Izin ini diperlukan jika Anda berencana menggunakan Konsol Google Cloud untuk menjalankan petunjuk di halaman ini.
  • storage.objects.restore
  • storage.objects.create
  • storage.objects.delete
    • Izin ini diperlukan jika pemulihan sebuah objek menyebabkan objek yang sudah ada ditimpa.
  • storage.buckets.restore
    • Izin ini diperlukan jika Anda ingin memulihkan objek yang dihapus sementara dalam bucket secara massal.
  • storage.bucketOperations.*
    • Izin ini diperlukan untuk operasi yang berjalan lama.

Untuk mengetahui informasi tentang cara memberikan peran pada bucket, lihat Menggunakan IAM dengan bucket. Untuk mengetahui informasi tentang cara memberikan peran pada project, lihat Mengelola akses ke project.

Membuat daftar semua objek yang dihapus sementara dalam bucket

Anda dapat mencantumkan semua objek yang dihapus sementara dalam bucket.

Konsol

  1. Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.

    Buka Buckets

  2. Dalam daftar bucket, klik nama bucket yang ingin Anda lihat objek yang dihapus untuk sementara. Halaman Bucket details akan terbuka dengan tab Objects dipilih.

  3. Di daftar Tampilkan, pilih Hanya objek yang dihapus sementara. Daftar objek yang dihapus untuk sementara akan ditampilkan.

Command line

Untuk menampilkan daftar semua objek yang dihapus sementara dalam bucket, gunakan perintah gcloud storage ls dengan flag --soft-deleted dan --recursive:

  gcloud storage ls gs://BUCKET_NAME --soft-deleted --recursive

Ganti kode berikut:

  • BUCKET_NAME: nama bucket. Misalnya, my-bucket.

REST API

JSON API

  1. Telah menginstal dan melakukan inisialisasigcloud CLI, agar dapat membuat token akses untuk header Authorization.

    Atau, Anda dapat membuat token akses menggunakan OAuth 2.0 Playground dan menyertakannya di header Authorization.

  2. Gunakan cURL untuk memanggil JSON API dengan permintaan untuk mencantumkan objek yang menggunakan parameter kueri ?softDeleted:

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?softDeleted=true"

    Dengan BUCKET_NAME adalah nama bucket yang relevan. Contoh, my-bucket.

Melihat semua versi objek yang dihapus untuk sementara

Anda dapat melihat semua versi objek tertentu yang dihapus untuk sementara di dalam bucket.

Konsol

  1. Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.

    Buka Buckets

  2. Dalam daftar bucket, klik nama bucket yang berisi objek yang ingin Anda lihat versi yang dihapus untuk sementara. Halaman Bucket details akan terbuka dengan tab Objects dipilih.

  3. Klik objek yang ingin Anda lihat semua versi yang dihapus untuk sementara. Halaman Object details akan ditampilkan.

  4. Klik tab Version History.

  5. Di daftar Tampilkan, pilih Hanya objek yang dihapus sementara. Daftar semua versi yang dihapus sementara untuk objek tersebut akan ditampilkan.

Command line

Untuk menampilkan daftar semua versi objek yang dihapus untuk sementara dalam bucket, gunakan perintah gcloud storage ls:

  gcloud storage ls gs://BUCKET_NAME/OBJECT_NAME --soft-deleted

Ganti kode berikut:

  • BUCKET_NAME: nama bucket. Misalnya, my-bucket.
  • OBJECT_NAME: nama objek yang semua versinya ingin Anda lihat.

REST API

JSON API

  1. Telah menginstal dan melakukan inisialisasigcloud CLI, agar dapat membuat token akses untuk header Authorization.

    Atau, Anda dapat membuat token akses menggunakan OAuth 2.0 Playground dan menyertakannya di header Authorization.

  2. Gunakan cURL untuk memanggil JSON API dengan permintaan untuk mencantumkan objek yang menggunakan parameter kueri ?softDeleted:

    curl -X GET \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?softDeleted=true"

    Dengan BUCKET_NAME adalah nama bucket yang relevan. Contoh, my-bucket.

Memulihkan objek yang dihapus sementara

Anda dapat memulihkan versi tertentu dari objek yang dihapus untuk sementara di bucket.

Konsol

  1. Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.

    Buka Buckets

  2. Dalam daftar bucket, klik nama bucket yang berisi objek yang dihapus untuk sementara yang ingin Anda pulihkan. Halaman Bucket details akan terbuka dengan tab Objects dipilih.

  3. Di daftar Tampilkan, pilih Hanya objek yang dihapus sementara.

  4. Buka objek, yang mungkin terletak dalam folder.

  5. Klik objek yang dihapus untuk sementara. Halaman Object details akan ditampilkan.

  6. Di daftar Tampilkan, pilih Hanya objek yang dihapus sementara. Daftar semua versi objek tersebut yang dihapus untuk sementara akan ditampilkan.

  7. Untuk memulihkan versi objek tertentu yang dihapus untuk sementara, klik Restore di samping versi objek tersebut. Panel versi objek pemulihan akan terbuka.

  8. Klik Confirm.

Command line

Untuk memulihkan versi objek yang dihapus untuk sementara, gunakan perintah gcloud storage restore:

  gcloud storage restore gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER

Ganti kode berikut:

  • BUCKET_NAME: nama bucket. Misalnya, my-bucket.
  • OBJECT_NAME: nama objek yang semua versinya ingin Anda lihat.
  • GENERATION_NUMBER: nomor pembuatan objek yang dihapus untuk sementara yang ingin Anda pulihkan. Jika Anda tidak menentukan nomor pembuatan, versi terbaru akan dipulihkan. Contoh, 1560468815691234.

Untuk opsi tambahan guna memulihkan beberapa objek secara massal, termasuk memulihkan semua versi objek dengan flag all-versions, lihat referensi gcloud storage restore.

REST API

JSON API

  1. Telah menginstal dan melakukan inisialisasigcloud CLI, agar dapat membuat token akses untuk header Authorization.

    Atau, Anda dapat membuat token akses menggunakan OAuth 2.0 Playground dan menyertakannya di header Authorization.

  2. Gunakan cURL untuk memanggil JSON API dengan permintaan POST Object:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/restore?generation=GENERATION_NUMBER"

    Dengan keterangan:

    • BUCKET_NAME adalah nama bucket yang relevan. Contoh, my-bucket.
    • OBJECT_NAME adalah nama objek yang dihapus untuk sementara yang ingin Anda pulihkan. Contoh, cat.jpeg.
    • GENERATION_NUMBER adalah nomor pembuatan objek yang dihapus sementara yang ingin Anda pulihkan. Jika Anda tidak menentukan nomor pembuatan, versi terbaru akan dipulihkan. Misalnya, 1560468815691234.

Memulihkan massal objek yang dihapus sementara dalam bucket

Jika Anda ingin memulihkan sejumlah besar objek, atau tidak mengetahui objek tertentu yang ingin dipulihkan, gunakan operasi pemulihan massal. Perlu diperhatikan bahwa operasi pemulihan massal terjadi secara asinkron dan dalam beberapa kasus dapat memerlukan waktu satu jam atau lebih untuk dimulai.

Operasi pemulihan massal akan memulai operasi yang berjalan lama di bucket. Anda dapat menggunakan Google Cloud CLI untuk mendapatkan dan mencantumkan operasi yang berjalan lama, sehingga Anda dapat melihat detail dan status operasi pemulihan massal saat sedang berlangsung.

Konsol

  1. Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.

    Buka Buckets

  2. Di daftar bucket, temukan bucket yang berisi objek yang ingin Anda pulihkan.

  3. Klik menu Bucket overflow () yang terkait dengan bucket tersebut, lalu pilih Create recovery job.

    Panel Buat tugas pemulihan akan terbuka.

  4. Di bagian Pilih objek yang dihapus sementara untuk dipulihkan, pilih periode penghapusan saat objek yang ingin Anda pulihkan.

  5. (Opsional) Pilih Filter menurut pola glob, lalu masukkan pola glob untuk memulihkan objek yang memenuhi kriteria pola glob saja.

  6. (Opsional) Alihkan perilaku pemulihan tambahan di bagian Opsi pemulihan.

  7. Klik Create.

Anda dapat melacak progres operasi pemulihan massal dengan mengklik tombol Notifications () yang ada di header Konsol Google Cloud.

Command line

Untuk menggunakan operasi pemulihan massal guna memulihkan semua objek di dalam bucket, gunakan perintah gcloud storage restore.

Perintah berikut melakukan operasi pemulihan massal untuk memulihkan semua objek bucket yang dihapus selama jangka waktu tertentu secara asinkron:

  gcloud storage restore gs://BUCKET_NAME/** \
      --async --deleted-after-time=DELETED_AFTER_TIME \
      --deleted-before-time=DELETED_BEFORE_TIME

Ganti kode berikut:

  • BUCKET_NAME: nama bucket. Misalnya, my-bucket.
  • DELETED_AFTER_TIME: argumen opsional untuk menentukan tanggal saat objek dipulihkan. Misalnya, 2022-12-01.
  • DELETED_BEFORE_TIME: argumen opsional untuk menentukan tanggal sebelum objek dipulihkan. Misalnya, 2022-12-21.

    Jika berhasil, perintah akan menampilkan ID operasi yang berjalan lama yang terkait dengan operasi pemulihan massal. Anda bisa mendapatkan detail tentang operasi yang berjalan lama atau membatalkan operasi yang berjalan lama untuk menghentikan operasi pemulihan massal sebelum selesai.

REST API

JSON API

  1. Telah menginstal dan melakukan inisialisasigcloud CLI, agar dapat membuat token akses untuk header Authorization.

    Atau, Anda dapat membuat token akses menggunakan OAuth 2.0 Playground dan menyertakannya di header Authorization.

  2. Gunakan cURL untuk memanggil JSON API dengan permintaan POST Object:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/bulkRestore"

    Dengan BUCKET_NAME adalah nama bucket yang relevan. Contoh, my-bucket.

Jika berhasil, perintah akan menampilkan ID operasi yang berjalan lama yang terkait dengan operasi pemulihan massal. Anda bisa mendapatkan detail tentang operasi yang berjalan lama atau membatalkan operasi yang berjalan lama untuk menghentikan operasi pemulihan massal sebelum selesai.

Mengelola operasi yang berjalan lama untuk pemulihan massal

Operasi yang berjalan lama di Google Cloud CLI diidentifikasi dengan nama operasi, yang merupakan kombinasi dari nama bucket dan ID operasi.

Contoh berikut menunjukkan operasi yang berjalan lama yang ditampilkan dari operasi pemulihan massal:

done: false
{
  "kind": "storage@operation",
  "name": "projects/_/buckets/my-bucket/operations/CiQyODRlMTY0My0wNGExLTQ3MWItOTE2Zi1hZmQ0ZmM4ZDc4MjQQAg",
  "metadata": {
    "@type": "type.googleapis.com/google.storage.v2.BulkRestoreObjectsMetadata",
    "commonMetadata": {
      "type": "bulk-restore-objects",
      "createTime": "2023-10-20T21:08:11.289Z",
      "updateTime": "2023-10-20T21:18:37.583Z",
      "endTime": "2023-10-20T21:18:37.583Z",
      "requestedCancellation": false,
      "progressPercent": -1,
    },
    "allow_overwrite": false,
    "matchGlobs": ["*"],
    "succeededCount": "0",
    "failedCount": "0",
    "skippedCount": "0",
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.storage.v2.BulkRestoreObjectsResponse"
  }
}

Untuk mengetahui informasi umum tentang cara mengelola operasi yang berjalan lama, lihat dokumentasi gcloud storage operations.

Mendapatkan detail operasi yang berjalan lama

Gunakan perintah gcloud storage operations describe:

gcloud storage operations describe projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

Ganti kode berikut:

  • BUCKET_NAME: nama bucket yang berisi operasi yang berjalan lama. Contoh, my-bucket.

  • OPERATION_ID: ID operasi yang berjalan lama yang ditampilkan dalam respons operasi pemulihan massal.

Membuat daftar operasi yang berjalan lama di dalam bucket

Gunakan perintah gcloud storage operations list:

gcloud storage operations list gs://BUCKET_NAME

Ganti kode berikut:

  • BUCKET_NAME: nama bucket yang berisi operasi yang berjalan lama. Contoh, my-bucket.

Membatalkan operasi yang berjalan lama

Gunakan perintah gcloud storage operations cancel:

gcloud storage operations cancel projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

Ganti kode berikut:

  • BUCKET_NAME: nama bucket yang berisi operasi yang berjalan lama. Contoh, my-bucket.

  • OPERATION_ID: ID operasi yang berjalan lama yang ditampilkan dalam respons operasi pemulihan massal.

Penanganan error

Operasi yang berjalan lama ditampilkan dari API asinkron, yang memerlukan praktik penanganan error yang berbeda dengan API sinkron. Tidak seperti API sinkron, API yang menampilkan operasi yang berjalan lama akan berhasil meskipun operasi yang mendasarinya gagal. Saat menggunakan API yang menampilkan operasi yang berjalan lama, Anda akan merespons kode error yang ditampilkan dalam respons yang berhasil, bukan merespons kode error yang ditampilkan dalam respons yang gagal.

Misalnya, jika Anda mengajukan permintaan pemulihan massal untuk sementara, permintaan tersebut akan menampilkan kode status HTTP yang berhasil (200 OK) meskipun terjadi error selama operasi. Untuk memeriksa apakah operasi pemulihan massal berhasil, buat kueri status operasi yang berjalan lama.

Perhatikan bahwa API operasi yang berjalan lama (Dapatkan, Buat, Batalkan) bersifat sinkron dan menampilkan error normal.

Upaya coba lagi

Secara default, API penghapusan sementara asinkron bersifat idempoten. Oleh karena itu, Anda dapat mencoba kembali panggilan API penghapusan sementara asinkron tanpa perlu khawatir mengubah resource secara tidak sengaja.

Langkah selanjutnya