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
entrue
, 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
enprompt
.Si tiene previsto establecer la marca
--delete-destination
enprompt
ofalse
, considere la posibilidad de usar el comando copy en lugar del comando sync y establezca el parámetro--overwrite
enifSourceNewer
. 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:
- Ejemplos: Carga
- Ejemplos: descarga
- Ejemplos: Copia entre cuentas
- Ejemplos: Cubos de Amazon S3
- Ejemplos: Google Cloud Storage
- 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: