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 :
Remplace les caractères non valides par « _ ».
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.
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 :
- Exemples : Charger
- Exemples : Téléchargement
- Exemples : Copier entre comptes
- Exemples : Synchroniser
- Exemples : Compartiments Amazon S3
- Exemples : Azure Files
- Tutoriel : Migrer des données locales vers un stockage cloud à l’aide d’AzCopy
Consultez les articles suivants pour configurer les paramètres, optimiser les performances et résoudre les problèmes :