Udostępnij przez


Kopiowanie danych z usługi Google Cloud Storage do usługi Azure Storage przy użyciu narzędzia AzCopy

AzCopy to narzędzie wiersza polecenia, którego można używać do kopiowania obiektów blob lub plików do lub z konta magazynowego. Ten artykuł ułatwia kopiowanie obiektów, katalogów i zasobników z usługi Google Cloud Storage do usługi Azure Blob Storage przy użyciu narzędzia AzCopy.

Wybierz sposób podawania poświadczeń autoryzacji

  • Aby autoryzować usługę Azure Storage, użyj identyfikatora Entra firmy Microsoft lub tokenu sygnatury dostępu współdzielonego (SAS).

  • Aby autoryzować usługę Google Cloud Storage, użyj klucza konta usługi.

Autoryzowanie za pomocą usługi Azure Storage

Zapoznaj się z artykułem Wprowadzenie do narzędzia AzCopy, aby pobrać narzędzie AzCopy i dowiedzieć się więcej o sposobach udostępniania poświadczeń autoryzacji do usługi magazynu.

Uwaga / Notatka

W przykładach w tym artykule założono, że podasz poświadczenia autoryzacji przy użyciu identyfikatora Entra firmy Microsoft.

Jeśli wolisz użyć tokenu SAS do autoryzowania dostępu do danych obiektów blob, możesz dołączyć ten token do adresu URL zasobu w każdym poleceniu narzędzia AzCopy. Na przykład: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'.

Autoryzowanie za pomocą usługi Google Cloud Storage

Aby autoryzować usługę Google Cloud Storage, użyj klucza konta usługi. Aby uzyskać informacje o sposobie tworzenia klucza konta usługi, zobacz Tworzenie kluczy konta usługi i zarządzanie nimi.

Po uzyskaniu klucza usługi, skonfiguruj GOOGLE_APPLICATION_CREDENTIALS zmienną środowiskową tak, aby wskazywała na pełną ścieżkę do pliku klucza konta usługi.

System operacyjny 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>

Kopiowanie obiektów, katalogów i zasobników

Narzędzie AzCopy używa interfejsu API Put Block From URL, więc dane są kopiowane bezpośrednio między usługą Google Cloud Storage a serwerami przechowywania danych. Te operacje kopiowania nie korzystają z przepustowości sieci komputera.

Wskazówka

Przykłady w tej sekcji ująć argumenty ścieżki za pomocą cudzysłowów pojedynczych (""). Używaj pojedynczych cudzysłowów we wszystkich powłokach poleceń z wyjątkiem powłoki poleceń systemu Windows (cmd.exe). Jeśli używasz powłoki poleceń systemu Windows (cmd.exe), ujęć argumenty ścieżki z podwójnymi cudzysłowami ("") zamiast pojedynczych cudzysłowów ('').

Te przykłady współpracują również z kontami, które mają hierarchiczną przestrzeń nazw. Dostęp do wielu protokołów w usłudze Data Lake Storage umożliwia korzystanie z tej samej składni adresu URL (blob.core.windows.net) na tych kontach.

Kopiowanie obiektu

Użyj tej samej składni adresu URL (blob.core.windows.net) dla kont, które mają hierarchiczną przestrzeń nazw.

Syntax

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

Przykład

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

Kopiowanie katalogu

Użyj tej samej składni adresu URL (blob.core.windows.net) dla kont, które mają hierarchiczną przestrzeń nazw.

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

Przykład

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

Uwaga / Notatka

Ten przykład dodaje flagę --recursive do operacji kopiowania plików we wszystkich podkatalogach.

Kopiowanie zawartości katalogu

Zawartość katalogu można skopiować bez kopiowania samego katalogu, używając symbolu wieloznacznego (*).

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

Przykład

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

Kopiowanie zasobnika magazynu w chmurze

Użyj tej samej składni adresu URL (blob.core.windows.net) dla kont, które mają hierarchiczną przestrzeń nazw.

Syntax

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

Przykład

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

Skopiuj wszystkie buckety w projekcie Google Cloud

Najpierw ustaw GOOGLE_CLOUD_PROJECT na identyfikator projektu Google Cloud.

Użyj tej samej składni adresu URL (blob.core.windows.net) dla kont, które mają hierarchiczną przestrzeń nazw.

Syntax

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

Przykład

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

Kopiowanie podzbioru zasobników w projekcie Google Cloud

Najpierw ustaw GOOGLE_CLOUD_PROJECT jako identyfikator projektu Google Cloud.

Skopiuj podzbiór zasobników przy użyciu symbolu wieloznacznego (*) w nazwie zasobnika. Użyj tej samej składni adresu URL (blob.core.windows.net) dla kont, które mają hierarchiczną przestrzeń nazw.

Syntax

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

Przykład

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

Obsługa różnic w regułach nazewnictwa wiader

