Partager via


Copier des 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 à l’aide d’AzCopy.

Choisissez la façon dont vous fournirez des informations d’identification d’autorisation

  • Pour autoriser avec stockage Azure, utilisez l’ID Microsoft Entra ou un jeton SAS (Shared Access Signature).

  • Pour autoriser avec 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.

Note

Les exemples de cet article supposent que vous fournissez des informations d’identification d’autorisation à l’aide de l’ID Microsoft Entra.

Si vous préférez utiliser un jeton SAP pour autoriser l’accès aux données d’objet blob, vous pouvez ajouter ce jeton à l’URL de la 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 avec Google Cloud Storage, 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.

Après avoir obtenu une clé de service, définissez la GOOGLE_APPLICATION_CREDENTIALS variable d’environnement sur le chemin absolu du fichier de clé de compte de service :

Système d’exploitation Command
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 Put Block From URL . Les données sont donc copiées directement entre google Cloud Storage et les serveurs de stockage. Ces opérations de copie n’utilisent pas la bande passante réseau de votre ordinateur.

Conseil / Astuce

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 des comptes qui ont un espace de noms hiérarchique. L’accès à plusieurs protocoles 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

Note

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 contenant lui-même à l’aide du symbole 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 stockage 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/<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 l’ID GOOGLE_CLOUD_PROJECT de projet de votre 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 l’ID GOOGLE_CLOUD_PROJECT de projet de votre projet Google Cloud.

Copiez un sous-ensemble de compartiments à l’aide d’un symbole 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 de nommage des buckets

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 en savoir plus ici. Si vous choisissez de copier un groupe de conteneurs dans un compte de stockage Azure, l’opération de copie peut échouer en raison des différences de noms.

AzCopy gère trois des problèmes les plus courants qui peuvent se présenter : les compartiments contenant des points, les compartiments contenant des tirets consécutifs et les compartiments contenant des traits de soulignement. Les noms de compartiments Google Cloud Storage peuvent contenir des points et des traits d’union consécutifs, mais un conteneur dans Azure ne peut pas. AzCopy remplace les points par des traits d’union et des 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 a un trait de soulignement (_), AzCopy remplace le 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’affectation de noms d’objets

Google Cloud Storage a un ensemble différent de conventions d’affectation de noms pour les noms d’objets par rapport aux objets blob Azure. Vous pouvez en savoir plus ici.

Azure Storage n’autorise pas les noms d’objets (ou tout segment du chemin d’accès du répertoire virtuel) à se terminer par des points de fin (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’objet

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

Dans le cadre d’une commande AzCopy copy , vous pouvez fournir une valeur pour l’indicateur facultatif s2s-handle-invalid-metadata qui spécifie comment gérer les fichiers où les métadonnées du fichier contiennent des noms de clés incompatibles. Le tableau suivant décrit chaque valeur d’indicateur.

Valeur de repère Descriptif
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 inclut cette erreur dans le nombre d’échecs qui apparaît dans le résumé du transfert.
RenameIfInvalid AzCopy résout la clé de métadonnées non valide et copie l’objet dans Azure à l’aide de la paire de valeurs de clé de métadonnées résolue. Pour savoir exactement quelles étapes AzCopy prend pour renommer des clés d’objet, consultez la section Comment AzCopy renomme les clés d’objet . Si AzCopy ne peut pas renommer la clé, l’objet n’est pas copié.

Comment AzCopy renomme les clés d’objet

AzCopy effectue les étapes suivantes :

  1. Remplace les caractères non valides par '_'.

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

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

  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 côté Azure, car la clé de métadonnées est conservée en tant que valeur sur le service de stockage d’objets blob.

Spécifier les types source et de destination

AzCopy utilise le paramètre --from-to pour définir explicitement les types de ressources source et de destination lorsque la détection automatique peut échouer, par exemple dans les scénarios de piping ou les émulateurs. Cela permet à AzCopy de comprendre le contexte du transfert et d’optimiser en conséquence. Vous pouvez définir ce paramètre pour GCPBlobindiquer explicitement que la commande copie à partir de Google Cloud Storage vers Azure Blob Storage.

Étapes suivantes

Pour plus d’exemples, consultez les articles suivants :

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