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:

  1. Ersetzt ungültige Zeichen durch „_“.

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

  3. 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:

Lesen Sie diese Artikel, um Einstellungen zu konfigurieren, die Leistung zu optimieren und Probleme zu beheben: