7zip ile klasörü otomatik yedekleme

7zip ile klasörü otomatik yedekleme

7zip ile klasörü otomatik yedekleme

Merhaba,

Bu yazımda size 7zip ile klasörü otomatik yedekleme konusunda kısa bir batch dosyası örneği göstereceğim.  7-zip sıkıştırma programını birçoğunuz duymuşsunuzdur. Duymayanlar için hemen bahsedelim. 7-zip winrar ve winzip’ten farklı olarak opensource olarak geliştirilir, kendine ait 7z dosya formatına sahiptir. 7z dosya formatı ile ilgili detaylı bilgiyi internetten bulabilirsiniz.

7-zip in bizi ilgilendiren versiyonu, komut satırı versiyonunu. Bu versiyonu indirip batch dosya oluşturup windowsta otomatik yedekleme nasıl yapılır ona değineceğiz. Öncelikle http://www.7-zip.org/download.html adresinden zip versiyonu indiriyoruz. İndirdiğimiz dosyayı bir klasöre açalım. Klasörde 7za.exe dosyasını göreceksiniz. Şimdi bir not defteri açalım, ya da istediğiniz bir text editörü açabilirsiniz. Açtığınız editörde yazacağımız satırları aşağıda açıklayacağım.

 

@echo off
title otomatik_yedekleme_islemi

@echo off ile komut satırında bulunduğumuz dizini gösteren özelliği kapatıyoruz ve title komut satırı penceresinin başlığını değiştiriyoruz. Gerekli bir adım değil, tamamen keyfi.

set source="C:\yedeklenecek_klasor_1\"
set cache="D:\yedeklenecek_klasor_1_cache\"
set zipfile="D:\yedekler\yedeklenece_klasor_1\yedek_dosyasi_%date:~-4,4%%date:~-7,2%%date:~-10,2%.zip"

set komutu ile yedekleyeceğimiz klasörü, cache klasörü ve yedeklenecek dosyanın adını değişkene atıyoruz. Burada cache olayını yapmak zorunda değilsiniz. Ama eğer yedeklenecek klasör sürekli güncellenen ve kullanılan bir klasörse ben (yedek alırken sorun çıkmaması adına) yedek için bir cache klasör oluşturup o anki veriyi cache klasöre kopyalıyorum. Yedek dosyamı da cache klasör üzerinden alıyorum.

Burada dosyanın içindeki %date:~-4,4% kısmına hızlıca değinelim. %date% dos’un yerleşik değişkenidir. konsola echo %date% yazarsanız size “Cum 21.11.2014″ böyle bir tarih verir. Bize cuma gününü işaret eden cum kısaltmasını önde gösteriliyor ama stringi kesmeye başladığımızda aslında o arkada duruyor, sanıyorum ki Amerikan tarih formatından dolayıdır. Misal “21.11.2014 Cum”.

Buradaki tilde(~) işareti modifierı, (-) işareti ise sondan kesmeye başlayacağımızı ifade ediyor. (+) olsaydı date değişkeninin baş kısmından kesmeye başlayacaktı. Sonuç olarak ben %date:~-4,4% ile başlayarak 2014 ü almış oldum. Devam ediyoruz.

rd /s /q %cache%

Eğer daha önceden cache klasörümüz varsa sorgusuz sualsiz otomatik olarak silmek için rd komutuna parametrelerini verip cache değişkeninin işaret ettiği klasörü sildiriyoruz.

robocopy %source% %cache% /COPYALL /E

robocopy, yerleşik bir windows uygulamasıdır. copy komutundan daha yeteneklidir, detaylara girmiyoruz. Dileyen bu adresten inceleyebilir.

echo Kaynak klasor : %source%
echo Cache klasor : %cache%
echo Kaynak klasorden cache klasorune kopyalama tamamlandi.
echo ziplenen dosya : %zipfile%

Echo komutu ile robocopy işleminin sonucunu ve ziplenecek dosyanın adresini yazdırıyoruz. Ben bu işlemi sunucu üzerinde gece yarısı çalıştırdığım için genelde işlem yapılırken haliyle uyuyor oluyorum ve sabah sonuçlarını bu uyarılardan izliyorum. Tek yedek alacaksanız sorun olmaz ama yedek işleminin sayısı arttıkça dosyalar ve klasörler kafa karıştırabiliyor.

7Za a %zipfile% %cache%

Asıl sıkıştırma işlemini yapan komut, indirdiğimiz 7za dosyası burada devreye giriyor ve %cache% klasörünü %zipfile% olarak yedekliyor.

#echo zip tamamlandi
#echo Temp klasorunu silmek icin tusa basin....
#PAUSE

Burada bir üstteki echolardan farklı olarak satır başlarında # işareti var. Bu satırı commentliyor, yani çalıştırma, es geç anlamına geliyor. Dilerseniz silebilirsiniz, ilk iki satır zaten keyfinize kalmış, işlem bittikten sonra ekranda mesaj bırakmak istiyorsanız bu şekilde kullanabilirsiniz. En sondaki Pause komutu ise konsolda duraklama işlemi yapar. Eğer Pause komutu gelmişse siz bir tuşa basana kadar işlem duraklatılır. Başındaki # kaldırırsanız siz bir tuşa basmadan bir alttaki rd komutu çalışmaz ancak siz bastıktan sonra çalışır.

rd /s /q %cache%

Son olarak oluşturduğumuz cache klasörünü siliyoruz, bu benim için sunucuda yer gereksinimi ile alakalı bir durum. Boşuna cache için dosya tutmak istemiyorum.

echo silme islemi bitti
echo Yedekleme tamamlandi...
PAUSE

Tekrardan Pause yolluyoruz ve işlem bitiyor. Burada kullanmazsanız sıkıştırma (yedekleme) işlemi bittikten sonra konsol kendiliğinden kapanacaktır. Buraya kadar herşey tamam, bu hazırladığımız dosyayı 7za.exe dosyası ile aynı yere. ******.bat olarak kaydediyoruz. Daha sonra istediğimiz zaman bu dosyayı çift tıklayarak çalıştırabiliriz ya da Windows un zamanlanmış görevler özelliği sayesinde istediğiniz zamanlarda çalıştırabilirsiniz. Bir ayrıntı daha 7za.exe dosyasını “windows” ya da “program files” ya da windows un path tanımlı istediğiniz bir klasörüne atarsanız oluşturduğunuz otomatik yedekleme bat dosyasını her yerden çalıştırabilirsiniz.

  • Mustafa Polat

    Bu komutlara şifreli zip yapma ekleyebiliyormuyuz acaba.
    Yani şifreli olsun oluşturulan zip.