azcopy sync

Replica la ubicación de origen en la ubicación de destino. En este artículo se proporciona una referencia detallada del comando azcopy sync. Para más información sobre la sincronización de blobs entre las ubicaciones de origen y destino, consulte Sincronización con Azure Blob Storage mediante AzCopy v10. Para Azure Files, consulte Sincronización de archivos.

Sinopsis

Las horas de última modificación se utilizan con fines de comparación. El archivo se omite si la hora de la última modificación del destino es más reciente. Como alternativa, puedes usar la marca --compare-hash para transferir solo los archivos que difieren en su hash MD5. Los pares admitidos son:

  • Local <-> blob de Azure o archivo de Azure (se puede emplear la autenticación con SAS u OAuth)
  • Azure Blob <->Azure Blob (se puede utilizar autenticación SAS u OAuth)
  • archivo de Azure <-> archivo de Azure (el origen debe incluir SAS o ser de acceso público; se debe usar la autenticación con SAS para el destino).
  • Blob de Azure <-> archivo de Azure

El comando sync difiere del comando copy de varias maneras:

  1. De manera predeterminada, la marca recursiva es true y sync copia todos los subdirectorios. Sync solo copia los archivos de nivel superior dentro de un directorio si la marca recursiva es false.
  2. Al sincronizar entre directorios virtuales, agregue una barra diagonal final a la ruta de acceso (consulte los ejemplos) si hay un blob con el mismo nombre que uno de los directorios virtuales.
  3. Si la marca "delete-destination" está establecida en true o prompt, sync eliminará los archivos y blobs del destino que no estén presentes en el origen.

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 Blob Storage, puede evitar eliminaciones accidentales si habilita la característica eliminación temporal antes de usar la marca --delete-destination=prompt|true.

Avanzado

Tenga en cuenta que si no especifica una extensión de archivo, AzCopy detecta automáticamente el tipo de contenido de los archivos cuando se cargan desde el disco local, basándose en la extensión del archivo o en el contenido.

La tabla de búsqueda integrada es pequeña pero, en Unix, los archivos mime.types del sistema local la pueden aumentar si están disponibles en una o varias de estas ubicaciones:

  • /etc/mime.types
  • /etc/apache2/mime.types
  • /etc/apache/mime.types

En Windows, los tipos MIME se extraen del registro.

De manera predeterminada, la sincronización funciona fuera de las últimas horas modificadas a menos que invalide ese comportamiento predeterminado mediante la marca --compare-hash. Por lo tanto, en el caso de Archivo de Azure <-> Archivo de Azure, el campo de encabezado Last-Modified se usa en lugar de x-ms-file-change-time, lo que significa que los cambios de metadatos en el origen también pueden desencadenar una copia completa.

azcopy sync [flags]

Ejemplos

Sincronización de un solo archivo:

azcopy sync "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]"

Igual que antes, pero también procesa un hash MD5 del contenido del archivo y lo guarda como la propiedad Content-MD5 del blob.

azcopy sync "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]" --put-md5

Sincronización de un directorio completo incluyendo los subdirectorios (tenga en cuenta que la recursividad está activada de forma predeterminada):

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" o azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --put-md5

Sincronización solo de los archivos de un directorio, pero no de los subdirectorios ni de los archivos de estos:

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --recursive=false

Sincronización de un subconjunto de archivos de un directorio (por ejemplo, solo los archivos jpg y pdf, o un archivo llamado "exactName"):

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --include-pattern="*.jpg;*.pdf;exactName"

Sincronización de un directorio completo, pero con la exclusión de ciertos archivos del ámbito (por ejemplo: todos los archivos que comienzan por "foo" o terminan por "bar"):

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --exclude-pattern="foo*;*bar"

Sincronización de un solo blob:

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/blob]"

Sincronización de un directorio virtual:

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --recursive=true

Sincronización de un directorio virtual que tenga el mismo nombre que un blob (agregue una barra diagonal final a la ruta de acceso para eliminar la ambigüedad):

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]/?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]/" --recursive=true

