Copia de blobs entre cuentas de almacenamiento de Azure mediante AzCopy

Puede copiar blobs, directorios y contenedores entre cuentas de almacenamiento mediante la utilidad de línea de comandos AzCopy v10.

Para ver ejemplos de otros tipos de tareas, como la carga de archivos, la descarga de blobs y la sincronización con Blob Storage, consulte los vínculos presentados en la sección Pasos siguientes de este artículo.

AzCopy usa interfaces APIde servidor a servidor, por lo que los datos se copian directamente entre servidores de almacenamiento.

Introducción

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 sentado que ya ha proporcionado credenciales de autorización mediante Microsoft Entra ID y que la identidad de Microsoft Entra tiene las asignaciones de roles adecuadas tanto en la cuenta de origen como en la de destino.

Como alternativa a este proceso, puede anexar un token de SAS a la URL de origen o a la de destino en cada comando AzCopy. Por ejemplo: azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>'.

Directrices

Aplique las siguientes directrices a los comandos AzCopy.

  • Si usa la autorización de Microsoft Entra para el origen y el destino, ambas cuentas deben pertenecer al mismo inquilino de Microsoft Entra.

  • El cliente debe tener acceso a redes tanto en las cuentas de almacenamiento de origen y de destino. Para aprender a configurar la red de cada cuenta de almacenamiento, consulte Configuración de redes virtuales y firewalls de Azure Storage.

  • Si realiza la copia en una cuenta de almacenamiento de blobs en bloques premium, omita el nivel de acceso de un blob de la operación de copia estableciendo s2s-preserve-access-tier en false (por ejemplo: --s2s-preserve-access-tier=false). Las cuentas de almacenamiento de blobs en bloques Premium no admiten niveles de acceso.

  • Para aumentar el rendimiento de las operaciones, puede establecer el valor de la variable de entorno AZCOPY_CONCURRENCY_VALUE. Para más información, consulte Aumento de la simultaneidad.

  • Si los blobs de origen tienen etiquetas de índice y quiere conservar esas etiquetas, tendrá que volver a aplicarlas a los blobs de destino. Para información sobre cómo establecer etiquetas de índice, consulte la sección Copia de blobs en otra cuenta de almacenamiento con etiquetas de índice de este artículo.

Copia de un blob

Copie un blob en otra cuenta de almacenamiento mediante el comando azcopy copy.

Sugerencia

En este ejemplo los argumentos de ruta de acceso se encierran entre 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 ('').

Sintaxis

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>'

Los

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myTextFile.txt'

Ejemplo (puntos de conexión de Data Lake Storage)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer/myTextFile.txt'

La operación de copia es sincrónica, por lo que cuando el comando devuelve un resultado, eso indica que se han copiado todos los archivos.

Copia de un directorio

Copie un directorio en otra cuenta de almacenamiento mediante el comando azcopy copy.

Sugerencia

En este ejemplo los argumentos de ruta de acceso se encierran entre 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 ('').

Sintaxis

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<directory-path>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

Los

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

Ejemplo (puntos de conexión de Data Lake Storage)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

La operación de copia es sincrónica. Todos los archivos se han copiado cuando vuelve el comando.

Copia de un contenedor

Copie un contenedor en otra cuenta de almacenamiento mediante el comando azcopy copy.

Sugerencia

En este ejemplo los argumentos de ruta de acceso se encierran entre 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 ('').

Sintaxis

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

Los

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

Ejemplo (puntos de conexión de Data Lake Storage)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

La operación de copia es sincrónica. Todos los archivos se han copiado cuando vuelve el comando.

Copia de contenedores, directorios y blobs

Copie todos los contenedores, directorios y blobs en otra cuenta de almacenamiento mediante el comando azcopy copy.

Sugerencia

En este ejemplo los argumentos de ruta de acceso se encierran entre 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 ('').

Sintaxis

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/' --recursive

Los

azcopy copy 'https://mysourceaccount.blob.core.windows.net/' 'https://mydestinationaccount.blob.core.windows.net' --recursive

Ejemplo (puntos de conexión de Data Lake Storage)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/' 'https://mydestinationaccount.dfs.core.windows.net' --recursive

La operación de copia es sincrónica, por lo que cuando el comando devuelve un resultado, eso indica que se han copiado todos los archivos.

Copia de blobs e incorporación de etiquetas de índice

Copie blobs en otra cuenta de almacenamiento y agregue etiquetas de índice de blob al blob de destino.

Si usa la autorización de Microsoft Entra, se debe asignar a la entidad de seguridad el rol Propietario de datos de Storage Blob o se le debe conceder permiso para la Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/writeoperación del proveedor de recursos de Azure a través de un rol personalizado de Azure. Si usa un token de firma de acceso compartido (SAS), ese token debe proporcionar acceso a las etiquetas del blob mediante el permiso t de SAS.

Para agregar etiquetas, use la opción --blob-tags junto con un par clave-valor codificado como dirección URL.

Por ejemplo, para agregar la clave my tag y un valor my tag value, agregaría --blob-tags='my%20tag=my%20tag%20value' al parámetro de destino.

Separe varias etiquetas de índice mediante el carácter de Y comercial (&). Por ejemplo, si quiere agregar una clave my second tag y un valor my second tag value, la cadena de opción completa sería --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'.

En el siguiente ejemplo, se muestra cómo usar la opción --blob-tags.

Sugerencia

En estos ejemplos se delimitan los argumentos de ruta de acceso con comillas (''). 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 ('').

Ejemplo de blob


azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myTextFile.txt' --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Ejemplo de directorio

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Ejemplo de contenedor

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Ejemplo de cuenta

azcopy copy 'https://mysourceaccount.blob.core.windows.net/' 'https://mydestinationaccount.blob.core.windows.net' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

La operación de copia es sincrónica. Todos los archivos se han copiado cuando vuelve el comando.

Nota:

Si especifica un directorio, un contenedor o una cuenta como origen, todos los blobs que se copian en el destino tendrán las mismas etiquetas que especifique en el comando.

Copia con marcas opcionales

Puede modificar las operaciones de copia mediante marcas opcionales. Estos son algunos ejemplos.

Escenario Marca
Copie blobs como blobs en bloques, en páginas o en anexos. --blob-type=[BlockBlob|PageBlob|AppendBlob]
Copiar en un nivel de acceso específico (como el nivel de archivo). --block-blob-tier=[None|Hot|Cool|Archive]
Descomprimir archivos automáticamente. --decompress=[gzip|deflate]

Para obtener una lista completa, vea las opciones.

Pasos siguientes

Encuentre más ejemplos en estos artículos:

Consulte estos artículos para configurar opciones, optimizar el rendimiento y solucionar problemas: