Kopiowanie obiektów blob między kontami usługi Azure Storage przy użyciu narzędzia AzCopy

AzCopy v10 to narzędzie wiersza polecenia, które umożliwia kopiowanie obiektów typu blob, katalogów i kontenerów między kontami magazynowymi.

Przykłady innych typów zadań, takich jak wysyłanie plików, pobieranie blobów i synchronizowanie z Blob Storage, zobacz w sekcji Następne kroki tego artykułu.

AzCopy używa interfejsów serwer-serwerAPI, dlatego dane są kopiowane bezpośrednio między serwerami magazynowania.

Wprowadzenie

Zapoznaj się z artykułem Rozpoczęcie pracy z narzędziem AzCopy, aby pobrać narzędzie AzCopy i dowiedzieć się, jak można przekazywać poświadczenia autoryzacyjne usłudze magazynu.

Uwaga

W przykładach w tym artykule przyjęto założenie, że podasz poświadczenia autoryzacji przy użyciu Microsoft Entra ID i że identyfikacja Microsoft Entra ma odpowiednie przypisania ról dla zarówno źródłowych, jak i docelowych kont.

Alternatywnie możesz dołączyć token SAS do źródłowego lub docelowego adresu URL w każdym poleceniu narzędzia AzCopy. Na przykład: azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>'.

Wytyczne

Zastosuj poniższe wytyczne podczas tworzenia poleceń programu AzCopy.

  • Jeśli używasz autoryzacji Microsoft Entra zarówno dla źródła, jak i miejsca docelowego, oba konta muszą należeć do tej samej dzierżawy firmy Microsoft Entra.

  • Klient musi mieć dostęp do sieci do kont przechowywania źródłowego i docelowego.

    Aby dowiedzieć się, jak skonfigurować ustawienia sieci dla każdego konta usługi Storage, zobacz Konfigurowanie zapór i sieci wirtualnych usługi Azure Storage.

    Aby uzyskać informacje na temat obsługiwanych topologii sieci podczas kopiowania między kontami, sprawdź Kopiowanie obiektów blob między kontami magazynowymi z ograniczeniem dostępu.

  • Jeśli kopiujesz do konta magazynu obiektów blob blokowych w warstwie Premium, pomiń warstwę dostępu obiektu blob podczas operacji kopiowania, ustawiając parametr s2s-preserve-access-tier na false (na przykład: --s2s-preserve-access-tier=false). Konta usługi BlobStorage w warstwie Premium nie obsługują warstw dostępu.

  • Przepływność operacji kopiowania można zwiększyć, ustawiając wartość zmiennej środowiskowej AZCOPY_CONCURRENCY_VALUE . Aby dowiedzieć się więcej, zobacz Zwiększanie współbieżności.

  • Jeśli źródłowe obiekty blob mają tagi indeksu i chcesz zachować te tagi, należy ponownie zastosować je do docelowych obiektów blob. Aby uzyskać informacje o tym, jak ustawić tagi indeksu, zapoznaj się z sekcją Kopiowanie obiektów blob do innego konta magazynu przy użyciu tagów indeksu w tym artykule.

  • Podczas kopiowania obiektów blob między kontami magazynu program AzCopy konwertuje wielkie litery w nazwach metadanych na małe litery. To zachowanie jest zgodne ze specyfikacjami protokołu HTTP.

Kopiowanie obiektu blob

Skopiuj obiekt blob do innego konta magazynu za pomocą polecenia azcopy copy.

Wskazówka

W tym przykładzie argumenty ścieżki ujęto w pojedyncze cudzysłowy (''). 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 ('').

Składnia

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>'

Przykład

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myTextFile.txt'

Przykład (punkty końcowe usługi Data Lake Storage)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer/myTextFile.txt'

Operacja kopiowania jest synchroniczna. Gdy polecenie zakończy działanie, oznacza to, że wszystkie pliki zostały skopiowane.

Kopiowanie katalogu

Skopiuj katalog do innego konta magazynowego za pomocą polecenia azcopy copy.

Wskazówka

W tym przykładzie argumenty ścieżki ujęto w pojedyncze cudzysłowy (''). 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 ('').

Składnia

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<directory-path>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

Przykład

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

Przykład (punkty końcowe usługi Data Lake Storage)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

Operacja kopiowania jest synchroniczna. Po zakończeniu wykonywania polecenia, wszystkie pliki są kopiowane.

Kopiowanie kontenera

Skopiuj kontener do innego konta magazynu danych za pomocą polecenia azcopy copy.

Wskazówka

W tym przykładzie argumenty ścieżki ujęto w pojedyncze cudzysłowy (''). 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 ('').

Składnia

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

Przykład

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

Przykład (punkty końcowe usługi Data Lake Storage)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

Operacja kopiowania jest synchroniczna. Po zakończeniu wykonywania polecenia, wszystkie pliki są kopiowane.

Kopiuj kontenery, katalogi i bloby

Skopiuj wszystkie kontenery, katalogi i obiekty blob do innego konta magazynowego za pomocą polecenia azcopy copy.

Wskazówka

W tym przykładzie argumenty ścieżki ujęto w pojedyncze cudzysłowy (''). 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 ('').

Składnia

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/' --recursive

Przykład

azcopy copy 'https://mysourceaccount.blob.core.windows.net/' 'https://mydestinationaccount.blob.core.windows.net' --recursive

Przykład (punkty końcowe usługi Data Lake Storage)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/' 'https://mydestinationaccount.dfs.core.windows.net' --recursive

Operacja kopiowania jest synchroniczna. Gdy polecenie zakończy działanie, oznacza to, że wszystkie pliki zostały skopiowane.

Kopiowanie obiektów blob i dodawanie tagów indeksowych

Skopiuj obiekty blob na inne konto magazynowania i dodaj tagi indeksu obiektu blob do docelowego obiektu blob.

Jeśli używasz autoryzacji Microsoft Entra, przypisz rolę Właściciela danych obiektu blob Storage do podmiotu zabezpieczeń lub przyznaj mu uprawnienia do Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/writeoperacji dostawcy zasobów Azure za pośrednictwem niestandardowej roli Azure. Jeśli używasz tokenu sygnatury dostępu współdzielonego (SAS), token musi zapewnić dostęp do tagów obiektu blob za pośrednictwem uprawnienia sygnatury dostępu współdzielonego t .

Aby dodać tagi, użyj opcji --blob-tags z zakodowaną w adresie URL parą klucz-wartość.

Aby na przykład dodać klucz my tag i wartość my tag value, dodaj --blob-tags='my%20tag=my%20tag%20value' do parametru docelowego.

Oddzielaj wiele tagów indeksu znakiem ampersand (&). Jeśli na przykład chcesz dodać klucz my second tag i wartość my second tag value, kompletny ciąg opcji to --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'.

W poniższych przykładach pokazano, jak używać --blob-tags opcji.

Wskazówka

Te przykłady otaczają argumenty ścieżki pojedynczymi cudzysłowymi (""). 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 ('').

Przykład obiektu blob


azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myTextFile.txt' --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Przykład katalogu

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Przykład kontenera

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Przykład konta

azcopy copy 'https://mysourceaccount.blob.core.windows.net/' 'https://mydestinationaccount.blob.core.windows.net' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Operacja kopiowania jest synchroniczna. Po zakończeniu wykonywania polecenia, wszystkie pliki są kopiowane.

Uwaga

Jeśli określisz katalog, kontener lub konto dla źródła, wszystkie obiekty blob skopiowane do miejsca docelowego mają te same tagi, które zostały określone w poleceniu .

Kopiowanie z opcjonalnymi flagami

Operację kopiowania można dostosować przy użyciu opcjonalnych flag. Oto kilka przykładów.

Scenariusz Flaga
Skopiuj obiekty blob jako blokowe, stronicowe lub uzupełnialne obiekty blob. --blob-type=[BlockBlob|PageBlob|AppendBlob]
Skopiuj do określonej warstwy dostępu (np. warstwy archiwum). --block-blob-tier=[None|Gorąca|Chłodna|Archiwum]
Automatycznie dekompresuj pliki. --decompress=[gzip|deflate]

Aby uzyskać pełną listę, zobacz opcje.

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. Ten parametr pomaga narzędziu AzCopy zrozumieć kontekst transferu i odpowiednio zoptymalizować.

Wartość FromTo Description
BlobBlob Kopiowanie między dwiema lokalizacjami usługi Azure Blob Storage
BlobBlobFS Kopiowanie z usługi Azure Blob Storage do usługi Azure Data Lake Gen2 (BlobFS)
BlobFSBlob Kopiowanie z usługi Azure Data Lake Gen2 (BlobFS) do usługi Azure Blob Storage
BlobFSBlobFS Kopiowanie między dwiema lokalizacjami usługi Azure Data Lake Gen2 (BlobFS)
BlobFSFile Kopiowanie z usługi Azure Data Lake Gen2 (BlobFS) do usługi Azure File Storage
BlobFile Kopiowanie z usługi Azure Blob Storage do usługi Azure File Storage
FileBlob Kopiowanie z usługi Azure File Storage do usługi Azure Blob Storage
FileBlobFS Kopiowanie z usługi Azure File Storage do usługi Azure Data Lake Gen2 (BlobFS)

Następne 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: