azcopy sync

Réplique l’emplacement source vers l’emplacement de destination. Cet article fournit des références détaillées sur la commande azcopy sync. Pour en savoir plus sur la synchronisation des objets Blob entre les emplacements source et de destination, consultez Synchroniser avec Stockage Blob Azure à l’aide d’AzCopy v10. Pour Azure Files, consultez Synchroniser des fichiers.

Synopsis

Les heures de dernière modification sont utilisées à des fins de comparaison. Le fichier est ignoré si l’heure de dernière modification de l’emplacement de destination est plus récente. Vous pouvez également utiliser l’indicateur --compare-hash pour transférer uniquement les fichiers qui diffèrent dans leur hachage MD5. Les paires prises en charge sont les suivantes :

  • Local <-> Objet blob Azure /Fichier Azure (l’authentification SAP ou OAuth peut être utilisée)
  • Azure Blob <–> Azure Blob (l'authentification SAS ou OAuth peut être utilisée)
  • Fichier Azure <-> fichier Azure (la source doit inclure une signature d’accès partagé (SAP) ou est accessible au public ; l’authentification SAP doit être utilisée pour la destination)
  • Blob Azure <-> Fichier Azure

Il existe plusieurs différences entre la commande sync et la commande copy :

  1. Par défaut, l’indicateur récursif possède la valeur true et la synchronisation copie tous les sous-répertoires. La synchronisation copie uniquement les fichiers de niveau supérieur à l’intérieur d’un répertoire si l’indicateur récursif possède la valeur false.
  2. Lors de la synchronisation entre répertoires virtuels, ajoutez une barre oblique finale au chemin d’accès (voir exemples) s’il existe un objet blob portant le même nom que l’un des répertoires virtuels.
  3. Si l’indicateur « delete-destination » est défini sur true ou prompt, la synchronisation supprime les fichiers et objets blob au niveau de la destination qui ne sont pas présents au niveau de la source.

Consignes

Par défaut, la commande sync compare les noms de fichiers et les horodatages de la dernière modification. Vous pouvez remplacer ce comportement pour utiliser des hachages MD5 au lieu des derniers horodatages modifiés à l’aide de l’indicateur --compare-hash. Définissez l’indicateur facultatif --delete-destination sur la valeur true ou prompt pour supprimer des fichiers dans le répertoire de destination si ces fichiers n’existent plus dans le répertoire source.

  • Si vous affectez la valeur true à l’indicateur --delete-destination, AzCopy supprime les fichiers sans invite. Si vous souhaitez qu’une invite s’affiche avant que l’utilitaire AzCopy ne supprime un fichier, définissez l’indicateur --delete-destination sur prompt.

  • Si vous envisagez de définir l'indicateur --delete-destination sur prompt ou false, pensez à utiliser la commande copy au lieu de la commande sync et à définir le paramètre --overwrite sur ifSourceNewer. La commande copy consomme moins de mémoire et génère des coûts de facturation inférieurs, car une opération de copie ne doit pas indexer la source ou la destination avant de déplacer des fichiers.

  • Si vous n’envisagez pas d’utiliser l’indicateur --compare-hash, l’ordinateur sur lequel vous exécutez la commande de synchronisation doit avoir une horloge système précise, car les heures de la dernière modification sont essentielles pour déterminer si un fichier doit être transféré. Si votre système connaît des décalages d’horloge significatifs, évitez de modifier les fichiers de la destination à un moment trop proche de celui où vous envisagez d’exécuter une commande de synchronisation.

  • AzCopy utilise des API serveur à serveur pour synchroniser les données entre les comptes de stockage. Cela signifie que les données sont copiées directement entre les serveurs de stockage. Toutefois, AzCopy configure et surveille chaque transfert. De plus, pour les comptes de stockage plus volumineux (par exemple, les comptes qui contiennent des millions d’objets blob), AzCopy peut nécessiter une quantité importante de ressources de calcul pour accomplir ces tâches. Par conséquent, si vous exécutez AzCopy à partir d’une machine virtuelle, assurez-vous que la machine virtuelle dispose de suffisamment de cœurs/mémoire pour gérer la charge.

  • Pour le stockage Blob, vous pouvez empêcher les suppressions accidentelles en veillant à activer la fonctionnalité de suppression réversible avant d’utiliser l’indicateur --delete-destination=prompt|true.

Avancé

Notez que si vous n’indiquez pas d’extension de fichier, AzCopy détecte automatiquement le type de contenu des fichiers lorsque vous les chargez à partir du disque local, en se basant sur l’extension du fichier ou sur son contenu.

La table de recherche intégrée contient peu de données. Toutefois, sur UNIX, elle est enrichie par le ou les fichiers mime.types du système local (si disponibles), qui peuvent porter les noms suivants :

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

Sur Windows, les types MIME sont extraits du Registre.

Par défaut, la synchronisation fonctionne hors des dernières heures modifiées, sauf si vous remplacez ce comportement par défaut à l’aide de l’indicateur --compare-hash. Par conséquent, dans le cas d’Azure File <-> Azure File, le champ d’en-tête Last-Modified est utilisé au lieu de x-ms-file-change-time, ce qui signifie que les modifications de métadonnées au niveau de la source peuvent également déclencher une copie complète.

azcopy sync [flags]

Exemples

Synchroniser un fichier :

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

Comme ci-dessus, mais calcule également le hachage MD5 du contenu du fichier et l’enregistre en tant que propriété Content-MD5 de l’objet blob.

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

Synchroniser l’intégralité d’un répertoire, y compris ses sous-répertoires (notez que la récursivité est activée par défaut) :

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

Synchronisez uniquement les fichiers à l’intérieur d’un répertoire, mais pas les sous-répertoires ou les fichiers à l’intérieur des sous-répertoires :

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

Synchroniser un sous-ensemble de fichiers dans un répertoire (par exemple, uniquement les fichiers .jpg et PDF, ou uniquement les fichiers dont le nom est « exactName ») :

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

Synchroniser l’intégralité d’un répertoire, mais exclure certains fichiers (par exemple, tous ceux dont le nom commence par « foo » ou se termine par « bar ») :

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

Synchronisez un objet blob :

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

Synchroniser un répertoire virtuel :

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

Synchronisez un répertoire virtuel portant le même nom qu’un objet blob (ajoutez une barre oblique finale au chemin d’accès pour lever l’ambiguïté) :

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

Synchronisez un répertoire Azure File (même syntaxe que l’objet 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

Remarque : Si les indicateurs include et exclude sont utilisés ensemble, seuls les fichiers correspondant aux modèles d’inclusion sont utilisés. Ceux qui correspondent aux modèles d’exclusion seront ignorés.

Options

--block-size-mb (float) Utilisez cette taille de bloc (spécifiée en Mio) lors du chargement dans le Stockage Azure ou du téléchargement à partir du Stockage Azure. La valeur par défaut est calculée automatiquement en fonction de la taille du fichier. Les fractions décimales sont autorisées (par exemple : 0,25). Lors du chargement ou du téléchargement, la taille de bloc maximale autorisée est de 0,75 * AZCOPY_BUFFER_GB. Pour en savoir plus, consultez Optimiser l’utilisation de la mémoire.

--check-md5 (string) Spécifie la manière dont les hachages MD5 doivent être validés lors du téléchargement. Disponible uniquement lors du téléchargement. Valeurs disponibles : NoCheck, LogOnly, FailIfDifferent, FailIfDifferentOrMissing. (par défaut « FailIfDifferent ») (par défaut « FailIfDifferent »)

--cpk-by-name (string) La clé fournie par le client par nom permet aux clients qui effectuent des requêtes auprès du Stockage Blob Azure de fournir une clé de chiffrement à chaque requête. Le nom de la clé fournie sera récupéré dans Azure Key Vault et sera utilisé pour chiffrer les données.

--cpk-by-value La clé fournie par le client par nom permet aux clients qui effectuent des requêtes auprès du Stockage Blob Azure de fournir une clé de chiffrement à chaque requête. La clé fournie et son code de hachage sont récupérés à partir des variables d’environnement.

--delete-destination (string) Détermine si les fichiers de l’emplacement de destination qui ne sont pas présents dans l’emplacement source doivent être supprimés. Valeurs possibles : true, false ou prompt. Si la valeur est définie sur prompt, l’utilisateur est invité à répondre à une question avant de planifier la suppression des fichiers et des objets blob. (par défaut : « false ») (par défaut : « false »)

--dry-run Imprime le chemin des fichiers qui seraient copiés ou supprimés par la commande de synchronisation. Cet indicateur ne copie ni ne supprime les fichiers réels.

--exclude-attributes (string) (Windows uniquement) Exclut les fichiers dont les attributs correspondent à la liste d’attributs. Par exemple : A;S;R

--exclude-path (string) Exclut ces chemins lorsque la source est comparée à la destination. Cette option ne prend pas en charge les caractères génériques (*). Vérifie le préfixe de chemin relatif (Par exemple : myFolder;myFolder/subDirName/file.pdf.)

--exclude-pattern (string) Exclut les fichiers dont le nom correspond à la liste des modèles. Par exemple : .jpg; .pdf;exactName

--exclude-regex (string) Exclut le chemin relatif des fichiers qui correspondent aux expressions régulières. Séparez les expressions régulières par des points-virgules (;).

--force-if-read-only : forcez le remplacement d’un fichier existant sur Windows ou Azure Files à fonctionner même si l’attribut read-only est défini sur ce fichier.

--from-to (string) Spécifie éventuellement la combinaison destination-source. Par exemple : LocalBlob, BlobLocal, LocalFile, FileLocal, BlobFile, FileBlob, etc.

-h, --help Aide pour la commande sync

--include-attributes (string) (Windows uniquement) Inclut uniquement les fichiers dont les attributs correspondent à la liste d’attributs. Par exemple : A;S;R

--include-pattern (string) Inclut uniquement les fichiers dont le nom correspond à la liste des modèles. Par exemple : .jpg; .pdf;exactName

--include-regex (string) Inclut le chemin relatif des fichiers qui correspondent aux expressions régulières. Séparez les expressions régulières par des points-virgules (;).

--log-level (string) Définit la verbosité pour le fichier journal. Niveaux disponibles : INFO (toutes les requêtes et réponses), WARNING (réponses lentes), ERROR (uniquement les requêtes ayant échoué) et NONE (aucun journal de sortie). (par défaut : INFO) (par défaut : « INFO »)

--mirror-mode Désactive la comparaison basée sur la dernière modification, et remplace les fichiers et objets blob en conflit au niveau de la destination si cet indicateur a la valeur true. La valeur par défaut est false

--put-blob-size-mbUtilisez cette taille (spécifiée en MiB) comme seuil pour déterminer s’il faut charger un objet blob en tant que requête PUT unique lors du chargement sur Stockage Azure. La valeur par défaut est calculée automatiquement en fonction de la taille du fichier. Les fractions décimales sont autorisées (par exemple : 0,25).

--preserve-permissions False par défaut. Conserve les listes de contrôle d’accès entre les ressources sensibilisées (Windows et Azure Files, ou d’ADLS Gen 2 vers ADLS Gen 2). Pour les comptes d’espace de noms hiérarchique, vous avez besoin d’un jeton SAP ou d’un jeton OAuth de conteneur avec les autorisations Modifier la propriété et Modifier les autorisations. Pour les téléchargements, vous devez également utiliser l’indicateur --backup pour restaurer les autorisations où le nouveau propriétaire n’est pas l’utilisateur qui exécute AzCopy. Cet indicateur s’applique aux fichiers et aux dossiers, à moins qu’un filtre de fichier uniquement soit spécifié (par exemple, include-pattern).

--preserve-smb-info Pour les emplacements prenant en charge SMB, l’indicateur est défini sur true par défaut. Conserve les informations de la propriété SMB (heure de la dernière écriture, heure de création, bits d’attribut) entre les ressources prenant en charge SMB (Azure Files). Cet indicateur s’applique aux fichiers et aux dossiers, à moins qu’un filtre de fichier uniquement soit spécifié (par exemple, include-pattern). Les informations transférées pour les dossiers sont les mêmes que pour les fichiers, à l’exception de l’heure de la dernière écriture, qui n’est pas conservée pour les dossiers. (par défaut : true)

--put-md5 Créer un hachage MD5 de chaque fichier, puis enregistrer le hachage en tant que propriété Content-MD5 de l’objet blob ou du fichier de destination. (par défaut, le hachage n’est pas créé.) Disponible uniquement lors du chargement.

--recursive True par défaut. Examiner les sous-répertoires de manière récursive lors de la synchronisation des répertoires. (par défaut : true) (par défaut : true)

--s2s-preserve-access-tier Conserver le niveau d’accès lors d’une copie de service à service. Pour vérifier si le compte de stockage de destination prend en charge la définition du niveau d’accès, consultez Stockage Blob Azure : niveaux d’accès chaud, froid et archive. Si la définition du niveau d’accès n’est pas prise en charge, utilisez s2sPreserveAccessTier=false pour contourner la copie du niveau d’accès. (par défaut : true) (par défaut : true)

--s2s-preserve-blob-tags Conserver les balises d’index pendant la synchronisation de service à service d’un stockage d’objets blob à un autre

Options héritées des commandes parentes

--cap-mbps (flottant) Limite la vitesse de transfert, en mégabits par seconde. Par moment, le débit peut dépasser légèrement cette limite. Si cette option est définie sur zéro ou si elle est omise, le débit n’est pas limité.

--output-type (string) Met en forme la sortie de la commande. Les formats possibles sont « text » et « JSON ». La valeur par défaut est « text ». (par défaut : « text »).

--trusted-microsoft-suffixes (chaîne) Spécifie d'autres suffixes de domaine où les jetons de connexion Microsoft Entra peuvent être envoyés. La valeur par défaut est « .core.windows.net;.core.chinacloudapi.cn;.core.cloudapi.de;.core.usgovcloudapi.net ». Tous les éléments répertoriés ici sont ajoutés à la valeur par défaut. Pour la sécurité, vous devez placer uniquement des domaines Microsoft Azure ici. Séparez plusieurs entrées par des points-virgules.

Voir aussi