AzCopy kullanarak Amazon S3'ten Azure Depolama'a veri kopyalama

AzCopy, bir depolama hesabına iki yönlü blob veya dosya kopyalama işlemi gerçekleştirmenizi sağlayan bir komut satırı yardımcı programıdır. Bu makale, AzCopy kullanarak Amazon Web Services (AWS) S3'teki nesneleri, dizinleri ve demetleri Azure Blob Depolama kopyalamanıza yardımcı olur.

Not

AzCopy, AWS tarafından tanımlanan standart sanal barındırılan stil veya yol stili URL'leri destekler. Örneğin: https://bucket.s3.amazonaws.com veya https://s3.amazonaws.com/bucket.

Yetkilendirme kimlik bilgilerini nasıl sağlayacağınızı seçin

  • Azure Depolama yetkilendirmek için Microsoft Entra Id veya Paylaşılan Erişim İmzası (SAS) belirtecini kullanın.

  • AWS S3 ile yetkilendirmek için AWS erişim anahtarı ve gizli erişim anahtarı kullanın.

Azure Depolama ile yetkilendirme

AzCopy'yi indirmek için AzCopy'yi kullanmaya başlama makalesine bakın ve depolama hizmetine yetkilendirme kimlik bilgilerini nasıl sağlayacağınızı seçin.

Not

Bu makaledeki örneklerde, komutunu kullanarak AzCopy login kimliğinizin kimliğini doğruladığınız varsayılır. AzCopy daha sonra Blob depolamadaki verilere erişimi yetkilendirmek için Microsoft Entra hesabınızı kullanır.

Blob verilerine erişim yetkisi vermek için SAS belirteci kullanmayı tercih ediyorsanız, bu belirteci her AzCopy komutundaki kaynak URL'sine ekleyebilirsiniz.

Örneğin: https://mystorageaccount.blob.core.windows.net/mycontainer?<SAS-token>.

AWS S3 ile yetkilendirme

AWS erişim anahtarınızı ve gizli dizi erişim anahtarınızı toplayın ve ardından şu ortam değişkenlerini ayarlayın:

İşletim sistemi Komut
Windows Powershell:$env:AWS_ACCESS_KEY_ID=<access-key>
$env:AWS_SECRET_ACCESS_KEY=<secret-access-key>
Komut isteminde şunu kullanın: set AWS_ACCESS_KEY_ID=<access-key>
set AWS_SECRET_ACCESS_KEY=<secret-access-key>
Linux export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>
macOS export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>

Bu kimlik bilgileri, nesneleri kopyalamak için kullanılan önceden imzalı URL'ler oluşturmak için kullanılır.

Nesneleri, dizinleri ve demetleri kopyalama

AzCopy, Url'den Yerleştir API'sini kullandığından veriler doğrudan AWS S3 ve depolama sunucuları arasında kopyalanır. Bu kopyalama işlemleri bilgisayarınızın ağ bant genişliğini kullanmaz.

İpucu

Bu bölümdeki örnekler yol bağımsız değişkenlerini tek tırnak ('') içine almaktadır. Windows Komut Kabuğu (cmd.exe) dışında tüm komut kabuklarında tek tırnak işareti kullanın. Windows Komut Kabuğu (cmd.exe) kullanıyorsanız, yol bağımsız değişkenlerini tek tırnak ('') yerine çift tırnak ("") içine alın.

Bu örnekler hiyerarşik ad alanına sahip hesaplarla da çalışır. Data Lake Depolama'da çoklu protokol erişimi, bu hesaplarda aynı URL söz dizimini (blob.core.windows.net) kullanmanıza olanak tanır.

Nesne kopyalama

Hiyerarşik ad alanına sahip hesaplar için aynı URL söz dizimini (blob.core.windows.net) kullanın.

Söz dizimi

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

Örnek

azcopy copy 'https://s3.amazonaws.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'

Not

Bu makaledeki örneklerde AWS S3 demetleri için yol stili URL'ler kullanılır (Örneğin: http://s3.amazonaws.com/<bucket-name>).

Sanal barındırılan stil URL'leri de kullanabilirsiniz (Örneğin: http://bucket.s3.amazonaws.com).

Demetlerin sanal barındırması hakkında daha fazla bilgi edinmek için bkz . Sanal Demet Barındırma.

Bir dizini kopyalama

Hiyerarşik ad alanına sahip hesaplar için aynı URL söz dizimini (blob.core.windows.net) kullanın.

Söz dizimi

azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true

Örnek

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

Not

Bu örnek, tüm alt dizinlerdeki --recursive dosyaları kopyalamak için bayrağını ekler.

Dizinin içeriğini kopyalama

Bir dizinin içeriğini, içeren dizinin kendisini kopyalamadan joker karakter simgesini (*) kullanarak kopyalayabilirsiniz.

Söz dizimi

azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>/*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true

Örnek

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

Demet kopyalama

Hiyerarşik ad alanına sahip hesaplar için aynı URL söz dizimini (blob.core.windows.net) kullanın.

Söz dizimi

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

Örnek

azcopy copy 'https://s3.amazonaws.com/mybucket' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive=true

Tüm bölgelerdeki tüm demetleri kopyalama

Hiyerarşik ad alanına sahip hesaplar için aynı URL söz dizimini (blob.core.windows.net) kullanın.

Söz dizimi

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

Örnek

azcopy copy 'https://s3.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

Belirli bir S3 bölgesindeki tüm demetleri kopyalama

Hiyerarşik ad alanına sahip hesaplar için aynı URL söz dizimini (blob.core.windows.net) kullanın.

Söz dizimi

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

Örnek

azcopy copy 'https://s3-rds.eu-north-1.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

Nesne adlandırma kurallarındaki farkları işleme

AWS S3,Azure blob kapsayıcılarına kıyasla demet adları için farklı adlandırma kuralları kümesine sahiptir. Burada bunları okuyabilirsiniz. Bir grup demeti bir Azure depolama hesabına kopyalamayı seçerseniz, adlandırma farklılıkları nedeniyle kopyalama işlemi başarısız olabilir.

AzCopy ortaya çıkabilecek en yaygın iki sorunu ele alır; ardışık kısa çizgi içeren dönemler ve demetler içeren demetler. AWS S3 demet adları nokta ve ardışık kısa çizgi içerebilir, ancak Azure'daki bir kapsayıcı içeremez. AzCopy, dönemleri kısa çizgilerle ve ardışık kısa çizgilerle, ardışık kısa çizgi sayısını temsil eden bir sayıyla değiştirir (Örneğin: adlı my----bucket bir demet olur my-4-bucket.

Ayrıca, AzCopy dosyaların üzerine kopyalanırken, adlandırma çakışmalarını denetler ve bunları çözmeye çalışır. Örneğin, adı bucket-name ve bucket.nameolan demetler varsa, AzCopy ilk bucket-name olarak ve sonra bucket-name-2öğesine adlı bucket.name bir demet çözümler.

Nesne meta verilerindeki farkları işleme

AWS S3 ve Azure, nesne anahtarları adlarında farklı karakter kümelerine izin verir. AWS S3'ün kullandığı karakterler hakkında buradan bilgi edinebilirsiniz. Azure tarafında blob nesne anahtarları C# tanımlayıcıları için adlandırma kurallarına uyar.

AzCopy copy komutunun bir parçası olarak, dosyanın meta verilerinin s2s-handle-invalid-metadata uyumsuz anahtar adları içerdiği dosyaları nasıl işlemek istediğinizi belirten isteğe bağlı bayrağı için bir değer sağlayabilirsiniz. Aşağıdaki tabloda her bayrak değeri açıklanmaktadır.

Bayrak değeri Açıklama
ExcludeIfInvalid (Varsayılan seçenek) Meta veriler aktarılan nesneye dahil değildir. AzCopy bir uyarı günlüğe kaydeder.
FailIfInvalid Nesneler kopyalanmamıştır. AzCopy bir hatayı günlüğe kaydeder ve bu hatayı aktarım özetinde görünen başarısız sayıya ekler.
RenameIfInvalid AzCopy geçersiz meta veri anahtarını çözümler ve çözümlenen meta veri anahtarı değer çiftini kullanarak nesneyi Azure'a kopyalar. AzCopy'nin nesne anahtarlarını yeniden adlandırmak için tam olarak hangi adımları uyguladığını öğrenmek için aşağıdaki AzCopy nesne anahtarlarını nasıl yeniden adlandırır bölümüne bakın. AzCopy anahtarı yeniden adlandıramazsa nesne kopyalanamaz.

AzCopy nesne anahtarlarını nasıl yeniden adlandırır?

AzCopy şu adımları gerçekleştirir:

  1. Geçersiz karakterleri '_' ile değiştirir.

  2. Dizeyi rename_ yeni geçerli bir anahtarın başına ekler.

    Bu anahtar, özgün meta veri değerini kaydetmek için kullanılır.

  3. Dizeyi rename_key_ yeni geçerli bir anahtarın başına ekler. Bu anahtar, özgün meta veri geçersiz anahtarını kaydetmek için kullanılır. Meta veri anahtarı Blob depolama hizmetinde bir değer olarak korunduğu için azure tarafında meta verileri kurtarmayı denemek için bu anahtarı kullanabilirsiniz.

Sonraki adımlar

Bu makalelerde daha fazla örnek bulabilirsiniz:

Ayarları yapılandırmak, performansı iyileştirmek ve sorunları gidermek için şu makalelere bakın: