Gegevens kopiëren van Google Cloud Storage naar Azure Storage met behulp van AzCopy

AzCopy is een opdrachtregelprogramma dat u kunt gebruiken om blobs of bestanden te kopiëren vanuit of naar een opslagaccount. Dit artikel helpt u bij het kopiëren van objecten, mappen en buckets van Google Cloud Storage naar Azure Blob Storage met behulp van AzCopy.

Choose how you'll provide authorization credentials (Kiezen hoe u autorisatiereferenties opgeeft)

  • Als u wilt autoriseren met Azure Storage, gebruikt u Microsoft Entra ID of een SAS-token (Shared Access Signature).

  • Gebruik een serviceaccountsleutel om te autoriseren met Google Cloud Storage.

Autoriseren met Azure Storage

Zie het artikel Aan de slag met AzCopy om AzCopy te downloaden en meer te weten te komen over de manieren waarop u autorisatiereferenties kunt opgeven voor de opslagservice.

Notitie

In de voorbeelden in dit artikel wordt ervan uitgegaan dat u autorisatiereferenties hebt opgegeven met behulp van Microsoft Entra-id.

Als u liever een SAS-token gebruikt om toegang tot blobgegevens te autoriseren, kunt u dat token toevoegen aan de resource-URL in elke AzCopy-opdracht. Bijvoorbeeld: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'.

Autoriseren met Google Cloud Storage

Als u wilt autoriseren met Google Cloud Storage, gebruikt u een serviceaccountsleutel. Zie Sleutels voor serviceaccounts maken en beheren voor meer informatie over het maken van een serviceaccountsleutel.

Nadat u een servicesleutel hebt verkregen, stelt u de GOOGLE_APPLICATION_CREDENTIALS omgevingsvariabele in op een absoluut pad naar het sleutelbestand van het serviceaccount:

Besturingssysteem Opdracht
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>

Objecten, mappen en buckets kopiëren

AzCopy maakt gebruik van de PUT Block From URL-API , zodat gegevens rechtstreeks tussen Google Cloud Storage en opslagservers worden gekopieerd. Deze kopieerbewerkingen maken geen gebruik van de netwerkbandbreedte van uw computer.

Fooi

In de voorbeelden in deze sectie worden padargumenten tussen enkele aanhalingstekens (''' ) geplaatst. Gebruik enkele aanhalingstekens in alle opdrachtshells, met uitzondering van de Windows Command Shell (cmd.exe). Als u een Windows Command Shell (cmd.exe) gebruikt, plaatst u padargumenten tussen dubbele aanhalingstekens ("") in plaats van enkele aanhalingstekens ('').

Deze voorbeelden werken ook met accounts met een hiërarchische naamruimte. Met toegang tot meerdere protocollen in Data Lake Storage kunt u dezelfde URL-syntaxis (blob.core.windows.net) voor deze accounts gebruiken.

Een object kopiëren

Gebruik dezelfde URL-syntaxis (blob.core.windows.net) voor accounts met een hiërarchische naamruimte.

Syntaxis

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

Voorbeeld

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

Een map kopiëren

Gebruik dezelfde URL-syntaxis (blob.core.windows.net) voor accounts met een hiërarchische naamruimte.

Syntaxis

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

Voorbeeld

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

Notitie

In dit voorbeeld wordt de --recursive vlag toegevoegd om bestanden in alle submappen te kopiëren.

De inhoud van een map kopiëren

U kunt de inhoud van een map kopiëren zonder de map zelf te kopiëren met behulp van het jokerteken (*).

Syntaxis

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

Voorbeeld

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

Een cloudopslagbucket kopiëren

Gebruik dezelfde URL-syntaxis (blob.core.windows.net) voor accounts met een hiërarchische naamruimte.

Syntaxis

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

Voorbeeld

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

Alle buckets in een Google Cloud-project kopiëren

Stel eerst de GOOGLE_CLOUD_PROJECT project-id van het Google Cloud-project in.

Gebruik dezelfde URL-syntaxis (blob.core.windows.net) voor accounts met een hiërarchische naamruimte.

Syntaxis

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

Voorbeeld

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

Een subset buckets in een Google Cloud-project kopiëren

Stel eerst de GOOGLE_CLOUD_PROJECT project-id van het Google Cloud-project in.

Kopieer een subset van buckets met behulp van een jokerteken (*) in de naam van de bucket. Gebruik dezelfde URL-syntaxis (blob.core.windows.net) voor accounts met een hiërarchische naamruimte.

Syntaxis

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

Voorbeeld

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

Verschillen in naamgevingsregels voor buckets afhandelen

Google Cloud Storage heeft een andere set naamconventies voor bucketnamen in vergelijking met Azure Blob-containers. U kunt hier meer over hen lezen. Als u ervoor kiest om een groep buckets te kopiëren naar een Azure-opslagaccount, kan de kopieerbewerking mislukken vanwege naamverschillen.

AzCopy verwerkt drie van de meest voorkomende problemen die zich kunnen voordoen; buckets die perioden, buckets bevatten die opeenvolgende afbreekstreepjes en buckets bevatten die onderstrepingstekens bevatten. Bucketnamen van Google Cloud Storage kunnen perioden en opeenvolgende afbreekstreepjes bevatten, maar een container in Azure kan dat niet. AzCopy vervangt punten door afbreekstreepjes en opeenvolgende afbreekstreepjes door een getal dat het aantal opeenvolgende afbreekstreepjes aangeeft (bijvoorbeeld: een bucket met de naam my----bucket wordt my-4-bucket. Als de naam van de bucket een onderstrepingsteken (_) heeft, vervangt AzCopy het onderstrepingsteken door een afbreekstreepje. Een bucket met de naam my_bucket wordt my-bucketbijvoorbeeld .

Verschillen in naamgevingsregels voor objecten verwerken

Google Cloud Storage heeft een andere set naamconventies voor objectnamen in vergelijking met Azure-blobs. U kunt hier meer over hen lezen.

Azure Storage staat objectnamen (of een segment in het pad van de virtuele map) niet toe om te eindigen met volgpunten (bijvoorbeeld my-bucket...). Afsluitende stippen worden afgekapt wanneer de kopieerbewerking wordt uitgevoerd.

Verschillen in objectmetagegevens verwerken

Google Cloud Storage en Azure staan verschillende sets tekens toe in de namen van objectsleutels. U kunt hier lezen over metagegevens in Google Cloud Storage. Aan de azure-zijde voldoen blobobjectsleutels aan de naamgevingsregels voor C#-id's.

Als onderdeel van een AzCopy-opdracht copy kunt u een waarde opgeven voor optioneel de s2s-handle-invalid-metadata vlag die aangeeft hoe u bestanden wilt verwerken waarbij de metagegevens van het bestand incompatibele sleutelnamen bevatten. In de volgende tabel wordt elke vlagwaarde beschreven.

Vlagwaarde Omschrijving
ExcludeIfInvalid (Standaardoptie) De metagegevens zijn niet opgenomen in het overgedragen object. AzCopy registreert een waarschuwing.
FailIfInvalid Objecten worden niet gekopieerd. AzCopy registreert een fout en bevat deze fout in het mislukte aantal dat wordt weergegeven in het overdrachtsoverzicht.
RenameIfInvalid AzCopy lost de ongeldige metagegevenssleutel op en kopieert het object naar Azure met behulp van het waardepaar met de opgeloste metagegevenssleutel. Als u precies wilt weten welke stappen AzCopy moet uitvoeren om de naam van objectsleutels te wijzigen, raadpleegt u de sectie Hoe AzCopy de naam van objectsleutels wijzigt. Als AzCopy de naam van de sleutel niet kan wijzigen, wordt het object niet gekopieerd.

Hoe AzCopy de naam van objectsleutels wijzigt

AzCopy voert deze stappen uit:

  1. Vervangt ongeldige tekens door _.

  2. Hiermee voegt u de tekenreeks rename_ toe aan het begin van een nieuwe geldige sleutel.

    Deze sleutel wordt gebruikt om de oorspronkelijke metagegevenswaarde op te slaan.

  3. Hiermee voegt u de tekenreeks rename_key_ toe aan het begin van een nieuwe geldige sleutel. Deze sleutel wordt gebruikt om de oorspronkelijke metagegevens ongeldige sleutel op te slaan. U kunt deze sleutel gebruiken om de metagegevens aan de zijde van Azure te herstellen, omdat de metagegevenssleutel wordt bewaard als een waarde in de Blob Storage-service.

Volgende stappen

Bekijk meer voorbeelden in deze artikelen:

Zie deze artikelen voor het configureren van instellingen, het optimaliseren van de prestaties en het oplossen van problemen: