Kopírování dat z Google Cloud Storage do Azure Storage pomocí AzCopy

AzCopy je nástroj příkazového řádku, který můžete použít ke kopírování blobů nebo souborů do nebo z účtu úložiště. Tento článek vám pomůže kopírovat objekty, adresáře a kontejnery z Google Cloud Storage do služby Azure Blob Storage pomocí nástroje AzCopy.

Volba způsobu zadání přihlašovacích údajů pro autorizaci

  • K autorizaci se službou Azure Storage použijte MICROSOFT Entra ID nebo token sdíleného přístupového podpisu (SAS).

  • K autorizaci s Google Cloud Storage použijte klíč účtu služby.

Autorizace se službou Azure Storage

Přečtěte si článek Začínáme s nástrojem AzCopy a stáhněte si AzCopy a seznamte se s způsoby, jak službě úložiště poskytnout přihlašovací údaje pro autorizaci.

Poznámka:

Příklady v tomto článku předpokládají, že zadáte autorizační přihlašovací údaje pomocí ID Microsoft Entra.

Pokud byste raději k autorizaci přístupu k datům objektů blob použili token SAS, můžete tento token připojit k adrese URL prostředku v každém příkazu AzCopy. Například: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'.

Autorizace s google cloudovým úložištěm

K autorizaci s Google Cloud Storage použijte klíč účtu služby. Informace o tom, jak vytvořit klíč účtu služby, naleznete v tématu Vytváření a správa klíčů účtu služby.

Po získání klíče služby nastavte GOOGLE_APPLICATION_CREDENTIALS proměnnou prostředí na absolutní cestu k souboru klíče účtu služby:

Operační systém Příkaz
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>

Kopírování objektů, adresářů a kontejnerů

AzCopy používá rozhraní URL PUT Block From API, takže se data kopírují přímo mezi Google Cloud Storage a servery úložiště. Tyto operace kopírování nepoužívají šířku pásma sítě vašeho počítače.

Návod

Příklady v této části ohraničují argumenty cesty s jednoduchými uvozovkami ('). Použití jednoduchých uvozovek ve všech příkazových prostředích s výjimkou prostředí Windows Command Shell (cmd.exe). Pokud používáte příkazový řádek Windows (cmd.exe), uzavřete argumenty cesty do dvojitých uvozovek („") místo jednoduchých uvozovek ('').

Tyto příklady také fungují s účty, které mají hierarchický obor názvů. Přístup k více protokolům ve službě Data Lake Storage umožňuje pro tyto účty použít stejnou syntaxi adresy URL (blob.core.windows.net).

Při kopírování objektů blob mezi účty úložiště AzCopy převede velká písmena v názvech metadat na malá písmena. Toto chování odpovídá specifikacím protokolu HTTP.

Zkopírování objektu

Pro účty, které mají hierarchický obor názvů, použijte stejnou syntaxi adresy URL (blob.core.windows.net).

Syntaxe

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

Příklad

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

Kopírování adresáře

Pro účty, které mají hierarchický obor názvů, použijte stejnou syntaxi adresy URL (blob.core.windows.net).

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

Příklad

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

Poznámka:

Tento příklad připojí --recursive příznak ke kopírování souborů ve všech podadresářích.

Zkopírování obsahu adresáře

Obsah adresáře můžete zkopírovat bez zkopírování samotného adresáře pomocí zástupného znaku (*).

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

Příklad

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

Kopírování kontejneru cloudového úložiště

Pro účty, které mají hierarchický obor názvů, použijte stejnou syntaxi adresy URL (blob.core.windows.net).

Syntaxe

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

Příklad

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

Kopírování všech kontejnerů v projektu Google Cloud

Nejprve nastavte GOOGLE_CLOUD_PROJECT na identifikátor projektu vašeho projektu Google Cloud.

Pro účty, které mají hierarchický obor názvů, použijte stejnou syntaxi adresy URL (blob.core.windows.net).

Syntaxe

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

Příklad

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

Zkopírujte podmnožinu úložišť v projektu Google Cloud

Nejprve nastavte GOOGLE_CLOUD_PROJECT na identifikátor projektu vašeho projektu Google Cloud.

Zkopírujte podmnožinu kontejnerů pomocí zástupného znaku (*) v názvu kontejneru. Pro účty, které mají hierarchický obor názvů, použijte stejnou syntaxi adresy URL (blob.core.windows.net).

Syntaxe

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

Příklad

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

Zpracování rozdílů v pravidlech pojmenování kontejnerů

Google Cloud Storage má v porovnání s kontejnery objektů blob v Azure jinou sadu zásad vytváření názvů pro názvy kontejnerů. Můžete si o nich přečíst tady. Pokud se rozhodnete zkopírovat skupinu kontejnerů do účtu úložiště Azure, operace kopírování může selhat kvůli rozdílům v pojmenování.

AzCopy zpracovává tři z nejběžnějších problémů, které mohou nastat: úložiště obsahující tečky, úložiště obsahující po sobě jdoucí spojovníky a úložiště obsahující podtržítka. Názvy kontejnerů Google Cloud Storage můžou obsahovat tečky a po sobě jdoucí pomlčky, ale kontejner v Azure nemůže. AzCopy nahrazuje tečky pomlčkami a po sobě jdoucími spojovníky číslem, které představuje počet po sobě jdoucích pomlček (například kbelík s názvem my----bucket se stane my-4-bucket). Pokud má název kontejneru podtržítko (_), AzCopy nahradí podtržítko pomlčkou. Například kontejner s názvem my_bucket se stane my-bucket.

Zpracování rozdílů v pravidlech pojmenování objektů

Google Cloud Storage má v porovnání s objekty blob Azure jinou sadu konvencí vytváření názvů objektů. Můžete si o nich přečíst tady.

Azure Storage nepovoluje názvy objektů (ani žádný segment v cestě k virtuálnímu adresáři) tak, aby končily koncovými tečkami (například my-bucket...). Koncové tečky se při provedení operace kopírování odstraní.

Zpracování rozdílů v metadatech objektů

Google Cloud Storage a Azure umožňují v názvech klíčů objektů různé sady znaků. Tady si můžete přečíst o metadatech ve službě Google Cloud Storage. Klíče objektů blob na straně Azure odpovídají pravidlům pojmenování identifikátorů jazyka C#.

Jako součást příkazu AzCopy copy můžete zadat hodnotu volitelného s2s-handle-invalid-metadata příznaku, který určuje, jak chcete zpracovávat soubory, kde metadata souboru obsahují nekompatibilní názvy klíčů. Následující tabulka popisuje každou hodnotu příznaku.

Hodnota příznaku Popis
ExcludeIfInvalid (Výchozí možnost) Metadata nejsou zahrnuta do přenášeného objektu. AzCopy zaznamená upozornění.
FailIfInvalid Objekty se nekopírují. AzCopy zaznamená chybu a zahrne tuto chybu do počtu selhání, který se zobrazí v souhrnu přenosu.
RenameIfInvalid AzCopy opraví neplatný klíč metadat a zkopíruje objekt do Azure s použitím opraveného páru klíč-hodnota metadat. Pokud chcete přesně zjistit, jaké kroky AzCopy provede k přejmenování klíčů objektů, přečtěte si část Jak AzCopy přejmenuje klíče objektů . Pokud Nástroj AzCopy nemůže klíč přejmenovat, objekt se nezkopíruje.

Přejmenování klíčů objektů nástrojem AzCopy

AzCopy provádí tyto kroky:

  1. Nahradí neplatné znaky znakem _.

  2. Přidá řetězec rename_ na začátek nového platného klíče.

    Tento klíč se použije k uložení původní hodnoty metadat.

  3. Přidá řetězec rename_key_ na začátek nového platného klíče. Tento klíč se použije k uložení původního neplatného klíče metadat. Tento klíč můžete použít k pokusu o obnovení metadat na straně Azure, protože klíč metadat je zachován jako hodnota ve službě Blob Storage.

Zadání zdrojových a cílových typů

AzCopy pomocí parametru --from-to explicitně definuje typy zdrojových a cílových prostředků, pokud může automatické zjišťování selhat, například ve scénářích propojení nebo emulátorech. To pomáhá nástroji AzCopy pochopit kontext přenosu a odpovídajícím způsobem optimalizovat. Tento parametr můžete nastavit tak, aby GCPBlobexplicitně označí, že příkaz kopíruje z Google Cloud Storage do Azure Blob Storage.

Další kroky

Další příklady najdete v těchto článcích:

Informace o konfiguraci nastavení, optimalizaci výkonu a řešení potíží najdete v těchto článcích: