Sincronización con Azure Blob Storage mediante AzCopy

Puede sincronizar el almacenamiento local con Azure Blob Storage mediante la utilidad de línea de comandos AzCopy v10.

Puede sincronizar el contenido de un sistema de archivos local con un contenedor de blobs. También puede sincronizar los contenedores y directorios virtuales entre sí. La sincronización es unidireccional. En otras palabras, tendrá que elegir cuál de estos dos puntos de conexión es el origen y cuál es el destino. La sincronización también usa las API de servidor a servidor. Los ejemplos que se presentan en esta sección también funcionan con las cuentas que tienen un espacio de nombres jerárquico.

Nota:

La versión actual de AzCopy no sincroniza entre otros orígenes y destinos (por ejemplo: Almacenamiento de archivos o cubos de Amazon Web Services (AWS) S3).

Para ver ejemplos de otros tipos de tareas, como cargar archivos, descargar blobs o copiar blobs entre cuentas, consulte los vínculos presentados en la sección Pasos siguientes de este artículo.

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 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>'.

Directrices

De manera predeterminada, el comando sync compara nombres de archivo y las marcas de tiempo de la última modificación. Puede invalidar ese comportamiento para usar hashes MD5 en lugar de marcas de tiempo modificadas por última vez mediante la marca --compare-hash. Establezca la marca opcional --delete-destination en un valor de true o prompt para eliminar archivos en el directorio de destino si esos archivos ya no existen en el directorio de origen.

  • Si establece la marca --delete-destination en true, AzCopy elimina los archivos sin proporcionar un aviso. Si quiere que aparezca un mensaje antes de que AzCopy elimine un archivo, establezca la marca --delete-destination en prompt.

  • Si tiene previsto establecer la marca --delete-destination en prompt o false, considere la posibilidad de usar el comando copy en lugar del comando sync y establezca el parámetro --overwrite en ifSourceNewer. El comando copy consume menos memoria y genera menos costos de facturación porque una operación de copia no tiene que indexar el origen o el destino antes de mover archivos.

  • Si no tiene previsto usar la marca --compare-hash, entonces la máquina en la que ejecute el comando de sincronización debe tener un reloj del sistema preciso porque las últimas horas modificadas son fundamentales para determinar si se debe transferir un archivo. Si el sistema tiene un sesgo de reloj importante, evite modificar los archivos en el destino demasiado cerca de la hora en que planea ejecutar un comando de sincronización.

  • AzCopy usa API de servidor a servidor para sincronizar datos entre cuentas de almacenamiento. Esto significa que los datos se copian directamente entre los servidores de almacenamiento. Sin embargo, AzCopy configura y supervisa cada transferencia y, para cuentas de almacenamiento más grandes (por ejemplo, cuentas que contienen millones de blobs), AzCopy podría necesitar una cantidad importante de recursos de proceso para realizar estas tareas. Por tanto, si ejecuta AzCopy desde una máquina virtual (VM), asegúrese de que la máquina virtual tiene suficientes núcleos y memoria para controlar la carga.

  • Para evitar eliminaciones accidentales, asegúrese de habilitar la característica de eliminación temporal antes de usar la marca --delete-destination=prompt|true.

Actualización de un contenedor con los cambios realizados en un sistema de archivos local

En este caso, el contenedor es el destino y el sistema de archivos local es el origen.

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 sync '<local-directory-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive

Ejemplo

azcopy sync 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive

Actualización de un sistema de archivos local con los cambios realizados en un contenedor

En este caso, el sistema de archivos local es el destino y el contenedor es el origen.

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 sync 'https://<storage-account-name>.blob.core.windows.net/<container-name>' 'C:\myDirectory' --recursive

Ejemplo

azcopy sync 'https://mystorageaccount.blob.core.windows.net/mycontainer' 'C:\myDirectory' --recursive

Actualización de un contenedor con cambios en otro contenedor

El primer contenedor que aparece en este comando es el contenedor origen. El segundo es el destino.

Si proporciona credenciales de autorización mediante Microsoft Entra ID, asegúrese de que ha configurado los roles adecuados en la cuenta de origen y destino. Consulte Opción 1: Uso de Microsoft Entra ID.

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 sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>' --recursive

Ejemplo

azcopy sync 'https://mysourceaccount.blob.core.windows.net/mycontainer?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

Actualización de un directorio con cambios en un directorio de otro contenedor

El primer directorio que aparece en este comando es el origen. El segundo es el destino.

Si proporciona credenciales de autorización mediante Microsoft Entra ID, asegúrese de que ha configurado los roles adecuados en la cuenta de origen y destino. Consulte Opción 1: Uso de Microsoft Entra ID.

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 sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive

Ejemplo

azcopy sync 'https://mysourceaccount.blob.core.windows.net/<container-name>/myDirectory?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myDirectory' --recursive

Sincronización con marcas opcionales

Puede modificar las operaciones de sincronización mediante marcas opcionales. Estos son algunos ejemplos.

Escenario Marca
Especificar cómo de estrictamente se deben validar los hashes MD5 al descargarse. --check-md5=[NoCheck|LogOnly|FailIfDifferent|FailIfDifferentOrMissing]
Excluir archivos en función de un patrón. --exclude-path
Especifique el grado de detalles que quiere que sean las entradas de registro relacionadas con la sincronización. --log-level=[WARNING|ERROR|INFO|NONE]

Para obtener una lista completa de marcas, vea las opciones.

Nota:

La marca --recursive se establece en true de manera predeterminada. Las marcas --exclude-pattern y --include-pattern solo afectan a los nombres de archivo y no a otros elementos de la ruta de acceso del archivo.

Pasos siguientes

Encuentre más ejemplos en estos artículos:

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