Usługa Google Cloud Storage ma inny zestaw zasad nazewnictwa zasobników w porównaniu z kontenerami obiektów blob platformy Azure. Możesz je przeczytać tutaj. Jeśli zdecydujesz się skopiować grupę zasobników do konta usługi Azure Storage, operacja kopiowania może zakończyć się niepowodzeniem z powodu różnic nazw.

Narzędzie AzCopy obsługuje trzy typowe problemy, które mogą wystąpić: zasobniki zawierające kropki, zasobniki zawierające kolejne łączniki i zasobniki zawierające podkreślenia. Nazwy zasobników usługi Google Cloud Storage mogą zawierać kropki i kolejne łączniki, ale kontener na platformie Azure nie może. Narzędzie AzCopy zastępuje kropki łącznikami i kolejnymi łącznikami liczbą reprezentującą liczbę kolejnych łączników (na przykład: zasobnik o nazwie my----bucket staje się my-4-bucket). Jeśli nazwa zasobnika ma podkreślenie (_), narzędzie AzCopy zastępuje podkreślenie łącznikiem. Na przykład zasobnik o nazwie my_bucket staje się my-bucket.

Obsługa różnic w regułach nazewnictwa obiektów

Usługa Google Cloud Storage ma inny zestaw konwencji nazewnictwa nazw obiektów w porównaniu z obiektami blob platformy Azure. Możesz je przeczytać tutaj.

Azure Storage nie zezwala, aby nazwy obiektów (ani żaden segment w ścieżce katalogu wirtualnego) kończyły się końcowymi kropkami (na przykład my-bucket...). Kropki końcowe są usuwane po wykonaniu operacji kopiowania.

Obsługa różnic w metadanych obiektu

Usługi Google Cloud Storage i Azure umożliwiają używanie różnych zestawów znaków w nazwach kluczy obiektów. Tutaj możesz przeczytać o metadanych w usłudze Google Cloud Storage. Po stronie platformy Azure klucze obiektów blob są zgodne z regułami nazewnictwa identyfikatorów języka C#.

W ramach polecenia narzędzia AzCopy copy można podać wartość opcjonalnej s2s-handle-invalid-metadata flagi określającej sposób obsługi plików, w których metadane pliku zawierają niezgodne nazwy kluczy. W poniższej tabeli opisano każdą wartość flagi.

Wartość flagi Description
ExcludeIfInvalid (Opcja domyślna) Metadane nie są uwzględniane w przesłanym obiekcie. Narzędzie AzCopy rejestruje ostrzeżenie.
FailIfInvalid Obiekty nie są kopiowane. Narzędzie AzCopy rejestruje błąd i zawiera ten błąd w liczbie nieudanych operacji wyświetlanych w podsumowaniu transferu.
RenameIfInvalid Narzędzie AzCopy rozpoznaje nieprawidłowy klucz metadanych i kopiuje obiekt na platformę Azure przy użyciu pary rozpoznanych wartości klucza metadanych. Aby dowiedzieć się dokładnie, jakie kroki wykonuje narzędzie AzCopy w celu zmiany nazwy kluczy obiektów, zobacz sekcję How AzCopy renames object keys (Jak narzędzie AzCopy zmienia nazwę kluczy obiektów ). Jeśli narzędzie AzCopy nie może zmienić nazwy klucza, obiekt nie zostanie skopiowany.

Jak narzędzie AzCopy zmienia nazwę kluczy obiektów

Narzędzie AzCopy wykonuje następujące kroki:

  1. Zamienia nieprawidłowe znaki na '_'.

  2. Dodaje ciąg rename_ na początku nowego prawidłowego klucza.

    Ten klucz zostanie użyty do zapisania oryginalnej wartości metadanych.

  3. Dodaje ciąg rename_key_ na początku nowego prawidłowego klucza. Ten klucz zostanie użyty do zapisania oryginalnego klucza nieprawidłowego metadanych. Możesz użyć tego klucza, aby spróbować odzyskać metadane po stronie platformy Azure, ponieważ klucz metadanych jest zachowywany jako wartość w usłudze Blob Storage.

Określanie typów źródłowych i docelowych

Narzędzie AzCopy używa parametru --from-to do jawnego zdefiniowania typów zasobów źródłowych i docelowych, gdy automatyczne wykrywanie może zakończyć się niepowodzeniem, na przykład w scenariuszach potokowych lub emulatorach. Pomaga to narzędziu AzCopy zrozumieć kontekst transferu i odpowiednio zoptymalizować. Możesz ustawić ten parametr na GCPBlobwartość , aby jawnie wskazać, że polecenie kopiuje z usługi Google Cloud Storage do usługi Azure Blob Storage.

Dalsze kroki

Więcej przykładów można znaleźć w następujących artykułach:

Zobacz następujące artykuły, aby skonfigurować ustawienia, zoptymalizować wydajność i rozwiązać problemy: