Copier les données de Google Cloud Storage vers Stockage Azure à l’aide d’AzCopy

AzCopy est un utilitaire de ligne de commande que vous pouvez utiliser pour copier des blobs ou des fichiers vers ou depuis un compte de stockage. Cet article vous aide à copier des objets, des répertoires et des compartiments de Google Cloud Storage vers Stockage Blob Azure avec AzCopy.

Choisissez comment vous allez fournir des informations d’identification d’autorisation.

  • Pour effectuer une autorisation avec Stockage Azure, utilisez Microsoft Entra ID ou un jeton SAS (signature d’accès partagé).

  • Pour autoriser l’utilisation de Google Cloud Storage, utilisez une clé de compte de service.

Autoriser avec Stockage Azure

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>'.

Autoriser avec Google Cloud Storage

Pour autoriser l’utilisation de Google Cloud Storage, vous utilisez une clé de compte de service. Pour plus d’informations sur la création d’une clé de compte de service, consultez Création et gestion des clés de compte de service.

Une fois que vous avez obtenu une clé de service, définissez la variable d’environnement GOOGLE_APPLICATION_CREDENTIALS sur le chemin d’accès absolu au fichier de clé du compte de service :

Système d’exploitation Commande
Windows set GOOGLE_APPLICATION_CREDENTIALS=<path-to-service-account-key>
Linux export GOOGLE_APPLICATION_CREDENTIALS=<path-to-service-account-key>
macOS export GOOGLE_APPLICATION_CREDENTIALS=<path-to-service-account-key>

Copier des objets, des répertoires et des compartiments

AzCopy utilise l’API Placer un bloc à partir d’une URL pour copier les données directement d’un serveur Google Cloud Storage à un serveur de stockage. Ces opérations de copie n’utilisent pas la bande passante réseau de votre ordinateur.

Conseil

Dans les exemples de cette section, les arguments de chemin d’accès sont entre 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 (' ').

Ces exemples fonctionnent également avec les comptes qui ont un espace de noms hiérarchique. L’accès multiprotocole sur Data Lake Storage vous permet d’utiliser la même syntaxe d’URL (blob.core.windows.net) sur ces comptes.

Copier un objet

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.

Syntaxe

azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'

Exemple

azcopy copy 'https://storage.cloud.google.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'

Copier un répertoire

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.

Syntaxe

azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<directory-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true

Exemple

azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Notes

Cet exemple ajoute l’indicateur --recursive pour copier des fichiers dans tous les sous-répertoires.

Copier le contenu d’un répertoire

Vous pouvez copier le contenu d’un répertoire sans copier le répertoire proprement dit en utilisant le caractère générique (*).

Syntaxe

azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<directory-name>/*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true

Exemple

azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Copier un compartiment de Cloud Storage

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.

Syntaxe

azcopy copy 'https://storage.cloud.google.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

Exemple

azcopy copy 'https://storage.cloud.google.com/mybucket' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

Copier tous les compartiments dans un projet Google Cloud

Tout d’abord, définissez GOOGLE_CLOUD_PROJECT sur l’ID de projet Google Cloud.

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.

Syntaxe

azcopy copy 'https://storage.cloud.google.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

Exemple

azcopy copy 'https://storage.cloud.google.com/' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

Copier un sous-ensemble de compartiments dans un projet Google Cloud

Tout d’abord, définissez GOOGLE_CLOUD_PROJECT sur l’ID de projet Google Cloud.

Copier un sous-ensemble de compartiments en utilisant un caractère générique (*) dans le nom du compartiment. Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.

Syntaxe

azcopy copy 'https://storage.cloud.google.com/<bucket*name>' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

Exemple

azcopy copy 'https://storage.cloud.google.com/my*bucket' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

Gérer les différences dans les règles d’attributions de noms aux compartiments

Google Cloud Storage possède un ensemble de conventions d’attribution de noms aux compartiments différent des conteneurs d’objets blob Azure. Vous pouvez les découvrir ici. Si vous choisissez de copier un groupe de compartiments dans un compte de stockage Azure, l’opération de copie peut échouer en raison des différences en matière d’attributions de noms.

AzCopy gère trois des problèmes les plus courants qui peuvent survenir : les compartiments contenant des points, les compartiments contenant des tirets consécutifs et les compartiments contenant des traits de soulignement. Les noms de compartiment Google Cloud Storage peuvent contenir des points et des traits d’union consécutifs, ce qui n’est pas le cas d’un conteneur dans Azure. AzCopy remplace les points par des traits d’union et les traits d’union consécutifs par un nombre qui représente le nombre de traits d’union consécutifs (par exemple, un compartiment nommé my----bucket devient my-4-bucket. Si le nom du compartiment comporte un trait de soulignement (_), alors AzCopy remplace ce trait de soulignement par un trait d’union. Par exemple, un compartiment nommé my_bucket devient my-bucket.

Gérer les différences dans les règles d’attributions de noms aux objets

Google Cloud Storage possède un ensemble de conventions d’attribution de noms aux objets différent des objets blob Azure. Vous pouvez les découvrir ici.

Le stockage Azure n’autorise pas les noms d’objets (ou tout segment dans le chemin d’accès du répertoire virtuel) à se terminer par des points (par exemple my-bucket...). Les points de fin sont supprimés lorsque l’opération de copie est effectuée.

Gérer les différences dans les métadonnées d’objets

Google Cloud Storage et Azure autorisent différents jeux de caractères dans les noms des clés d’objet. Vous pouvez en apprendre plus sur les métadonnées dans Google Cloud Storage ici. Du côté d’Azure, les clés d’objets blob respectent les règles d’attribution de noms pour les identificateurs C#.

Dans le cadre d’une commande copy AzCopy, vous pouvez fournir une valeur pour l’indicateur s2s-handle-invalid-metadata facultatif qui spécifie comment vous voulez gérer les métadonnées du fichier qui contient les noms de clés incompatibles. La table suivante décrit chaque valeur d’indicateur.

Valeur d’indicateur Description
ExcludeIfInvalid (Option par défaut) Les métadonnées ne sont pas incluses dans l’objet transféré. AzCopy enregistre un avertissement.
FailIfInvalid Les objets ne sont pas copiés. AzCopy enregistre une erreur et l’inclut dans le nombre d’échecs qui apparaît dans le résumé de transfert.
RenameIfInvalid AzCopy résout la clé de métadonnées non valides et copie l’objet dans Azure à l’aide de la paire valeur/clé des métadonnées résolues. Pour connaître précisément les étapes suivies par AzCopy pour renommer les clés d’objet, consultez la section Comment AzCopy renomme les clés d’objet ci-dessous. Si AzCopy n’est pas en mesure de renommer la clé, l’objet n’est pas copié.

Comment AzCopy renomme les clés d’objet

AzCopy suit cette procédure :

  1. Remplace les caractères non valides par « _ ».

  2. Ajoute la chaîne rename_ au début d’une nouvelle clé valide.

    Cette clé doit être utilisée pour enregistrer la valeur d’origine des métadonnées.

  3. Ajoute la chaîne rename_key_ au début d’une nouvelle clé valide. Cette clé doit être utilisée pour enregistrer la clé invalide d’origine des métadonnées. Vous pouvez utiliser cette clé pour essayer de récupérer les métadonnées dans Azure, puisque la clé des métadonnées est conservée comme valeur dans le service de stockage d’objets blob.

É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 :