Merhaba Arkadaşlar,
Bu yazımda sizlere Windows Azure hesabınızdaki storage’dan diğerine nasıl verileri taşıyacağınızı anlatmaya çalışacağım. Öncelikle yeni azure hesabımızda Storage Account ve Container oluşturuyoruz. Ardından hesap adını ve account name I Windows Azure Portal’dan Storage bölümünden not ediyoruz burayı yazdığımız programımızda kullanacağız. Öncelikle bir console application oluşturalım.
Hemen ardından program.cs dosyamızı açalım ve kodlarımızı yazmaya başlayalim. Ama bunun öncesinde app.config dosyamıza storage connection string’imizi ekleyelim:
1 2 3 4 5 6 7 8 9 10 |
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="StorageConnectionStringSource" value="DefaultEndpointsProtocol=https;AccountName=kaynakkullaniciadiniz;AccountKey=kaynakaccountkeyiniz" /> <add key="StorageConnectionStringTarget" value="DefaultEndpointsProtocol=https;AccountName=hedefaccountadiniz;AccountKey=hedefaccountkeyiniz" /> </appSettings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration> |
Hemen arından program.cs’imize geçelim ve gerekli tanımlamaları yapalım:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.StorageClient; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StorageMover { class Program { //Kaynak Account, Container ve Client Referanslarımız public CloudStorageAccount Source_storageAccount; public CloudBlobClient Source_blobClient; public CloudBlobContainer Source_blobContainer; public CloudBlockBlob Source_blockBlob; //Hedef Account, Container ve Client Referanslarımız public CloudStorageAccount Target_storageAccount; public CloudBlobClient Target_blobClient; public CloudBlobContainer Target_blobContainer; public CloudBlockBlob Target_blockBlob; public void butunDosyalariAktar() { Source_storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionStringSource")); Target_storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionStringTarget")); //Dosyaların Kopyalanması için Gerekli Client'lar Oluşturuluyor Source_blobClient = Source_storageAccount.CreateCloudBlobClient(); Target_blobClient = Target_storageAccount.CreateCloudBlobClient(); //Container Referansları Alınıyor Source_blobContainer = Source_blobClient.GetContainerReference("resimulator"); Target_blobContainer = Target_blobClient.GetContainerReference("resimler"); //Kaynak Container içerisindeki blobları döngü ile listele foreach (var blob in Source_blobContainer.ListBlobs()) { //Kaynak Container'dan blob referansımız alınıyor var sourceBlobReference = Source_blobContainer.GetBlobReference(blob.Uri.AbsoluteUri); //Hedef Container'dan blob referansı oluşturulmak için alınıyor var targetBlobReference = Target_blobContainer.GetBlobReference(sourceBlobReference.Name); //Console'da bilgilendiriyoruz Console.WriteLine("Kopyalama {0}\n den\n{1} aktarılmaktadır", sourceBlobReference.Uri.AbsoluteUri, targetBlobReference.Uri.AbsoluteUri); //Hedef blob referansının stream'i alınmaktadır böylelikle oraya doğru bir yazma hakkımız doğmaktadır. using (Stream targetStream = targetBlobReference.OpenWrite()) { sourceBlobReference.DownloadToStream(targetStream); } } } public Program() { } static void Main(string[] args) { //Fonksiyonumuzu çalıştırıyoruz new Program().butunDosyalariAktar(); } } } |
İşlemler bu kadar, Arkamıza yaslanıyoruz ve dosyalarımızın yüklenmesini bekliyoruz.
Önemli Not: Bu İşlemleri lokal bilgisayarınızda çalıştırmak bayağı uzun sürebilmektedir özellikle dosyalarınız yüksek boyutlarda ise size tavsiyem cloud servisler üzerinde worker’lar çalıştırmak bunun üzerinden dosyaların transferini sağlamak. Bu size ne sağlar peki, yüksek upload hızı ve belki aynı datacenter üzerinde olmanızdan kaynaklı yüksek bir transfer gücü ve zaman tasarrufu.
İleriki yazılarımda worker’lardan elimden geldiğince bahsetmeyi düşünüyorum. Umarım yazım yararlı olmuştur 🙂
Herkese İyi Çalışmalar 🙂