Merhaba,
Yedeklerinizi buluta taşımak için alternatif yöntemler var. Örneğin bu bir SQL DB yedeği olsun. Bunlardan bir kaçını şöyle tanımlayabiliriz.
1-Locale yedek alıp bunu Google drive ya da Onedrive tarzı bulut noktalarına taşımak.
Bunun için bu işi manuel yapabilirsiniz ya da senkronizasyon klasörüne yedekleri doğrudan aldığınızda Onedrive ya da Google drive uygulamaları bu senkronizasyonu doğrudan yapar. Ama burada şöyle bir risk var. Senkronize için kullandığınız klasör bir şekilde silinirse buluttaki veriler de gider.
2-Yedeği doğrudan buluta alabilirsiniz. Bunun için Azure blob storage tarzı uygulamalar kullanabilirsiniz. Ancak burada internet bağlantınız hızlı değilse sistem yavaş yedek alacaktır.
3-Yedeği locale alırsınız ama senkronizasyon işini de otonom hale getirirsiniz. Bunun için Google drive ya da one drive apilerini kullanıp powershellde komutlar yazabilirsiniz. Ya da bu makalenin de konusu olan AzCopy komutları ile Azure Blob’a yedek dosyalarınızı otomatik çok kolay bir şekilde olarak atarsınız.
İşte bu makalede bunu anlatıyor olacağım.
Bir önceki makalemde Azure blob storage üzerine doğrudan SQL yedeği almayı anlatmıştım.
O yazımda da Azure blob storage nasıl oluşturulur anlatıyorum. Bu makaleyi okuyanlar aşağıdaki kısımları hızlıca geçerek AzCopy kısmından devam edebilir.
Azure Blob Storage
Şimdi sıfırdan bir Azure blob storage oluşturarak işe başlayalım.
Azure portalda arama ekranına storage yazıyoruz ve storage accounts’u seçiyoruz.
Karşımıza önceden oluşturduğumuz storage account’lar var ise onların listesi geliyor.
Biz Create diyerek yeni bir storage account oluşturacağız.
Burada Resource Group’u defaultta bırakabiliriz. Ayrıca storage account name kısmına bir isim vermemiz gerekiyor. Bu isim size özel olacağı için kendinize göre bir isim verebilirsiniz. Ben backupstorageomer ismini verdim.
Networking kısmını da default değerlerinde bırakıyoruz.
Data protection kısmında bazı parametreler var.Burada days to retain deleted Blobs, containers ve shares kısmında herhangi bir silinme durumunda 7 güne kadar silinen datayı tutabiliyoruz. Burada bu parametreyi değiştirebiliriz.
Create diyerek Storage Account’umuzu oluşturuyoruz.
Deployment işlemi tamamlandı. Şimdi go to resource diyoruz.
Deployment işlemi tamamlandı. Şimdi go to resource diyoruz.
Gelen ekranda containers’a tıklayarak yeni bir container oluşturacağız.
Burada sqlbackup isimli bir container oluşturuyoruz. Public Access level kısmını private olarak seçiyoruz.
Görüldüğü gibi içi boş durumda. Şimdi buraya dosya atacağız.
AZCopy
Bunun için ilk önce AZCopy uygulamasını indiriyoruz. Detaylı bilgi için buraya bakabilirsiniz.
https://docs.microsoft.com/tr-tr/azure/storage/common/storage-use-azcopy-v10
İndirdiğimiz klasörü başka bir klasöre kopyalıyoruz. Örneğin ben c:\AzCopy isimli klasöre kopyaladım.
Azcopy ile c:\test\test.txt dosyasını Azure Blobe’a atmak için aşağıdaki gibi bir komuta ihtiyacımız var.
azcopy copy “c:\test\test.txt ” “https://[account].blob.core.windows.net/[container]/[path/to/blob]”
Görüldüğü gibi Azure Blobe üzerindeki container ımızın bir takım parametrelerine ihtiyacımız var. Bu parametreleri şu şekilde alabiliriz.
Oluşturduğumuz container üzerinde Shared Access Tokens’a tıklıyoruz.
Burada Permissions Read ve Write olmak üzere Generate Tokens and Url butonuna tıklıyoruz.
Şimdi powershell komutumuzu buna göre düzenleyelim.
Formatımız bu şekilde idi.
azcopy copy “c:\test\test.txt ” “https://[account].blob.core.windows.net/[container]/[path/to/blob]”
Komutumuz ise aşağıdaki gibi olacak.
azcopy copy “c:\test\test.txt ” “https://[account].blob.core.windows.net/[container]/[path/to/blob]”
azcopy copy "c:\test\test.txt " "https://backupstorageomer.blob.core.windows.net/sqlbackup?sp=rw&st=2021-08-12T12:32:58Z&se=2021-08-12T20:32:58Z&spr=https&sv=2020-08-04&sr=c&sig=tIdB9ytNR2LOtLtEZ2G4v%2FbMCO5BX3bLnPSlzsXbWzk%3D"
İlk denemede görüldüğü gibi hata aldık. Çünkü azcopy dizininde değiliz.
Cd c:\azcopy diyerek klasör değiştirelim.
Şimdi deneyelim. Görüldüğü gibi yine hata aldık. Bize Azcopy komutunu .\AzCopy olarak kullanmamızı öneriyor. Dediği gibi yapalım.
.\azcopy copy "c:\test\test.txt" "https://backupstorageomer.blob.core.windows.net/sqlbackup/test.txt?sp=racw&st=2021-08-12T12:32:58Z&se=2021-08-12T20:32:58Z&spr=https&sv=2020-08-04&sr=c&sig=EEkpLB1%2B60uXiXYjTxv34d5eoUQj3If%2BEBk%2BaNKg7kw%3D"
Bu kez başarılı.
Şimdi de Azure Blob Container’ımıza bakalım.
Görüldüğü gibi dosya kopyalama işlemi gerçeklemiş.
Bir klasörün tamamını kopyalamak istersek bu kez klasörü yazmamız yeterli. Örneğin elimizde database yedeklerini aldığımız bir klasör olsun. Buradaki tüm dosyaları upload edelim.
.\azcopy copy "c:\DBBackups\*.* " " https://backupstorageomer.blob.core.windows.net/sqlbackup/DBBackups?sp=racw&st=2021-08-12T12:32:58Z&se=2021-08-12T20:32:58Z&spr=https&sv=2020-08-04&sr=c&sig=EEkpLB1%2B60uXiXYjTxv34d5eoUQj3If%2BEBk%2BaNKg7kw%3D"
4 tane dosya Azure Blobe’a kopyalandı.
Azure Blob tarafına baktığımızda klasörün oluşmuş olduğunu görüyoruz.
İçine girince de dosyalarımızı görebiliyoruz.
Azcopy copy komutunda overwrite parametresini false olarak işaretlerseniz sadece olmayan dosyaları içeri atar. Şimdi yeni bir dosya ekleyelim ve klasörü tekrar kopyalamayı ovewrite false parametresi ile çalıştıralım.
Görüldüğü gibi sadece 1 dosya kopyaladı.
Peki birden fazla klasör olsaydı?
O zaman da – -recursive parametresi ile kullanabiliriz. Örneğin DifferentialBackups ve FullBackups olmak üzere iki klasörümüz olsun.
O zaman kullanacağımız komut aşağıdaki gibi olacaktır.
C:\AzCopy> .\azcopy copy "c:\DBBackups\" "https://backupstorageomer.blob.core.windows.net/sqlbackup/DBBackups?sp=racw&st=2021-08-12T12:32:58Z&se=2021-08-12T20:32:58Z&spr=https&sv=2020-08-04&sr=c&sig=EEkpLB1%2B60uXiXYjTxv34d5eoUQj3If%2BEBk%2BaNKg7kw%3D" --overwrite false --recursive
C:\AzCopy> .\azcopy copy “c:\DBBackups\” “https://backupstorageomer.blob.core.windows.net/sqlbackup/DBBackups?sp=racw&st=2021-08-12T12:32:58Z&se=2021-08-12T20:32:58Z&spr=https&sv=2020-08-04&sr=c&sig=EEkpLB1%2B60uXiXYjTxv34d5eoUQj3If%2BEBk%2BaNKg7kw%3D” –overwrite false –recursive
Şimdi overwrite parametresi ile çağırdığımızda hızlı bir şekilde yaptığını görüyoruz.
Burada bu komut bir powershell dosyası olarak kaydedilip zamanlanmış görev olarak tanımlanabilir ve böylece günde birkaç kez tüm yedekleriniz Azure Blobe’a alınabilir.
Umarım faydalı olmuştur.
Başka bir makalede görüşmek dileğiyle.
Sağlıcakla.