Copiare dati da Google Cloud Storage in Archiviazione di Azure usando AzCopy
AzCopy è un'utilità della riga di comando che è possibile usare per copiare i BLOB o i file da e verso un account di archiviazione. Questo articolo illustra come copiare oggetti, directory e bucket da Google Cloud Storage in Archiviazione BLOB di Azure usando AzCopy.
Scegliere il modo in cui fornire le credenziali di autorizzazione
Per autorizzare con Archiviazione di Azure, usare Microsoft Entra ID o un token di firma di accesso condiviso.
Per autorizzare con Google Cloud Storage, usare una chiave dell'account del servizio.
Autorizzare con Archiviazione di Azure
Vedere l'articolo Introduzione ad AzCopy per scaricare AzCopy e scoprire informazioni sui modi in cui è possibile fornire le credenziali di autorizzazione al servizio di archiviazione.
Nota
Gli esempi in questo articolo presuppongono che siano state fornite le credenziali di autorizzazione usando l'ID Microsoft Entra.
Se si preferisce usare un token di firma di accesso condiviso per autorizzare l'accesso ai dati BLOB, è possibile aggiungere tale token all'URL della risorsa in ogni comando AzCopy. Ad esempio: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'
.
Autorizzare con Google Cloud Storage
Per autorizzare con Google Cloud Storage, si usa una chiave dell'account del servizio. Per informazioni su come creare una chiave dell'account del servizio, vedere Creazione e gestione delle chiavi dell'account del servizio.
Dopo aver ottenuto una chiave del servizio, impostare la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS
sul percorso assoluto del file di chiave dell'account del servizio:
Sistema operativo | Comando |
---|---|
Windows | set GOOGLE_APPLICATION_CREDENTIALS=<path-to-service-account-key> |
Linux | export GOOGLE_APPLICATION_CREDENTIALS=<path-to-service-account-key> |
macOS | export GOOGLE_APPLICATION_CREDENTIALS=<path-to-service-account-key> |
Copiare oggetti, directory e bucket
AzCopy usa l'API di Put Block From URL, quindi i dati vengono copiati direttamente tra Google Cloud Storage e i server di archiviazione. Queste operazioni di copia non usano la larghezza di banda di rete del computer.
Suggerimento
Negli esempi di questa sezione gli argomenti path vengono racchiusi con virgolette singole (''). Usare virgolette singole in tutte le shell dei comandi, ad eccezione della shell dei comandi di Windows (cmd.exe). Se si usa una shell dei comandi di Windows (cmd.exe), racchiudere gli argomenti di percorso con virgolette doppie ("") anziché virgolette singole ('').
Questi esempi funzionano anche con gli account con uno spazio dei nomi gerarchico. L'Accesso multi-protocollo in Data Lake Storage consente di usare la stessa sintassi URL (blob.core.windows.net
) in tali account.
Copiare un oggetto
Usare la stessa sintassi URL (blob.core.windows.net
) per gli account con uno spazio dei nomi gerarchico.
Sintassi
azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'
Esempio
azcopy copy 'https://storage.cloud.google.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'
Copiare una directory
Usare la stessa sintassi URL (blob.core.windows.net
) per gli account con uno spazio dei nomi gerarchico.
Sintassi
azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<directory-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true
Esempio
azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Nota
In questo esempio viene aggiunto il flag --recursive
per copiare i file in tutte le sottodirectory.
Copiare i contenuti di una directory
È possibile copiare i contenuti di una directory senza copiare la directory stessa che lo contiene usando il carattere jolly (*).
Sintassi
azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<directory-name>/*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true
Esempio
azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Copiare un bucket di Archiviazione nel cloud
Usare la stessa sintassi URL (blob.core.windows.net
) per gli account con uno spazio dei nomi gerarchico.
Sintassi
azcopy copy 'https://storage.cloud.google.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Esempio
azcopy copy 'https://storage.cloud.google.com/mybucket' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Copiare tutti i bucket in un progetto Google Cloud
Prima di tutto, impostare GOOGLE_CLOUD_PROJECT
sull'ID progetto di Google Cloud.
Usare la stessa sintassi URL (blob.core.windows.net
) per gli account con uno spazio dei nomi gerarchico.
Sintassi
azcopy copy 'https://storage.cloud.google.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Esempio
azcopy copy 'https://storage.cloud.google.com/' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Copiare un subset di bucket in un progetto Google Cloud
Prima di tutto, impostare GOOGLE_CLOUD_PROJECT
sull'ID progetto di Google Cloud.
Copiare un subset di bucket usando un simbolo jolly (*) nel nome del bucket. Usare la stessa sintassi URL (blob.core.windows.net
) per gli account con uno spazio dei nomi gerarchico.
Sintassi
azcopy copy 'https://storage.cloud.google.com/<bucket*name>' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Esempio
azcopy copy 'https://storage.cloud.google.com/my*bucket' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Gestire le differenze nelle regole di denominazione dei bucket
Google Cloud Storage ha un set diverso di convenzioni di denominazione per i nomi di bucket rispetto ai contenitori BLOB di Azure. Tutte le informazioni a riguardo sono disponibili qui. Se si sceglie di copiare un gruppo di bucket in un account di archiviazione di Azure, l'operazione di copia potrebbe non riuscire a causa delle differenze di denominazione.
AzCopy gestisce tre dei problemi più comuni che possono verificarsi; bucket che contengono punti, bucket che contengono trattini consecutivi e bucket che contengono caratteri di sottolineatura. I nomi dei bucket di Google Cloud Storage possono contenere punti e trattini consecutivi, ma un contenitore in Azure non può. AzCopy sostituisce i punti con trattini e i trattini consecutivi con un numero che rappresenta il numero di trattini consecutivi (ad esempio, un bucket denominato my----bucket
diventa my-4-bucket
. Se il nome del bucket ha un carattere di sottolineatura (_
), AzCopy lo sostituisce con un trattino. Ad esempio, un bucket denominato my_bucket
diventa my-bucket
.
Gestire le differenze nelle regole di denominazione degli oggetti
Google Cloud Storage ha un set diverso di convenzioni di denominazione per i nomi di oggetti rispetto ai BLOB di Azure. Tutte le informazioni a riguardo sono disponibili qui.
Archiviazione di Azure non consente ai nomi degli oggetti (o a qualsiasi segmento nel percorso della directory virtuale) di terminare con punti finali ( ad esempio my-bucket...
). I punti finali vengono eliminati quando viene eseguita l'operazione di copia.
Gestire le differenze nei metadati degli oggetti
Google Cloud Storage e Azure consentono diversi set di caratteri nei nomi delle chiavi oggetto. È possibile leggere informazioni sui metadati in Google Cloud Storage qui. Su lato Azure le chiavi oggetto BLOB rispettano le regole di denominazione per gli identificatori C#.
Come parte di un comando AzCopy copy
, è possibile fornire un valore facoltativo per il flag s2s-handle-invalid-metadata
che specifica come gestire i file in cui i metadati del file contengono nomi di chiave incompatibili. Nella tabella seguente sono descritti i singoli valori dei flag.
Valore flag | Descrizione |
---|---|
ExcludeIfInvalid | (opzione predefinita) I metadati non sono inclusi nell'oggetto trasferito. AzCopy registra un avviso. |
FailIfInvalid | Gli oggetti non vengono copiati. AzCopy registra un errore e include tale errore nel conteggio visualizzato nel riepilogo del trasferimento. |
RenameIfInvalid | AzCopy risolve la chiave di metadati non valida e copia l'oggetto in Azure usando la coppia di valori della chiave dei metadati risolta. Per informazioni sui passaggi esatti impiegati da AzCopy per rinominare le chiavi oggetto, vedere la sezione Come AzCopy rinomina le chiavi degli oggetti di seguito. Se AzCopy non è in grado di rinominare la chiave, l'oggetto non verrà copiato. |
Come AzCopy rinomina le chiavi degli oggetti
AzCopy esegue i seguenti passaggi:
Sostituisce i caratteri non validi con "_".
Aggiunge la stringa
rename_
all'inizio di una nuova chiave valida.Questa chiave verrà usata per salvare il valore dei metadati originali.
Aggiunge la stringa
rename_key_
all'inizio di una nuova chiave valida. Questa chiave verrà usata per salvare la chiave originale dei metadati non validi. È possibile usare questa chiave per provare a recuperare i metadati sul lato Azure perché la chiave di metadati viene mantenuta come valore nel servizio di archiviazione BLOB.
Passaggi successivi
Altri esempi sono disponibili in questi articoli:
- Esempi: Caricamento
- Esempi: Scaricare
- Esempi: Copiare tra account
- Esempi: Sincronizzare
- Esempi: Bucket di Amazon S3
- Esempi: File di Azure
- Esercitazione: Eseguire la migrazione di dati locali in una risorsa di archiviazione cloud tramite AzCopy
Vedere questi articoli per configurare le impostazioni, ottimizzare le prestazioni e risolvere i problemi: