Utilizza oggetti eliminati temporaneamente

Panoramica Configurazione

In questa pagina viene descritto come elencare, accedere e ripristinare gli oggetti eliminati temporaneamente.

Prima di iniziare

Per completare le attività in questa pagina, assicurati di disporre del ruolo IAM Amministratore Storage (roles/storage.admin) per il bucket o per il progetto che contiene il bucket. Questo ruolo predefinito include le autorizzazioni necessarie per gestire e ripristinare l'eliminazione temporanea in un bucket.

Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

  • storage.buckets.get
  • storage.buckets.update
  • storage.buckets.list
    • Questa autorizzazione è necessaria se prevedi di utilizzare la console Google Cloud per eseguire le istruzioni riportate in questa pagina.
  • storage.objects.restore
  • storage.objects.create
  • storage.objects.delete
    • Questa autorizzazione è necessaria se il ripristino di un oggetto causa la sovrascrittura di un oggetto esistente.
  • storage.buckets.restore
    • Questa autorizzazione è necessaria se vuoi ripristinare collettivamente gli oggetti eliminati temporaneamente in un bucket.
  • storage.bucketOperations.*
    • Questa autorizzazione è obbligatoria per le operazioni a lunga esecuzione.

Per informazioni sulla concessione dei ruoli nei bucket, consulta Utilizzare IAM con i bucket. Per informazioni sulla concessione dei ruoli nei progetti, consulta Gestire l'accesso ai progetti.

Elenco di tutti gli oggetti eliminati temporaneamente in un bucket

Puoi elencare tutti gli oggetti eliminati temporaneamente in un bucket.

Console

  1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Nell'elenco dei bucket, fai clic sul nome del bucket di cui vuoi visualizzare gli oggetti eliminati temporaneamente. Si apre la pagina Dettagli bucket in cui è selezionata la scheda Oggetti.

  3. Nell'elenco Mostra, seleziona Solo oggetti eliminati temporaneamente. Viene visualizzato un elenco di oggetti eliminati temporaneamente.

Riga di comando

Per visualizzare un elenco di tutti gli oggetti eliminati temporaneamente in un bucket, utilizza il comando gcloud storage ls con i flag --soft-deleted e --recursive:

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

Sostituisci quanto segue:

  • BUCKET_NAME: il nome del bucket. Ad esempio, my-bucket.

API REST

API JSON

  1. Assicurati che gcloud CLI sia installato e inizializzatoper generare un token di accesso per l'intestazione Authorization.

    In alternativa, puoi creare un token di accesso utilizzando OAuth 2.0 Playground e includerlo nell'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API JSON con una richiesta di elencare gli oggetti che utilizza il parametro di query ?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"

    Dove BUCKET_NAME è il nome del bucket pertinente. Ad esempio, my-bucket.

Visualizza tutte le versioni eliminate temporaneamente di un oggetto

Puoi visualizzare tutte le versioni eliminate temporaneamente di un oggetto specifico nel tuo bucket.

Console

  1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Nell'elenco dei bucket, fai clic sul nome del bucket che contiene l'oggetto di cui vuoi visualizzare le versioni eliminate temporaneamente. Si apre la pagina Dettagli bucket in cui è selezionata la scheda Oggetti.

  3. Fai clic sull'oggetto di cui vuoi visualizzare tutte le versioni eliminate temporaneamente. Viene visualizzata la pagina Dettagli oggetto.

  4. Fai clic sulla scheda Cronologia delle versioni.

  5. Nell'elenco Mostra, seleziona Solo oggetti eliminati temporaneamente. Viene visualizzato un elenco di tutte le versioni eliminate temporaneamente per l'oggetto in questione.

Riga di comando

Per visualizzare un elenco di tutte le versioni eliminate temporaneamente di un oggetto in un bucket, utilizza il comando gcloud storage ls:

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

Sostituisci quanto segue:

  • BUCKET_NAME: il nome del bucket. Ad esempio, my-bucket.
  • OBJECT_NAME: il nome dell'oggetto di cui vuoi visualizzare tutte le versioni.

API REST

API JSON

  1. Assicurati che gcloud CLI sia installato e inizializzatoper generare un token di accesso per l'intestazione Authorization.

    In alternativa, puoi creare un token di accesso utilizzando OAuth 2.0 Playground e includerlo nell'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API JSON con una richiesta di elencare gli oggetti che utilizza il parametro di query ?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"

    Dove BUCKET_NAME è il nome del bucket pertinente. Ad esempio, my-bucket.

Ripristina un oggetto eliminato temporaneamente

Puoi ripristinare una versione specifica di un oggetto eliminato temporaneamente nel bucket.

Console

  1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Nell'elenco dei bucket, fai clic sul nome del bucket che contiene gli oggetti eliminati temporaneamente da ripristinare. Si apre la pagina Dettagli bucket in cui è selezionata la scheda Oggetti.

  3. Nell'elenco Mostra, seleziona Solo oggetti eliminati temporaneamente.

  4. Vai all'oggetto, che potrebbe trovarsi in una cartella.

  5. Fai clic sull'oggetto eliminato temporaneamente. Viene visualizzata la pagina Dettagli oggetto.

  6. Nell'elenco Mostra, seleziona Solo oggetti eliminati temporaneamente. Viene visualizzato un elenco di tutte le versioni eliminate temporaneamente dell'oggetto.

  7. Per ripristinare una versione specifica di un oggetto eliminata temporaneamente, fai clic su Ripristina accanto alla versione dell'oggetto. Viene visualizzato il riquadro di ripristino della versione degli oggetti.

  8. Fai clic su Conferma.

Riga di comando

Per ripristinare una versione eliminata temporaneamente di un oggetto, utilizza il comando gcloud storage restore:

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

Sostituisci quanto segue:

  • BUCKET_NAME: il nome del bucket. Ad esempio, my-bucket.
  • OBJECT_NAME: il nome dell'oggetto per il quale vuoi visualizzare tutte le versioni.
  • GENERATION_NUMBER: il numero di generazione dell'oggetto eliminato temporaneamente da ripristinare. Se non specifichi il numero di generazione, viene ripristinata l'ultima versione. Ad esempio, 1560468815691234.

Per ulteriori opzioni per il ripristino di più oggetti in blocco, tra cui il ripristino di tutte le versioni di un oggetto con il flag all-versions, consulta la documentazione di riferimento gcloud storage restore.

API REST

API JSON

  1. Assicurati che gcloud CLI sia installato e inizializzatoper generare un token di accesso per l'intestazione Authorization.

    In alternativa, puoi creare un token di accesso utilizzando OAuth 2.0 Playground e includerlo nell'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API JSON con una richiesta POST oggetto:

    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"

    Dove:

    • BUCKET_NAME è il nome del bucket pertinente. Ad esempio, my-bucket.
    • OBJECT_NAME è il nome dell'oggetto eliminato temporaneamente da ripristinare. Ad esempio, cat.jpeg.
    • GENERATION_NUMBER è il numero di generazione dell'oggetto eliminato temporaneamente da ripristinare. Se non specifichi il numero di generazione, viene ripristinata l'ultima versione. Ad esempio, 1560468815691234.

Ripristino collettivo degli oggetti eliminati temporaneamente in un bucket

Se vuoi ripristinare un numero elevato di oggetti o non conosci gli oggetti specifici da ripristinare, utilizza un'operazione di ripristino collettivo. Tieni presente che le operazioni di ripristino collettive avvengono in modo asincrono e, in alcuni casi, possono richiedere un'ora o più.

L'operazione di ripristino collettivo avvia un'operazione a lunga esecuzione su un bucket. Puoi utilizzare Google Cloud CLI per recuperare ed elencare le operazioni a lunga esecuzione in modo da visualizzare i dettagli e lo stato dell'operazione di ripristino collettivo mentre è in corso.

Console

  1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Nell'elenco dei bucket, individua il bucket che contiene gli oggetti da ripristinare.

  3. Fai clic sul menu overflow del bucket () associato al bucket e seleziona Crea job di ripristino.

    Viene visualizzato il riquadro Crea un job di ripristino.

  4. Nella sezione Scegli gli oggetti eliminati temporaneamente da ripristinare, seleziona il periodo di eliminazione a partire dal quale ripristinare gli oggetti.

  5. (Facoltativo) Seleziona Filtra per pattern glob e inserisci un pattern glob per ripristinare solo gli oggetti che soddisfano i criteri per i pattern glob.

  6. (Facoltativo) Attiva/disattiva ulteriori comportamenti di ripristino nella sezione Opzioni di ripristino.

  7. Fai clic su Crea.

Puoi monitorare l'avanzamento dell'operazione di ripristino collettivo facendo clic sul pulsante Notifiche () che si trova nell'intestazione della console Google Cloud.

Riga di comando

Per utilizzare l'operazione di ripristino collettivo per ripristinare tutti gli oggetti in un bucket, utilizza il comando gcloud storage restore.

Il seguente comando esegue un'operazione di ripristino in blocco per ripristinare in modo asincrono tutti gli oggetti del bucket che sono stati eliminati durante un periodo di tempo specifico:

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

Sostituisci quanto segue:

  • BUCKET_NAME: il nome del bucket. Ad esempio, my-bucket.
  • DELETED_AFTER_TIME: un argomento facoltativo per specificare la data dopo la quale vengono ripristinati gli oggetti. Ad esempio, 2022-12-01.
  • DELETED_BEFORE_TIME: un argomento facoltativo per specificare la data prima della quale vengono ripristinati gli oggetti. Ad esempio, 2022-12-21.

    Se l'esito è positivo, il comando restituisce l'ID dell'operazione a lunga esecuzione associata all'operazione di ripristino collettivo. Puoi ottenere i dettagli sull'operazione a lunga esecuzione o annullare l'operazione a lunga esecuzione per arrestare l'operazione di ripristino collettivo prima che venga completata.

API REST

API JSON

  1. Assicurati che gcloud CLI sia installato e inizializzatoper generare un token di accesso per l'intestazione Authorization.

    In alternativa, puoi creare un token di accesso utilizzando OAuth 2.0 Playground e includerlo nell'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API JSON con una richiesta POST oggetto:

    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"

    Dove BUCKET_NAME è il nome del bucket pertinente. Ad esempio, my-bucket.

Se l'esito è positivo, il comando restituisce l'ID dell'operazione a lunga esecuzione associata all'operazione di ripristino collettivo. Puoi ottenere i dettagli sull'operazione a lunga esecuzione o annullare l'operazione a lunga esecuzione per interrompere l'operazione di ripristino collettivo prima del completamento.

Gestisci le operazioni a lunga esecuzione per il ripristino collettivo

Le operazioni a lunga esecuzione in Google Cloud CLI sono identificate da un nome operazione, che è una combinazione del nome del bucket e dell'ID operazione.

L'esempio seguente mostra un'operazione a lunga esecuzione restituita da un'operazione di ripristino collettivo:

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"
  }
}

Per informazioni generali su come gestire le operazioni a lunga esecuzione, consulta la documentazione di gcloud storage operations.

Ottieni i dettagli di un'operazione a lunga esecuzione

Utilizza il comando gcloud storage operations describe:

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

Sostituisci quanto segue:

  • BUCKET_NAME: il nome del bucket che contiene l'operazione a lunga esecuzione. Ad esempio, my-bucket.

  • OPERATION_ID: l'ID dell'operazione a lunga esecuzione restituita nella risposta dell'operazione di ripristino collettivo.

Elenco delle operazioni a lunga esecuzione in un bucket

Utilizza il comando gcloud storage operations list:

gcloud storage operations list gs://BUCKET_NAME

Sostituisci quanto segue:

  • BUCKET_NAME: il nome del bucket che contiene le operazioni a lunga esecuzione. Ad esempio, my-bucket.

Annulla un'operazione a lunga esecuzione

Utilizza il comando gcloud storage operations cancel:

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

Sostituisci quanto segue:

  • BUCKET_NAME: il nome del bucket che contiene l'operazione a lunga esecuzione. Ad esempio, my-bucket.

  • OPERATION_ID: l'ID dell'operazione a lunga esecuzione restituita nella risposta dell'operazione di ripristino collettivo.

Gestione degli errori

Le operazioni a lunga esecuzione vengono restituite dalle API asincrone, che richiedono pratiche di gestione degli errori diverse rispetto alle API sincrone. A differenza delle API sincrone, le API che restituiscono operazioni a lunga esecuzione hanno esito positivo anche se l'operazione sottostante non va a buon fine. Quando utilizzi API che restituiscono operazioni a lunga esecuzione, rispondi ai codici di errore restituiti nelle risposte riuscite, invece di rispondere ai codici di errore restituiti nelle risposte non riuscite.

Ad esempio, una richiesta di ripristino collettivo di eliminazione temporanea restituisce un codice di stato HTTP (200 OK) riuscito anche se si verifica un errore nel corso dell'operazione. Per verificare se l'operazione di ripristino collettivo è riuscita, esegui una query sullo stato dell'operazione a lunga esecuzione.

Tieni presente che le API operazione a lunga esecuzione (Get, Create, Cancel) sono sincrone e restituiscono errori normali.

Nuovi tentativi

Le API di eliminazione temporanea asincrone sono idempotenti per impostazione predefinita. Di conseguenza, puoi riprovare in sicurezza alle chiamate API di eliminazione temporanea, asincrone, senza preoccuparti di modificare involontariamente le risorse.

Passaggi successivi