Sincronización de un directorio de Azure File (la misma sintaxis que en Blob):

azcopy sync "https://[account].file.core.windows.net/[share]/[path/to/dir]?[SAS]" "https://[account].file.core.windows.net/[share]/[path/to/dir]" --recursive=true

Nota: Si las marcas de inclusión y exclusión se usan juntas, solo se usarán los archivos que coinciden con los patrones de inclusión, pero se omitirán los que coinciden con los patrones de exclusión.

Opciones

--block-size-mb (float) Utilice este tamaño de bloque (especificado en MiB) al cargar en Azure Storage o descargar de este. El valor predeterminado se calcula automáticamente en función del tamaño del archivo. Se permiten fracciones decimales (por ejemplo: 0,25). Al cargar o descargar, el tamaño máximo de bloque permitido es de 0,75 * AZCOPY_BUFFER_GB. Para obtener más información, consulte Optimizar el uso de memoria.

--check-md5(string) Especifica cómo de estrictamente se deben validar los hashes MD5 al descargarse. Esta opción solo está disponible al descargar. Los valores disponibles son: NoCheck, LogOnly, FailIfDifferent, FailIfDifferentOrMissing. (el valor predeterminado es "FailIfDifferent") (el valor predeterminado es "FailIfDifferent")

--cpk-by-name (string) La clave proporcionada por el cliente por nombre permite a los clientes que realizan solicitudes en Azure Blob Storage una opción para proporcionar una clave de cifrado por solicitud. El nombre de clave proporcionado se capturará de Azure Key Vault y se usará para cifrar los datos

--cpk-by-value La clave proporcionada por el cliente por nombre permite a los clientes que realizan solicitudes en Azure Blob Storage una opción para proporcionar una clave de cifrado por solicitud. La clave proporcionada y su hash se capturarán de las variables de entorno

--delete-destination (string) Define si se eliminan los archivos adicionales del destino que no están presentes en el origen. Se puede establecer en true, false o prompt. Si se establece en prompt, se le formulará al usuario una pregunta antes de programar archivos y blobs para su eliminación. (el valor predeterminado es "false") (el valor predeterminado es "false")

--dry-run Imprime la ruta de los archivos que el comando sync copiará o quitará. Esta marca no copia o quita los archivos reales.

--exclude-attributes (string) (solo Windows) Excluye los archivos cuyos atributos coinciden con la lista de atributos. Por ejemplo: A;S;R

--exclude-path (string) Excluye estas rutas de acceso al comparar el origen con el destino. Esta opción no permite caracteres comodín (*). Comprueba los prefijos de ruta de acceso relativa (por ejemplo: myFolder;myFolder/subDirName/file.pdf).

--exclude-pattern (string) Excluye los archivos en los que el nombre coincide con la lista de patrones. Por ejemplo: .jpg; .pdf; exactName.

--exclude-regex (string) Excluye la ruta de acceso relativa de los archivos que coinciden con expresiones regulares. Separe las expresiones regulares con ";".

--force-if-read-only Al sobrescribir un archivo existente en Windows o Azure Files, fuerza la sobrescritura para que funcione incluso si el archivo existente tiene establecido el atributo de solo lectura.

--from-to (string) Opcionalmente, especifica la combinación de destino de origen. Por ejemplo: LocalBlob, BlobLocal, LocalFile, FileLocal, BlobFile, FileBlob, etc.

-h: --help ayuda para sync

--include-attributes (string) (solo Windows) Incluye solo los archivos cuyos atributos coinciden con la lista de atributos. Por ejemplo: A;S;R

--include-pattern (string) Incluye solo los archivos en los que el nombre coincide con la lista de patrones. Por ejemplo: .jpg; .pdf; exactName.

--include-regex (string) Incluye la ruta de acceso relativa de los archivos que coinciden con expresiones regulares. Separe las expresiones regulares con ";".

--log-level (string) Define el nivel de detalle del registro para el archivo de registro. Niveles disponibles: INFO (todas las solicitudes y respuestas), WARNING (respuestas lentas), ERROR (solo solicitudes con error) y NONE (sin registros de salida). (Valor predeterminado: "INFO"). (Valor predeterminado: "INFO").

--mirror-mode Deshabilita la comparación basada en la hora de última modificación, y sobrescribe los archivos y blobs en conflicto en el destino si esta marca está establecida en true. El valor predeterminado es false.

--put-blob-size-mb Use este tamaño (especificado en MiB) como umbral para determinar si se carga un blob como una única solicitud PUT al cargar en Azure Storage. El valor predeterminado se calcula automáticamente en función del tamaño del archivo. Se permiten fracciones decimales (por ejemplo: 0,25).

--preserve-permissions El valor predeterminado es false. Conserva las ACL entre recursos compatibles (Windows y Azure Files, o ADLS Gen 2 a ADLS Gen 2). Para las cuentas de espacios de nombres jerárquicos, necesitarás un SAS contenedor o un token OAuth con permisos de modificación de la propiedad y de modificación de los permisos. En el caso de las descargas, también necesitará la marca --backup para restaurar los permisos si el nuevo propietario no será el usuario que ejecuta AzCopy. Esta marca se aplica tanto a archivos como a carpetas, salvo que se especifique un filtro que solo permita archivos (por ejemplo, include-pattern).

--preserve-smb-info En el caso de las ubicaciones compatibles con SMB, la marca se establecerá en true de forma predeterminada. Conserva la información de la propiedad de SMB (hora de la última escritura, hora de creación, bits de atributo) entre los recursos compatibles con SMB (Azure Files). Esta marca se aplica tanto a archivos como a carpetas, salvo que se especifique un filtro que solo permita archivos (por ejemplo, include-pattern). La información transferida a las carpetas es la misma que la transferida a los archivos, excepto la hora de la última escritura, que no se conserva para las carpetas. (El valor predeterminado es true)

--put-md5 Crea un hash MD5 de cada archivo y lo guarda como la propiedad Content-MD5 del blob o archivo de destino. (De forma predeterminada, NO se crea el hash). Solo está disponible al cargar.

--recursive True de manera predeterminada, busca en los subdirectorios de forma recursiva al sincronizar entre directorios. (El valor predeterminado es true). (El valor predeterminado es true)

--s2s-preserve-access-tier Conserva el nivel de acceso durante la copia de servicio a servicio. Consulte Azure Blob Storage: niveles de acceso frecuente, esporádico y de archivo para asegurarse de que la cuenta de almacenamiento de destino admite la configuración del nivel de acceso. En los casos en los que no se admite el establecimiento del nivel de acceso, use s2sPreserveAccessTier=false para omitir la copia del nivel de acceso. (El valor predeterminado es true). (El valor predeterminado es true)

--s2s-preserve-blob-tags Conserva las etiquetas de índice durante la sincronización entre servicios de un almacenamiento de blobs a otro.

Opciones heredadas de comandos primarios

--cap-mbps (float) Limita la velocidad de transferencia, en megabits por segundo. El rendimiento en un momento dado puede variar ligeramente del límite. Si esta opción se establece en cero o se omite, el rendimiento no se limita.

Cadena --output-type Formato de la salida del comando. Las opciones incluyen: text, json. El valor predeterminado es "text". (Valor predeterminado: "text").

--trusted-microsoft-suffixes(cadena) Especifica otros sufijos de dominio a los que se pueden enviar los tokens de inicio de sesión de Microsoft Entra. El valor predeterminado es ".core.windows.net;.core.chinacloudapi.cn;.core.cloudapi.de;.core.usgovcloudapi.net;*.storage.azure.net". Los valores que se muestran aquí se agregan al valor predeterminado. Por seguridad, solo debe poner aquí dominios de Microsoft Azure. Separe las entradas con punto y coma.

Consulte también