Transferencia de datos utilizando Azcopy y Azure CLI
Una operación bastante común en la gestión de una cuenta de almacenamiento o Storage account en Azure es la copia de datos (se trate de un blob, fichero, etc) ya sea entre una cuenta y otra , o bien carga / descarga en local a Azure.
Estas operaciones pueden llevarse a cabo de diferentes maneras, pero aquí voy a centrarme en dos de ellas: AzCopy y Azure CLI. Decir que para los ejemplos sobre este último, se va a emplear el modo ARM, el cual se activa con:
1 |
azure config mode arm |
Hay que resaltar que AzCopy resulta mucho más versátil y potente que Azure CLI, lo cual es lógico ya que es una herramienta creada específicamente para este fin, con lo cual contempla más situaciones y cuenta con más parámetros, permitiendo así una configuración mas específica. No obstante, AzCopy solo está disponible para Windows, mientras que Azure CLI es multiplataforma.
Sintaxis básica
Tanto AzCopy como Azure CLI pueden llevar a cabo la copia de blobs y ficheros.
Así, para subir un fichero a un blob y descargar todos los archivos de un blob de un container en Azure CLI en local:
1 2 |
storage blob upload [opciones] [nombre_fichero] [nombre_container] [blob] storage blob download [opciones] [nombre_container] [blob] [ruta_local_destino] |
Las opciones disponibles se pueden consultar acudiendo a la ayuda de Azure CLI:
Por su parte, en AzCopy, para la descarga, se admiten más combinaciones más allá de la única descarga de un blob:
1 2 3 4 5 6 |
# Descarga de un blob AzCopy /Source:https://micuenta.blob.core.windows.net/micontainer /Dest:C:\miDirectorio /SourceKey:key /Pattern:"archivo.txt" # Descarga de todos los blobs AzCopy /Source:https://micuenta.blob.core.windows.net/micontainer /Dest:C:\miDirectorio /SourceKey:key /S # Descarga de todos los blobs que empiecen con la letra 'c' AzCopy /Source:https://micuenta.blob.core.windows.net/micontainer /Dest:C:\miDirectorio /SourceKey:key /Pattern:c /S |
Y para la carga de archivos:
1 2 3 4 5 6 |
# Cargando un único archivo AzCopy /Source:C:\miDirectorio /Dest:https://micuenta.blob.core.windows.net/micontainer /DestKey:key /Pattern:"archivo.txt" # Carga de todos los archivos del directorio en el blob AzCopy /Source:C:\miDirectorio /Dest:https://micuenta.blob.core.windows.net/micontainer /DestKey:key /S # Carga de todos los archivos que empiecen por 'c' AzCopy /Source:C:\miDirectorio /Dest:https://micuenta.blob.core.windows.net/micontainer /DestKey:key /Pattern:c* /S |
Respecto a la copia de blobs entre cuentas, en Azure CLI:
1 2 3 4 5 6 |
# Copia de blobs entre cuentas azure storage blob copy start [opciones] [Uri origen] [Container destino] # Detener la copia azure storage blob copy stop [opciones] [container] [blob] [id de copia] # Ver el estado de la copia azure storage blob copy show [opciones] [container] [blob] |
En AzCopy, esta misma operación puede realizarse de forma síncrona (se descarga una copia en local y esta se sube) o asíncrona (por defecto):
1 2 3 4 |
#Copia asíncrona AzCopy /Source:https://cuentaOrigen.blob.core.windows.net/mycontainer1 /Dest:https://cuentaDestino.blob.core.windows.net/micontainer2 /SourceKey:key1 /DestKey:key2 /Pattern:archivo.txt # Copia síncrona AzCopy /Source:https://myaccount1.blob.core.windows.net/myContainer/ /Dest:https://myaccount2.blob.core.windows.net/myContainer/ /SourceKey:key1 /DestKey:key2 /Pattern:ab /SyncCopy |
Llegados a este punto, a pesar de que Azure CLI también soporta la copia de archivos, al igual que AzCopy, sin embargo, este último también contempla además, otras características, por ejemplo, entre otras:
- Importación / exportación de tablas en formato CSV o JSON.
- Uso de un archivo de respuesta: en dicho archivo se permite especificar los parámetros al comando AzCopy, de modo que este los procesa como si hubieran indicado directamente:
1 |
AzCopy /@:"C:\archivoRespuesta.txt" |
- Carpeta de archivo de diario: esta interesante funcionalidad permite reanudar operaciones inconclusas si detecta la existencia de este archivo.
1 |
AzCopy /Source:C:\miCarpeta /Dest:https://micuenta.blob.core.windows.net/micontainer /DestKey:key /Z:C:\carpetaDiario\ |
- Posibilidad de especificar el número de operaciones simultáneas a iniciar: por defecto, solo se puede llevar a cabo una operación en un mismo equipo. Esto es así para optimizar el uso de los recursos. Para realizar más de una simultáneamente, se emplearía el parámetro ‘/NC’
Conclusiones
Como se dijo al principio, AzCopy es mucho más versátil y potente a la hora de realizar copias. No hay que olvidar que el alcance de Azure CLI es la gestión de los recursos. Aún así, es perfectamente válida para las operaciones de copia habituales debido a su sencillez.