Kopieren von Daten aus Google Cloud Storage in Azure Storage mithilfe von AzCopy
AzCopy ist ein Befehlszeilenhilfsprogramm, das Sie verwenden können, um Blobs oder Dateien in oder aus einem Speicherkonto zu kopieren. Dieser Artikel enthält Informationen zum Kopieren von Objekten, Verzeichnissen und Buckets aus Google Cloud Storage in Azure Blob Storage mithilfe von AzCopy.
Auswählen, wie Sie die Autorisierungsanmeldeinformationen bereitstellen
Für die Autorisierung bei Azure Storage nutzen Sie Microsoft Entra ID oder ein SAS-Token (Shared Access Signature).
Nutzen Sie für die Google Cloud Storage-Autorisierung einen Dienstkontoschlüssel.
Autorisieren mit Azure Storage
Lesen Sie den Artikel Erste Schritte mit AzCopy, um AzCopy herunterzuladen und zu erfahren, wie Sie dem Speicherdienst Autorisierungsanmeldeinformationen bereitstellen können.
Hinweis
In den Beispielen in diesem Artikel wird davon ausgegangen, dass Sie Anmeldeinformationen für die Autorisierung mithilfe von Microsoft Entra ID bereitgestellt haben.
Wenn Sie lieber ein SAS-Token für die Autorisierung des Zugriffs auf Blobdaten verwenden möchten, können Sie dieses Token in jedem AzCopy-Befehl an die Ressourcen-URL anfügen. Beispiel: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'
.
Autorisierung mit Google Cloud Storage
Für die Autorisierung mit Google Cloud Storage verwenden Sie einen Dienstkontoschlüssel. Informationen zum Erstellen eines Dienstkontoschlüssels finden Sie unter Dienstkontoschlüssel erstellen und verwalten.
Nachdem Sie einen Dienstschlüssel abgerufen haben, legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS
auf den absoluten Pfad zur Datei mit dem Dienstkontoschlüssel fest:
Betriebssystem | Get-Help |
---|---|
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> |
Kopieren von Objekten, Verzeichnisse und Buckets
Da für AzCopy die API Put Block From URL verwendet wird, werden Daten direkt zwischen Google Cloud Storage und Speicherservern kopiert. Für diese Kopiervorgänge wird nicht die Netzwerkbandbreite Ihres Computers genutzt.
Tipp
In den Beispielen in diesem Abschnitt werden Pfadargumente in einfache Anführungszeichen ('') eingeschlossen. Verwenden Sie in allen Befehlsshells außer der Windows-Befehlszeile (cmd.exe) einfache Anführungszeichen. Wenn Sie eine Windows-Befehlszeile (cmd.exe) verwenden, müssen Sie Pfadargumente in doppelte Anführungszeichen ("") anstelle von einfachen Anführungszeichen ('') einschließen.
Diese Beispiele können auch für Konten mit einem hierarchischen Namespace verwendet werden. Multiprotokollzugriff für Data Lake Storage ermöglicht es Ihnen, dieselbe URL-Syntax (blob.core.windows.net
) für diese Konten zu verwenden.
Kopieren eines Objekts
Verwenden Sie dieselbe URL-Syntax (blob.core.windows.net
) für Konten mit einem hierarchischen Namespace.
Syntax
azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'
Beispiel
azcopy copy 'https://storage.cloud.google.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'
Kopieren eines Verzeichnisses
Verwenden Sie dieselbe URL-Syntax (blob.core.windows.net
) für Konten mit einem hierarchischen Namespace.
Syntax
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
Beispiel
azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Hinweis
In diesem Beispiel wird das Flag --recursive
angehängt, um Dateien in allen Unterverzeichnissen zu kopieren.
Kopieren des Inhalts eines Verzeichnisses
Mithilfe des Platzhaltersymbols (*) können Sie die Inhalte eines Verzeichnisses kopieren, ohne das Verzeichnis selbst zu kopieren.
Syntax
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
Beispiel
azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Kopieren eines Cloud Storage-Buckets
Verwenden Sie dieselbe URL-Syntax (blob.core.windows.net
) für Konten mit einem hierarchischen Namespace.
Syntax
azcopy copy 'https://storage.cloud.google.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Beispiel
azcopy copy 'https://storage.cloud.google.com/mybucket' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Kopieren aller Buckets in einem Google Cloud-Projekt
Legen Sie zunächst GOOGLE_CLOUD_PROJECT
auf die Projekt-ID des Google Cloud-Projekts fest.
Verwenden Sie dieselbe URL-Syntax (blob.core.windows.net
) für Konten mit einem hierarchischen Namespace.
Syntax
azcopy copy 'https://storage.cloud.google.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Beispiel
azcopy copy 'https://storage.cloud.google.com/' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Kopieren einer Teilmenge der Buckets in ein Google Cloud-Projekt
Legen Sie zunächst GOOGLE_CLOUD_PROJECT
auf die Projekt-ID des Google Cloud-Projekts fest.
Kopieren einer Teilmenge der Buckets unter Verwendung eines Platzhaltersymbols (*) im Bucketnamen. Verwenden Sie dieselbe URL-Syntax (blob.core.windows.net
) für Konten mit einem hierarchischen Namespace.
Syntax
azcopy copy 'https://storage.cloud.google.com/<bucket*name>' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Beispiel
azcopy copy 'https://storage.cloud.google.com/my*bucket' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Behandeln von Unterschieden in den Benennungsregeln für Buckets
Google Cloud Storage verfügt über andere Namenskonventionen für Bucketnamen als Azure-Blobcontainer. Informationen zu diesem Thema finden Sie hier. Wenn Sie die Entscheidung treffen, eine Gruppe mit Buckets in ein Azure-Speicherkonto zu kopieren, tritt für den Kopiervorgang ggf. ein Fehler aufgrund von Unterschieden bei der Benennung auf.
Mit AzCopy werden drei der häufigsten Probleme behandelt, die auftreten können: Buckets, die Punkte enthalten, Buckets, die aufeinanderfolgende Bindestriche enthalten, und Buckets, die Unterstriche enthalten. Namen von Google Cloud Storage-Buckets können Punkte und aufeinanderfolgende Bindestriche enthalten, aber bei Containern in Azure ist dies nicht möglich. Mit AzCopy werden Zeiträume durch Bindestriche und aufeinander folgende Bindestriche durch eine Zahl ersetzt, die für die Anzahl von aufeinander folgenden Bindestriche steht (Beispiel: ein Bucket mit dem Namen my----bucket
wird zu my-4-bucket
. Wenn der Bucketname einen Unterstrich (_
) enthält, ersetzt AzCopy den Unterstrich durch einen Bindestrich. Ein Bucket mit dem Namen my_bucket
wird z. B zu my-bucket
.
Unterschiede in Benennungsregeln für Objekte
Google Cloud Storage verfügt über andere Namenskonventionen für Objektnamen als Azure-Blobs. Informationen zu diesem Thema finden Sie hier.
In Azure Storage dürfen Objektnamen (oder Segmente im virtuellen Verzeichnispfad) nicht auf Punkte enden (z. B. my-bucket...
). Nachgestellte Punkte werden beim Kopiervorgang entfernt.
Behandeln von Unterschieden in Objektmetadaten
Bei Google Cloud Storage und Azure sind in den Namen von Objektschlüsseln unterschiedliche Zeichen zulässig. Informationen zu Metadaten in Google Cloud Storage finden Sie hier. Auf Azure-Seite unterliegen Blobobjektschlüssel den Benennungsregeln für C#-Bezeichner.
Im Rahmen des AzCopy-Befehls copy
können Sie einen Wert für das optionale Flag s2s-handle-invalid-metadata
angeben. Hiermit wird festgelegt, wie Dateien verarbeitet werden sollen, bei denen die Metadaten der Datei inkompatible Schlüsselnamen enthalten. In der folgenden Tabelle werden die einzelnen Flagwerte beschrieben.
Flagwert | BESCHREIBUNG |
---|---|
ExcludeIfInvalid | (Standardoption) Die Metadaten sind nicht im übertragenen Objekt enthalten. AzCopy protokolliert eine Warnung. |
FailIfInvalid | Objekte werden nicht kopiert. AzCopy protokolliert einen Fehler und fügt diese Fehler der Fehleranzahl hinzu, die in der Zusammenfassung der Übertragung angezeigt wird. |
RenameIfInvalid | AzCopy löst den ungültigen Metadatenschlüssel auf und kopiert das Objekt in Azure, indem das aufgelöste Schlüssel-Wert-Paar aus den Metadaten verwendet wird. Informationen zu den genauen Schritten, die von AzCopy zum Umbenennen von Objektschlüsseln ausgeführt werden, finden Sie unten im Abschnitt Umbenennen von Objektschlüsseln durch AzCopy. Falls der Schlüssel von AzCopy nicht umbenannt werden kann, wird das Objekt nicht kopiert. |
Umbenennen von Objektschlüsseln durch AzCopy
AzCopy führt die folgenden Schritte aus:
Ersetzt ungültige Zeichen durch „_“.
Fügt am Anfang eines neuen gültigen Schlüssels die Zeichenfolge
rename_
hinzu.Dieser Schlüssel wird verwendet, um den ursprünglichen Wert aus den Metadaten zu speichern.
Fügt am Anfang eines neuen gültigen Schlüssels die Zeichenfolge
rename_key_
hinzu. Dieser Schlüssel wird verwendet, um den ursprünglichen ungültigen Schlüssel aus den Metadaten zu speichern. Sie können mit diesem Schlüssel versuchen, die Metadaten auf Azure-Seite wiederherzustellen, weil der Metadatenschlüssel als Wert im Blobspeicherdienst gespeichert wird.
Nächste Schritte
Weitere Beispiele finden Sie in diesen Artikeln:
- Beispiele: Hochladen
- Beispiele: Herunterladen
- Beispiele: Kopieren zwischen Konten
- Beispiele: Synchronisieren
- Beispiele: Amazon S3-Buckets
- Beispiele: Azure Files
- Tutorial: Migrieren von lokalen Daten zum Cloudspeicher mithilfe von AzCopy
Lesen Sie diese Artikel, um Einstellungen zu konfigurieren, die Leistung zu optimieren und Probleme zu beheben: