5

Verileri Blob Storage OnStart'tan çekmek için kullandığım bir işçi rolüm var. Şu anda bir test.txt dosyası yükleyip yerel bir dizine yükleyerek bunu test ediyorum. Bu iyi çalışıyor.Blob Depolama Alanı klasör nasıl yüklenir?

Şimdi blob depolama alanına bir klasör yüklemek istiyorum. Bu klasör, toplu komut dosyasının yanı sıra toplu komut dosyasının çağırdığı birkaç yürütülebilir dosyayı içerir.

Bunu gerçekleştirmenin önerilen yolu nedir? Klasörün sıkıştırılması ve * .zip dosyasının yüklenmesi çok kolay olurdu ... ama sonra, işçinin rolünü yerine getirmesi için yerel olarak yüklediğimde, herhangi bir üçüncü parti kütüphanesi olmadan nasıl sıkıştırırdım?

Daha iyi seçenekler varsa, herhangi bir öneriye açığım. Yardımınız için teşekkürler - bu topluluk benim için çok büyük bir yardımcı oldu :)

+0

Neden tek tek dosyaları yüklemiyorsunuz? Depolama ucuzdur. – Paparazzi

+0

Ayrıca, yüzlerce dosya ve diğer klasörleri içeren bir proje klasörü olduğunu not etmeliydim. Klasörleri, dosya adlarını vb. Saklarken kapsayıcının tüm içeriğini indirebilmek istiyorum. Bu mümkün mü? – RobVious

+0

Lütfen çekme verilerini aşağıya doğru tanımlayın. Çalışan rolü için bunlara ihtiyacınız var mı yoksa bu dosyaları istemciye mi indirmelisiniz? Veya başka bir şey? – Paparazzi

cevap

2

İki yaklaşımdan yararlanabilirsiniz: Tek dosya (örn. Zip) veya çoklu dosya (her dosya kendi blobunda)). İşte o almak benim, Ayıklama hakkında daha sonra bir not:

Tek zip dosyası

Bu bir apache yüklemek gibi dosyaların bir gruplandırılmış kümesi korumak için çok kolay bir yolu veya statik kaynakların bir dizi . Bir blobtan yerel depoya yükleme son derece basittir. Ve bir zip dosyası, yuvalanmış dizinlerin herhangi bir düzeyde işleyebilir.

Dezavantaj: Tek bir dosyayı güncellemek için yeni bir zip oluşturmanız gerekir; Sadece bir değiştirilmiş varlık yüklemenin yolu yoktur. Diğer dosyalar hakkında endişelenmeden hızla tek tek dosyaları güncelleştirmek gerektiğinde

bireysel lekeler

Ayrı lekeler mükemmeldir. Ayrıca, bu bloblara kamuya açık ya da (Paylaşılan Erişim İmzası ile) web sayfalarındaki özel ve enbed bağlantılarla doğrudan bağlantı kurabilirsiniz. Bunun için, örneğin, here cevabına ve ayrıca Sandrino'nun bilgilerine bakın. Oh, ve eğer blobları CDN ile göstermeyi planlıyorsanız, bunların tek tek lekeler içinde olması gerekir.

Dezavantaj: İç içe dizinlere mutlak eşleme yok. Blob depolama hesabı \ container \ blob ile düzenlenir. Siz iç içe geçmiş klasörleri simüle ederken, tek tek dosyaları eşleştirmek için bazı çalışmalar yapmanız gerekir. Tek tek lekeleri indirmek için, kabı yakalamanız ve tek tek blob adlarını numaralandırmak için ListBlobs() numaralı telefonu çağırmanız gerekir.

Eclipse projesini halletmek nasıl

kullanmak önemsiz olan bir vbs komut dosyası sağlar. Bir Visual Studio projesinden (veya gerçekten herhangi bir kod dosyasından), yüklemek ve yüklemek çok kolay, 7zip gibi bir şey indirmeyi düşünüyor olacağım. Daha sonra, zip deposundan yerel depolamaya (uygun klasörde) indirin ve 7zip'e aktarın.

Umarım bu, doğru kararı vermeniz için size rehberlik eder. bana olsaydı ve bir yapı (tomcat gibi) saklıyordum, tüm dizin yapısını bir zipte tutardım. Bu bana sadece tek bir dosyayı değiştirerek bir şeyleri kırmadığımı garanti ediyor. Ve ... Birden çok fermuarla (ayrı bloblarda), tomcat sürümlerinin koşu geçmişini kolayca tutabilirim.

+0

Çok havalı. Sanırım o zaman her şeyi sıkıştırmaya çalışacağım. Bu, kapsayıcıda üç dosyaya ihtiyacım olacağı anlamına gelir: yapı arşivi, 7zip yürütülebilir dosya ve 7zip'i yüklemek için çalışan rolünü söyleyen bir toplu iş komut dosyası, sıkıştırmayı aç ve sonra da dağıtımı çalıştır. Bu doğru mu geliyor? Şerefe :) – RobVious

+0

Doğru hakkında geliyor. 7zip mutlaka aynı kapsayıcıya gitmek zorunda değildir. İstediğiniz kadar kapsayıcıya sahip olun. Toplu iş komut dosyası, Windows Azure dağıtımınızın bir parçası olmalıdır. 7zip bir MSI sağladığından, bu bir başlangıç ​​betiğinden yürütülebilir. Yüklemek için 7zip'i yerel depolama birimine indirmeniz gerekiyor. Halka açık bir blob ile kolayca yapılabilir veya doğrudan kaynaktan kaynak indirin. Özel bloğa girerseniz, anahtarlara erişmenin veya bloğa veya konteynere paylaşılan erişim imzasına sahip olmanın bir yoluna ihtiyacınız olacaktır. Şimdilik, basit başlıyorum ve 7zip msi'yi saklamak için kamu blobuna gidecektim. –

1

AZCOPY aracının bırakılmasıyla bunu tek bir satırda yapabilirsiniz. Ayrıntılar here.

Cd "C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy" 

.\AzCopy /Source:C:\Users\folderName\ ` 
/Dest:https://storageAccountName.blob.core.windows.net/storageContainerName ` 
/DestKey:yourStorageAccountKey /S