Dela via


Kopiera data från Google Cloud Storage till Azure Storage med hjälp av AzCopy

AzCopy är ett kommandoradsverktyg som du kan använda för att kopiera blobar eller filer till eller från ett lagringskonto. Den här artikeln hjälper dig att kopiera objekt, kataloger och bucketar från Google Cloud Storage till Azure Blob Storage med hjälp av AzCopy.

Välj hur du ska ange behörighetsuppgifter

  • Om du vill auktorisera med Azure Storage använder du Microsoft Entra-ID eller en SAS-token (Signatur för delad åtkomst).

  • Om du vill auktorisera med Google Cloud Storage använder du en tjänstkontonyckel.

Auktorisera med Azure Storage

I artikeln Kom igång med AzCopy kan du ladda ned AzCopy och lära dig mer om hur du kan ange autentiseringsuppgifter för auktorisering till lagringstjänsten.

Anmärkning

Exemplen i den här artikeln förutsätter att du anger autentiseringsuppgifter för auktorisering med hjälp av Microsoft Entra-ID.

Om du hellre vill använda en SAS-token för att auktorisera åtkomst till blobdata kan du lägga till den token till resurs-URL:en i varje AzCopy-kommando. Till exempel: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'.

Auktorisera med Google Cloud Storage

Om du vill auktorisera med Google Cloud Storage använder du en tjänstkontonyckel. Information om hur du skapar en tjänstkontonyckel finns i Skapa och hantera tjänstkontonycklar.

När du har hämtat en tjänstnyckel anger du GOOGLE_APPLICATION_CREDENTIALS miljövariabeln till den absoluta sökvägen till nyckelfilen för tjänstkontot:

Operativsystem 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>

Kopiera objekt, kataloger och bucketar

AzCopy använder API:et Put Block From URL så att data kopieras direkt mellan Google Cloud Storage och lagringsservrar. Dessa kopieringsåtgärder använder inte datorns nätverksbandbredd.

Tips/Råd

Exemplen i det här avsnittet omger sökvägsargument med enkla citattecken (''). Använd enkla citattecken i alla kommandogränssnitt förutom Windows Command Shell (cmd.exe). Om du använder ett Windows-kommandogränssnitt (cmd.exe) omger du sökvägsargument med dubbla citattecken ("") i stället för enkla citattecken ('').

De här exemplen fungerar också med konton som har ett hierarkiskt namnområde. Med åtkomst med flera protokoll i Data Lake Storage kan du använda samma URL-syntax (blob.core.windows.net) på dessa konton.

Kopiera ett objekt

Använd samma URL-syntax (blob.core.windows.net) för konton som har ett hierarkiskt namnområde.

Syntax

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

Exempel

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

Kopiera en katalog

Använd samma URL-syntax (blob.core.windows.net) för konton som har ett hierarkiskt namnområde.

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

Exempel

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

Anmärkning

I det --recursive här exemplet läggs flaggan till för att kopiera filer i alla underkataloger.

Kopiera innehållet i en katalog

Du kan kopiera innehållet i en katalog utan att kopiera själva katalogen med hjälp av jokertecknet (*).

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

Exempel

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

Kopiera en Cloud Storage-bucket

Använd samma URL-syntax (blob.core.windows.net) för konton som har ett hierarkiskt namnområde.

Syntax

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

Exempel

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

Kopiera alla bucketar i ett Google Cloud-projekt

GOOGLE_CLOUD_PROJECT Ange först projekt-ID för ditt Google Cloud-projekt.

Använd samma URL-syntax (blob.core.windows.net) för konton som har ett hierarkiskt namnområde.

Syntax

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

Exempel

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

Kopiera en delmängd bucketar i ett Google Cloud-projekt

GOOGLE_CLOUD_PROJECT Ange först projekt-ID för ditt Google Cloud-projekt.

Kopiera en delmängd bucketar med hjälp av en jokerteckensymbol (*) i bucketnamnet. Använd samma URL-syntax (blob.core.windows.net) för konton som har ett hierarkiskt namnområde.

Syntax

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

Exempel

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

Hantera skillnader i regler för namngivning av behållare

Google Cloud Storage har en annan uppsättning namngivningskonventioner för bucketnamn jämfört med Azure-blobcontainrar. Du kan läsa om dem här. Om du väljer att kopiera en grupp bucketar till ett Azure Storage-konto kan kopieringsåtgärden misslyckas på grund av namngivningsskillnader.

AzCopy hanterar tre av de vanligaste problemen som kan uppstå: bucketar som innehåller punkter, bucketar som innehåller bindestreck i följd och bucketar som innehåller understreck. Bucketnamn för Google Cloud Storage kan innehålla punkter och följdande bindestreck, men i Azure kan en container inte det. AzCopy ersätter punkter med bindestreck och efterföljande bindestreck med ett tal som representerar antalet bindestreck i följd (till exempel: en bucket med namnet my----bucket blir my-4-bucket). Om bucketnamnet har ett understreck (_) ersätter AzCopy understrecket med ett bindestreck. En bucket med namnet my_bucket blir my-buckettill exempel .

Hantera skillnader i namngivningsregler för objekt

Google Cloud Storage har en annan uppsättning namngivningskonventioner för objektnamn jämfört med Azure-blobar. Du kan läsa om dem här.

Azure Storage tillåter inte att objektnamn (eller segment i den virtuella katalogsökvägen) slutar med avslutande punkter (till exempel my-bucket...). Eftersläpande punkter trimmas när kopieringsåtgärden utförs.

Hantera skillnader i objektmetadata

Google Cloud Storage och Azure tillåter olika uppsättningar tecken i namnen på objektnycklar. Du kan läsa om metadata i Google Cloud Storage här. På Azure-sidan följer blobobjektnycklarna namngivningsreglerna för C#-identifierare.

Som en del av ett AzCopy-kommando copy kan du ange ett värde för den valfria s2s-handle-invalid-metadata flaggan som anger hur du vill hantera filer där metadata för filen innehåller inkompatibla nyckelnamn. I följande tabell beskrivs varje flaggvärde.

Flaggvärde Description
ExkluderaOmOgiltig (Standardalternativ) Metadata ingår inte i det överförda objektet. AzCopy loggar en varning.
FailIfInvalid Objekt kopieras inte. AzCopy loggar ett fel och inkluderar det felet i antalet misslyckade som visas i överföringsöversikten.
RenameIfInvalid AzCopy löser den ogiltiga metadatanyckeln och kopierar objektet till Azure med hjälp av det lösta nyckelvärdeparet för metadata. Information om exakt vilka steg AzCopy vidtar för att byta namn på objektnycklar finns i avsnittet Så byter AzCopy namn på objektnycklar . Om AzCopy inte kan byta namn på nyckeln kopieras inte objektet.

Så byter AzCopy namn på objektnycklar

AzCopy utför följande steg:

  1. Ersätter ogiltiga tecken med '_'.

  2. Lägger till strängen rename_ i början av en ny giltig nyckel.

    Den här nyckeln används för att spara det ursprungliga metadatavärdet.

  3. Lägger till strängen rename_key_ i början av en ny giltig nyckel. Den här nyckeln kommer att användas för att spara ursprungliga metadata med ogiltig nyckel. Du kan använda den här nyckeln för att försöka återställa metadata på Azure-sidan eftersom metadatanyckeln bevaras som ett värde i Blob Storage-tjänsten.

Ange käll- och måltyper

AzCopy använder parametern --from-to för att explicit definiera käll- och målresurstyperna när automatisk identifiering kan misslyckas, till exempel i rörledningsscenarier eller emulatorer. Detta hjälper AzCopy att förstå kontexten för överföringen och optimera därefter. Du kan ange den här parametern till GCPBlobför att uttryckligen ange att kommandot kopieras från Google Cloud Storage till Azure Blob Storage.

Nästa steg

Hitta fler exempel i de här artiklarna:

Se de här artiklarna om du vill konfigurera inställningar, optimera prestanda och felsöka problem: