Synchroniser avec Stockage Blob Azure à l’aide d’AzCopy

Vous pouvez synchroniser le stockage local avec Stockage Blob Azure à l’aide de l’utilitaire en ligne de commande AzCopy v10.

Vous pouvez synchroniser le contenu d’un système de fichiers local avec un conteneur d’objets blob. Vous pouvez également synchroniser des conteneurs et des répertoires virtuels les uns avec les autres. La synchronisation est unidirectionnelle. En d’autres termes, vous choisissez lequel de ces deux points de terminaison est la source et lequel est la destination. La synchronisation utilise également un serveur pour les API de serveur. Les exemples présentés dans cette section fonctionnent également avec les comptes qui ont un espace de noms hiérarchique.

Notes

La version actuelle de l’utilitaire AzCopy n’effectue pas de synchronisation entre d’autres sources et destinations (exemple : stockage de fichiers ou compartiments Amazon Web Services (AWS) S3).

Pour obtenir des exemples d’autres types de tâches, telles que le chargement de fichiers, le téléchargement d’objets blob ou la copie d’objets blob entre des comptes, consultez les liens présentés dans la section Étapes suivantes de cet article.

Bien démarrer

Consultez l’article Prise en main d’AzCopy pour télécharger AzCopy, et découvrez comment vous pouvez fournir des informations d’identification au service de stockage.

Remarque

Les exemples de cet article partent du principe que vous avez fourni des informations d’identification d’autorisation en utilisant Microsoft Entra ID.

Si vous préférez utiliser un jeton SAS pour autoriser l’accès aux données d’objets blob, vous pouvez ajouter ce jeton à l’URL de ressource dans chaque commande AzCopy. Par exemple : 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'.

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 empêcher les suppressions accidentelles, veillez à activer la fonctionnalité de suppression réversible avant d’utiliser l’indicateur --delete-destination=prompt|true.

Mettre à jour un conteneur avec les modifications apportées à un système de fichiers local

Dans ce cas, le conteneur est la destination, et le système de fichiers local est la source.

Conseil

Cet exemple englobe les arguments de chemin d’accès avec des guillemets simples (' '). Utilisez des guillemets simples dans tous les interpréteurs de commandes, à l’exception de l’interface de commande Windows (cmd. exe). Si vous utilisez une interface de commande Windows (cmd. exe), placez les arguments de chemin d’accès entre guillemets doubles (" ") au lieu de guillemets simples (' ').

Syntaxe

azcopy sync '<local-directory-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive

Exemple

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

Mettre à jour un système de fichiers local avec les modifications apportées à un conteneur

Dans ce cas, le système de fichiers local est la destination, et le conteneur est la source.

Conseil

Cet exemple englobe les arguments de chemin d’accès avec des guillemets simples (' '). Utilisez des guillemets simples dans tous les interpréteurs de commandes, à l’exception de l’interface de commande Windows (cmd. exe). Si vous utilisez une interface de commande Windows (cmd. exe), placez les arguments de chemin d’accès entre guillemets doubles (" ") au lieu de guillemets simples (' ').

Syntaxe

azcopy sync 'https://<storage-account-name>.blob.core.windows.net/<container-name>' 'C:\myDirectory' --recursive

Exemple

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

Mettre à jour un conteneur avec les modifications d’un autre conteneur

Le premier conteneur qui s’affiche dans cette commande est la source. Le deuxième est la destination.

Si vous fournissez des informations d’identification d’autorisation à l’aide de Microsoft Entra ID, vérifiez que vous avez configuré les rôles appropriés dans votre compte source et de destination. Consultez Option 1 : utiliser Microsoft Entra ID.

Conseil

Cet exemple englobe les arguments de chemin d’accès avec des guillemets simples (' '). Utilisez des guillemets simples dans tous les interpréteurs de commandes, à l’exception de l’interface de commande Windows (cmd. exe). Si vous utilisez une interface de commande Windows (cmd. exe), placez les arguments de chemin d’accès entre guillemets doubles (" ") au lieu de guillemets simples (' ').

Syntaxe

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

Exemple

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

Mettre à jour un répertoire avec les modifications apportées à un répertoire dans un autre conteneur

Le premier répertoire qui s’affiche dans cette commande est la source. Le deuxième est la destination.

Si vous fournissez des informations d’identification d’autorisation à l’aide de Microsoft Entra ID, vérifiez que vous avez configuré les rôles appropriés dans votre compte source et de destination. Consultez Option 1 : utiliser Microsoft Entra ID.

Conseil

Cet exemple englobe les arguments de chemin d’accès avec des guillemets simples (' '). Utilisez des guillemets simples dans tous les interpréteurs de commandes, à l’exception de l’interface de commande Windows (cmd. exe). Si vous utilisez une interface de commande Windows (cmd. exe), placez les arguments de chemin d’accès entre guillemets doubles (" ") au lieu de guillemets simples (' ').

Syntaxe

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

Exemple

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

Synchroniser avec des indicateurs facultatifs

Vous pouvez ajuster votre opération de synchronisation à l’aide d’indicateurs facultatifs. Voici quelques exemples.

Scénario Indicateur
Spécifier la manière dont les hachages MD5 doivent être validés lors du téléchargement --check-md5=[NoCheck|LogOnly|FailIfDifferent|FailIfDifferentOrMissing]
Exclure des fichiers en fonction d’un modèle --exclude-path
Spécifier le niveau de détail des entrées de journal liées à la synchronisation --log-level=[WARNING|ERROR|INFO|NONE]

Pour obtenir la liste complète des indicateurs, consultez Options.

Notes

Par défaut, l'indicateur --recursive est défini sur true. Les indicateurs --exclude-pattern et --include-pattern ne s’appliquent qu’à des noms de fichier et non à d’autres parties du chemin d’accès de fichier.

Étapes suivantes

Vous trouverez plus d’exemples dans ces articles :

Consultez les articles suivants pour configurer les paramètres, optimiser les performances et résoudre les problèmes :