Copia de datos de Google Cloud Storage a Azure Storage con AzCopy
AzCopy es una utilidad de línea de comandos que puede usar para copiar blobs o archivos a una cuenta de almacenamiento o desde una cuenta de almacenamiento. Este artículo le ayuda a copiar objetos, directorios y cubos de Google Cloud Storage a Azure Blob Storage mediante AzCopy.
Elección del modo de proporcionar las credenciales de autorización
Para autorizar con Azure Storage, use Microsoft Entra ID o un token de firma de acceso compartido (SAS).
Para la autorización con Google Cloud Storage, use una clave de cuenta de servicio.
Autorización con Azure Storage
Vea el artículo Introducción a AzCopy para descargar AzCopy y obtener información sobre las formas de proporcionar credenciales de autorización para el servicio de almacenamiento.
Nota:
En los ejemplos de este artículo se da por hecho que ha proporcionado credenciales de autorización mediante Microsoft Entra ID.
Si prefiere usar un token de SAS para autorizar el acceso a los datos de blob, puede anexar ese token a la dirección URL de recursos en cada comando AzCopy. Por ejemplo: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'
.
Autorización con Google Cloud Storage
Para la autorización con Google Cloud Storage, usará una clave de cuenta de servicio. Para obtener información acerca de cómo crear una clave de cuenta de servicio, consulte Crea y administra claves de cuentas de servicio.
Después de obtener una clave de servicio, establezca la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
en una ruta de acceso absoluta al archivo de clave de cuenta de servicio:
Sistema operativo | Get-Help |
---|---|
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> |
Copia de objetos, directorios y cubos
AzCopy usa la API Put Block From URL, por lo que los datos se copian directamente entre Google Cloud Storage y los servidores de almacenamiento. En estas operaciones de copia no se usa el ancho de banda de red del equipo.
Sugerencia
En los ejemplos de esta sección se delimitan los argumentos de ruta de acceso con comillas simples (''). Use comillas simples en todos los shells de comandos excepto en el shell de comandos de Windows (cmd.exe). Si usa un shell de comandos de Windows (cmd.exe), incluya los argumentos de la ruta de acceso entre comillas dobles ("") en lugar de comillas simples ('').
Estos ejemplos también funcionan con las cuentas que tienen un espacio de nombres jerárquico. El acceso multiprotocolo en Data Lake Storage le permite usar la misma sintaxis de URL (blob.core.windows.net
) en esas cuentas.
Copia de un objeto
Use la misma sintaxis de URL (blob.core.windows.net
) para las cuentas que tienen un espacio de nombres jerárquico.
Sintaxis
azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'
Ejemplo
azcopy copy 'https://storage.cloud.google.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'
Copia de un directorio
Use la misma sintaxis de URL (blob.core.windows.net
) para las cuentas que tienen un espacio de nombres jerárquico.
Sintaxis
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
Ejemplo
azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Nota
En este ejemplo se anexa la marca --recursive
para copiar archivos en todos los subdirectorios.
Copia de los contenidos de un directorio
Puede copiar el contenido de un directorio sin copiar el propio directorio contenedor mediante el carácter comodín (*).
Sintaxis
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
Ejemplo
azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Copia de un cubo de Cloud Storage
Use la misma sintaxis de URL (blob.core.windows.net
) para las cuentas que tienen un espacio de nombres jerárquico.
Sintaxis
azcopy copy 'https://storage.cloud.google.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Ejemplo
azcopy copy 'https://storage.cloud.google.com/mybucket' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Copia de todos los cubos en un proyecto de Google Cloud
En primer lugar, establezca el valor de GOOGLE_CLOUD_PROJECT
en el identificador del proyecto de Google Cloud.
Use la misma sintaxis de URL (blob.core.windows.net
) para las cuentas que tienen un espacio de nombres jerárquico.
Sintaxis
azcopy copy 'https://storage.cloud.google.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Ejemplo
azcopy copy 'https://storage.cloud.google.com/' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Copia de un subconjunto de cubos en un proyecto de Google Cloud
En primer lugar, establezca el valor de GOOGLE_CLOUD_PROJECT
en el identificador del proyecto de Google Cloud.
Copia de un subconjunto de cubos mediante un símbolo comodín (*) en el nombre del cubo. Use la misma sintaxis de URL (blob.core.windows.net
) para las cuentas que tienen un espacio de nombres jerárquico.
Sintaxis
azcopy copy 'https://storage.cloud.google.com/<bucket*name>' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Ejemplo
azcopy copy 'https://storage.cloud.google.com/my*bucket' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Control de las diferencias en las reglas de nomenclatura de cubos
Google Cloud Storage tiene otro conjunto de convenciones de nomenclatura para los nombres de cubo, en comparación con los contenedores de blobs de Azure. Aquí puede leer más al respecto. Si elige copiar un grupo de cubos en una cuenta de Azure Storage, es posible que se produzca un error en la operación de copia debido a las diferencias de nomenclatura.
AzCopy se encarga de tres de los problemas más comunes que pueden surgir; cubos que contienen puntos, cubos que contienen guiones consecutivos y cubos que contienen guiones bajos. Los nombres de cubo de Google Cloud Storage pueden contener puntos y guiones consecutivos, pero un contenedor de Azure no. AzCopy reemplaza los puntos con guiones y los guiones consecutivos con un número que representa el número de guiones consecutivos (por ejemplo: un cubo denominado my----bucket
se convierte en my-4-bucket
). Si el nombre del cubo tiene un guion bajo (_
), AzCopy lo reemplaza por un guion. Por ejemplo, un cubo de nombre my_bucket
se convierte en my-bucket
.
Control de las diferencias en las reglas de nomenclatura de objetos
Google Cloud Storage tiene otro conjunto de convenciones de nomenclatura para los nombres de objeto, en comparación con los blobs de Azure. Aquí puede leer más al respecto.
Azure Storage no permite que los nombres de objeto (o cualquier segmento de la ruta de acceso del directorio virtual) terminen con puntos finales (por ejemplo, my-bucket...
). Los puntos finales se eliminan cuando se realiza la operación de copia.
Control de las diferencias en los metadatos de objetos
Google Cloud Storage y Azure permiten distintos conjuntos de caracteres en los nombres de las claves de objeto. Aquí puede leer sobre los metadatos en Google Cloud Storage. En Azure, las claves de objeto de blob se adhieren a las reglas de nomenclatura para los identificadores de C#.
Como parte de un comando copy
de AzCopy, puede proporcionar un valor opcional para la marca s2s-handle-invalid-metadata
que especifique cómo quiere controlar los archivos donde los metadatos del archivo contienen nombres de clave no compatibles. En la tabla siguiente se describe cada valor de marca.
Valor de marca | Descripción |
---|---|
ExcludeIfInvalid | (Opción predeterminada) Los metadatos no se incluyen en el objeto transferido. AzCopy registra una advertencia. |
FailIfInvalid | Los objetos no se copian. AzCopy registra un error y lo incluye en el recuento de errores que aparece en el resumen de la transferencia. |
RenameIfInvalid | AzCopy resuelve la clave de metadatos no válida y copia el objeto en Azure mediante el par clave-valor de metadatos resuelto. Para saber exactamente qué pasos realiza AzCopy para cambiar el nombre de las claves de objeto, vea la sección Cómo cambia AzCopy el nombre de las claves de objeto más adelante. Si AzCopy no puede cambiar el nombre de la clave, el objeto no se copiará. |
Cómo cambia AzCopy el nombre de las claves de objeto
AzCopy realiza estos pasos:
Reemplaza los caracteres no válidos con "_".
Agrega la cadena
rename_
al principio de una nueva clave válida.Esta clave se usará para guardar el valor de los metadatos originales.
Agrega la cadena
rename_key_
al principio de una nueva clave válida. Esta clave se usará para guardar la clave no válida de los metadatos originales. Puede usar esta clave para intentar recuperar los metadatos en Azure, ya que la clave de metadatos se conserva como un valor en el servicio Blob Storage.
Pasos siguientes
Encuentre más ejemplos en estos artículos:
- Ejemplos: Carga
- Ejemplos: descarga
- Ejemplos: Copia entre cuentas
- Ejemplos: Sincronización
- Ejemplos: Cubos de Amazon S3
- Ejemplos: Azure Files
- Tutorial: Migración de datos locales al almacenamiento en la nube mediante AzCopy
Consulte estos artículos para configurar opciones, optimizar el rendimiento y solucionar problemas: