Questa pagina mostra come copiare, rinominare e spostare gli oggetti. Mentre alcuni strumenti eseguono operazioni di spostamento atomico degli oggetti, altri simulano un'operazione di spostamento degli oggetti copiando l'oggetto in una nuova posizione specificata ed eliminando l'oggetto originale.
- Per istruzioni sulla copia degli oggetti, vedi Copiare gli oggetti.
- Per istruzioni su come spostare o rinominare gli oggetti copiandoli, consulta Spostare o rinominare gli oggetti copiandoli.
- Per istruzioni sulla ridenominazione atomica degli oggetti, consulta Ridenominare gli oggetti in modo atomico.
Ti consigliamo di utilizzare Storage Transfer Service per spostare più di 1 TB di dati tra i bucket.
Prima di iniziare
Per copiare, rinominare o spostare gli oggetti, devi ottenere i ruoli IAM richiesti. Le seguenti sezioni descrivono i requisiti IAM per diversi casi d'uso.
Copiare oggetti (inclusi lo spostamento o la ridenominazione tramite copia)
Per ottenere le autorizzazioni necessarie per copiare gli oggetti, chiedi all'amministratore di concederti i seguenti ruoli IAM nel bucket di origine che contiene gli oggetti che vuoi spostare o nel bucket di destinazione in cui vuoi spostare gli oggetti:
-
Storage Object Viewer (
roles/storage.objectViewer
) nel bucket di origine -
Storage Object User (
roles/storage.objectUser
) sul bucket di destinazione -
Per copiare gli oggetti utilizzando la console Google Cloud :
Ruolo di base Visualizzatore (
roles/viewer
) sia nel bucket di origine che in quello di destinazione, oltre aroles/storage.objectViewer
eroles/storage.objectUser
Questi ruoli predefiniti contengono le autorizzazioni necessarie per copiare gli oggetti. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per copiare gli oggetti sono necessarie le seguenti autorizzazioni:
-
storage.objects.get
nel bucket di origine -
storage.objects.create
nel bucket di destinazione -
storage.objects.delete
(obbligatorio solo se stai sostituendo o sovrascrivendo un oggetto nel bucket di destinazione nell'ambito di un'operazione di copia o spostamento di oggetti) nel bucket di destinazione -
storage.objects.delete
(obbligatorio solo se sposti un oggetto utilizzando un'operazione di copia ed eliminazione sottostante) nel bucket di origine -
storage.folders.create
(obbligatorio solo se l'oggetto che stai spostando si trova in una cartella che vuoi creare nel bucket di destinazione) nel bucket di destinazione -
storage.objects.list
(obbligatorio solo se stai copiando, spostando o rinominando un oggetto utilizzando la console Google Cloud ) sui bucket di origine e destinazione -
storage.buckets.list
(obbligatorio solo se copi, sposti o rinomini un oggetto utilizzando la console Google Cloud ) nel progetto che contiene i bucket di origine e di destinazione
Puoi anche ottenere queste autorizzazioni con ruoli personalizzati.
Per informazioni sulla concessione dei ruoli sui bucket, consulta Utilizzare IAM con i bucket. Per informazioni sulla concessione dei ruoli nei progetti, consulta Gestire l'accesso ai progetti.
Se l'oggetto che vuoi copiare ha determinate funzionalità attive, potresti aver bisogno
di ruoli aggiuntivi o alternativi. Ad esempio, se l'oggetto che vuoi copiare ha
una configurazione di conservazione degli oggetti che vuoi mantenere, devi disporre di un ruolo nel
bucket di destinazione che includa l'autorizzazione storage.objects.setRetention
, ad esempio il ruolo Amministratore oggetti archiviazione (roles/storage.objectAdmin
).
Per maggiori informazioni, consulta Autorizzazioni IAM per Cloud Storage.
Rinomina gli oggetti in modo atomico
Per ottenere le autorizzazioni
necessarie per rinominare gli oggetti in modo atomico,
chiedi all'amministratore di concederti il
ruolo IAM Utente oggetti Storage (roles/storage.objectUser
)
nel bucket che contiene l'oggetto che vuoi rinominare.
Questo ruolo predefinito contiene le autorizzazioni necessarie per rinominare gli oggetti in modo atomico. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per rinominare gli oggetti in modo atomico sono necessarie le seguenti autorizzazioni:
-
storage.objects.move
-
storage.objects.create
-
storage.objects.delete
(obbligatorio solo se stai sovrascrivendo o sostituendo un oggetto)
Puoi anche ottenere queste autorizzazioni con ruoli personalizzati.
Per informazioni sulla concessione dei ruoli sui bucket, consulta Utilizzare IAM con i bucket.
Copiare oggetti
Questa sezione descrive come copiare gli oggetti. Puoi copiare oggetti da un bucket a un altro.
Console
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
Nell'elenco dei bucket, fai clic sul nome del bucket che contiene l'oggetto da copiare.
Viene visualizzata la pagina Dettagli bucket, con la scheda Oggetti selezionata.
Vai all'oggetto, che potrebbe trovarsi in una cartella.
Fai clic sul menu Extra oggetto (more_vert) associato all'oggetto.
Fai clic su Copia.
Viene visualizzato il riquadro Copia oggetto.
Nel campo Destinazione, digita il nome del bucket di destinazione e il nome dell'oggetto copiato.
In alternativa, puoi fare clic su Sfoglia per selezionare la destinazione, ma le opzioni di navigazione sono limitate ai bucket del progetto corrente.
Fai clic su Copia.
Per scoprire come ottenere informazioni dettagliate sugli errori relativi alle operazioni di Cloud Storage non riuscite nella console Google Cloud , consulta Risoluzione dei problemi.
Riga di comando
Utilizza il comando gcloud storage cp
:
gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/NAME_OF_COPY
Dove:
SOURCE_BUCKET_NAME
è il nome del bucket che contiene l'oggetto da copiare. Ad esempio,my-bucket
.SOURCE_OBJECT_NAME
è il nome dell'oggetto che vuoi copiare. Ad esempio,pets/dog.png
.DESTINATION_BUCKET_NAME
è il nome del bucket in cui vuoi copiare l'oggetto. Ad esempio,another-bucket
.NAME_OF_COPY
è il nome che vuoi assegnare alla copia dell'oggetto. Ad esempio,shiba.png
.
Se l'operazione ha esito positivo, la risposta è simile all'esempio seguente:
Copying gs://example-bucket/file.txt to gs://other-bucket/file-copy.txt Completed files 1/1 | 164.3kiB/164.3kiB
Librerie client
C++
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C++.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
C#
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C#.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Go
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Go.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Java.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Node.js.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
PHP
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage PHP.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Python.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Ruby
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Ruby.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
API REST
API JSON
Avere la gcloud CLI installata e inizializzata, che ti consente di generare un token di accesso per l'intestazione
Authorization
.Utilizza
cURL
per chiamare l'API JSON con una richiesta diPOST
oggetto:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/NAME_OF_COPY"
Dove:
SOURCE_BUCKET_NAME
è il nome del bucket contenente l'oggetto da copiare. Ad esempio,my-bucket
.SOURCE_OBJECT_NAME
è il nome con codifica URL dell'oggetto che vuoi copiare. Ad esempio,pets/dog.png
, codificato come URLpets%2Fdog.png
.DESTINATION_BUCKET_NAME
è il nome del bucket in cui vuoi copiare l'oggetto. Ad esempio,another-bucket
.NAME_OF_COPY
è il nome con codifica URL che vuoi assegnare alla copia dell'oggetto. Ad esempio,shiba.png
.
Poiché il metodo
rewrite
copia i dati in blocchi di dimensioni limitate, la copia potrebbe richiedere più richieste, soprattutto per gli oggetti di grandi dimensioni.Ad esempio, la seguente risposta a una richiesta
rewrite
indica che devi effettuare ulteriori richiesterewrite
:{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 1048576, "objectSize": 10000000000, "done": false, "rewriteToken": TOKEN_VALUE }
Utilizza
rewriteToken
in una richiesta successiva per continuare a copiare i dati:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ -d '{"rewriteToken": "TOKEN_VALUE"}' \ "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/NAME_OF_COPY"
Dove:
TOKEN_VALUE
è il valore direwriteToken
restituito nella richiesta precedente.- Tutti gli altri valori corrispondono a quelli utilizzati nella richiesta precedente.
Quando l'oggetto viene copiato completamente, l'ultima risposta ha una proprietà
done
impostata sutrue
, non esiste una proprietàrewriteToken
e i metadati della copia sono inclusi nella proprietàresource
.{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 10000000000, "objectSize": 10000000000, "done": true, "resource": objects Resource }
API XML
Avere la gcloud CLI installata e inizializzata, che ti consente di generare un token di accesso per l'intestazione
Authorization
.Utilizza
cURL
per chiamare l'API XML con una richiesta diPUT
oggetto:curl -X PUT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-copy-source: SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME" \ "https://storage.googleapis.com/DESTINATION_BUCKET_NAME/NAME_OF_COPY"
Dove:
SOURCE_BUCKET_NAME
è il nome del bucket contenente l'oggetto da copiare. Ad esempio,my-bucket
.SOURCE_OBJECT_NAME
è il nome dell'oggetto che vuoi copiare. Ad esempio,pets/dog.png
.DESTINATION_BUCKET_NAME
è il nome del bucket in cui vuoi copiare l'oggetto. Ad esempio,another-bucket
.NAME_OF_COPY
è il nome con codifica URL che vuoi assegnare alla copia dell'oggetto. Ad esempio,shiba.png
.
Spostare o rinominare gli oggetti copiandoli
Questa sezione descrive come spostare o rinominare gli oggetti utilizzando le operazioni di copia degli oggetti sottostanti. Gli strumenti descritti in questa sezione eseguono spostamenti e ridenominazioni di oggetti copiando l'oggetto originale in un altro spazio dei nomi ed eliminandolo.
Console
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
Nell'elenco dei bucket, fai clic sul nome del bucket contenente l'oggetto da spostare.
Viene visualizzata la pagina Dettagli bucket, con la scheda Oggetti selezionata.
Vai all'oggetto, che potrebbe trovarsi in una cartella.
Fai clic sul menu Extra oggetto (more_vert) associato all'oggetto.
Se vuoi assegnare un nuovo nome all'oggetto nello stesso bucket, fai clic su Rinomina.
Nella finestra di overlay visualizzata, inserisci un nuovo nome per l'oggetto.
Fai clic su Rinomina.
Se vuoi spostare l'oggetto in un altro bucket, fai clic su Sposta.
Nella finestra di overlay visualizzata, fai clic su Sfoglia.
Seleziona la destinazione dell'oggetto che stai spostando.
Fai clic su Seleziona.
Fai clic su Sposta.
Per scoprire come ottenere informazioni dettagliate sugli errori relativi alle operazioni di Cloud Storage non riuscite nella console Google Cloud , consulta Risoluzione dei problemi.
Riga di comando
Utilizza il comando gcloud storage mv
:
gcloud storage mv gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME
Dove:
SOURCE_BUCKET_NAME
è il nome del bucket che contiene l'oggetto da spostare o rinominare. Ad esempio,my-bucket
.SOURCE_OBJECT_NAME
è il nome dell'oggetto che vuoi spostare o rinominare. Ad esempio,pets/dog.png
.DESTINATION_BUCKET_NAME
è il nome del bucket in cui vuoi spostare l'oggetto. Ad esempio,another-bucket
.DESTINATION_OBJECT_NAME
è il nome che vuoi assegnare all'oggetto dopo lo spostamento o la ridenominazione. Ad esempio,shiba.png
.
Se l'operazione ha esito positivo, la risposta è simile all'esempio seguente:
Copying gs://example-bucket/old-file.txt to gs://new-bucket/new-file.txt Removing gs://example-bucket/old-file.txt... Completed files 1/1 | 164.3kiB/164.3kiB
Librerie client
C++
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C++.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
C#
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C#.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Go
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Go.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Java.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Node.js.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
PHP
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage PHP.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Python.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Ruby
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Ruby.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
API REST
API JSON
Per istruzioni sull'API JSON per spostare o rinominare oggetti mediante la copia, consulta Copiare oggetti.
API XML
Per le istruzioni dell'API XML sullo spostamento o la ridenominazione di oggetti mediante la copia, consulta Copiare oggetti.
Rinomina gli oggetti in modo atomico
Questa sezione descrive come rinominare in modo atomico gli oggetti all'interno di un bucket.
Per rinominare un oggetto, puoi utilizzare il metodo Objects: move
nell'API Cloud Storage JSON.
API REST
API JSON
Per rinominare in modo atomico un oggetto:
Avere la gcloud CLI installata e inizializzata, che ti consente di generare un token di accesso per l'intestazione
Authorization
.Utilizza
cURL
per chiamare l'API JSON con una richiestaObjects: move
:curl -X POST
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Length: 0"
"https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/SOURCE_OBJECT_NAME/moveTo/o/DESTINATION_OBJECT_NAME"Dove:
BUCKET_NAME
è il nome del bucket contenente l'oggetto da rinominare. Ad esempio,my-bucket
.SOURCE_OBJECT_NAME
è il nome con codifica URL dell'oggetto che vuoi rinominare. Ad esempio,pets/dog.png
, codificato come URLpets%2Fdog.png
.DESTINATION_OBJECT_NAME
è il nome codificato tramite URL che vuoi utilizzare. Ad esempio,pets/cat.png
, codificato come URLpets%2Fcat.png
.
Passaggi successivi
- Modifica la classe di archiviazione di un oggetto.
- Modifica i metadati di un oggetto.
- Rendere pubblicamente accessibili oggetti e bucket.
- Scopri di più sui requisiti di denominazione degli oggetti.
- Scopri di più sull'utilizzo delle precondizioni delle richieste per evitare le race condition.