27 Ocak 2017 Cuma

Tam teşekküllü yedekleme script'i (lokal, rar, full, usb, bulut)

Merhaba,

.bat dosya'yı Zamanlanmış görevler ile çalıştırarak yedekleme işimizi günde birkaç kere olmak üzere otomatikleştirebiliriz. Böylece emek verdiğimiz işleri kaybetme riskimizi azaltmış oluruz.

Daha önce yayınlamış olduğum yedekleme scriptinin düzenlenmiş ve geliştirilmiş halidir.

Düzeltme ve Eklemeler :

1- SQL YEDEKLEME: Daha önce sql yedeğini alan script devamlı aynı dosyaya aldığı için dosya zamanla büyüyor ve yedek boyutu da artıyordu. Burada
sql yedekleme dosyasını rar'layıp, kopyaladıktan sonra siliyoruz.

2- RAR YEDEKLEME:
Rarlama şifremizi parametre olarak veriyoruz.

3- BULUT YEDEKLEME:
Lokal diskimize rar'ladıktan sonra bu rar dosyayı onedrive klasörümüze kopyalıyoruz. (Ya da diğer bir bulut disk klasörümüze)
Buradaki klasör bizim bulut diskimizin lokal kopyası buraya attığımız dosya ayarlar farklı değilse otomatik buluta senkronize olacaktır.
Dosya yolunu kendi bulut disk klasörünüz olarak değiştirebilirsiniz genelde user profilinde oluyor...
Hata olmasın diye burada yazılan klasör yolu kontrol ediliyor. Varsa kopyalanıyor...

4- USB YEDEKLEME:
Bilgisayarımıza taktığımızda hangi sürücü harfini aldığını bildiğimiz bir USB diskimiz var ise, diyelimki L: harfi olsun
scriptin yanlışlıkla aynı harfte olabilecek başka bir diske kopyalama yapmaması için disk üzerinde L:\ProjeYedek\check.txt isminde bir
klasör ve dosya oluşturalım. Script bu dosya varlığını kontrol edecek ve ona göre buraya oluşmuş olan rar dosyasını kopyalayacaktır. Yoksa hata
vermeden devam edecektir.

5- ROBOCOPY YEDEK: belirlemiş olduğumuz yedeklenecek klasörümüzün, hedef yerel diskimize (yerel disk harfine map edilmiş bulutta olabilir) Full
yedek olarak tek tek kopyalanması işlemi. Burada kullanılan robocopy parametreleri ile hedef diskteki dosyalar ile kaynaktakiler senkron edilir.
değişenler kopyalanır. kaynakta silinmiş olanlar hedefte de silinir!... Bu parametreler sizin ihtiyacınıza göre değiştirilebilir.Hatta hedefte
tarihe göre bir klasör oluşturup o günün yedeği olur. Her güne ait bir yedek disk boyutunuza bağlı olarak daha güzel olacaktır.

Senaryo:

Çalışma alanım : c:\projelerim
Yedekleme Alanlarım:
SQL geçici yedekleme klasörü : c:\projelerim\_db_yedek\
Rar lokal yedekleme klasörü z:\yedeklerim\RAR_YEDEK
Rar bulut kopyası : C:\Users\%username%\OneDrive\OneDriveProjeFolder
Varsayılan USB klasörü L:\ProjeYedek\ kontrol mekanizması olarak, bunun içinde bir adet check.txt isminde dosya olmalı...
Robocopy Full yedekleme klasörü z:\yedeklerim\FULL_YEDEK



ve scriptimiz :



@ECHO OFF

set tarih=%date: =%
set tarih=%tarih:.=_%
echo %tarih%
ECHO backingup db...

sqlcmd -E -S .\sqlexpress -q "exit(BACKUP DATABASE [PROJEDB] TO DISK = N'c:\projelerim\_db_yedek\ProjeDB_%tarih%.bak' WITH DESCRIPTION = N'ProjeDB Full Backup', RETAINDAYS = 31, NOFORMAT, NOINIT, MEDIANAME = N'RSTBCKFULL', NAME = N'ProjeDB-Full Database Backup', NOSKIP, NOREWIND, NOUNLOAD, STATS = 10)"

ECHO archiving files...
set password=K@mplexP@ssw0rd4Cloud

C:\PROGRA~1\WinRAR\rar a -r -x*.bat -x*.exe -x*.mdf -x*.ldf -hp%password% -m5 Z:\yedeklerim\RAR_YEDEK\yedeklerim_%tarih%.rar C:\projelerim\*.*

if EXIST C:\Users\%username%\OneDrive\OneDriveProjeFolder (
ECHO coppying to onedrive
robocopy.exe Z:\yedeklerim\RAR_YEDEK C:\Users\%username%\OneDrive\OneDriveProjeFolder yedeklerim_%tarih%.rar /DCOPY:T /NP /R:0 /COPY:DAT /LOG:c:\OneDrive_yedekleme_Log_%tarih%.txt
)


IF EXIST L:\ProjeYedek\check.txt (
echo USB Exists coppying to I:\P\....

robocopy.exe Z:\yedeklerim\RAR_YEDEK L:\ProjeYedek yedeklerim_%tarih%.rar /DCOPY:T /NP /R:0 /COPY:DAT /LOG:c:\USB_Yedekleme_Log_%tarih%.txt

) ELSE (
echo usb is not detected.. skip usb backup
)


ECHO Copying files to backup location...
robocopy.exe "c:\projelerim" "Z:\yedeklerim\FULL_YEDEK" /CREATE /E /DCOPY:T /NP /R:0 /COPY:DAT /LOG+:c:\robocopy_yedek_log_%tarih%.txt /XF "*.exe" "*.mdf" "*.ldf"
robocopy.exe "c:\projelerim" "Z:\yedeklerim\FULL_YEDEK" /MIR /DCOPY:T /NP /R:0 /COPY:DAT /LOG+:c:\robocopy_yedek_log_%tarih%.txt /XF "*.exe" "*.mdf" "*.ldf"

if exist c:\projelerim\_db_yedek\ProjeDB_%tarih%.bak (
echo deleting db backup from source...
del c:\projelerim\_db_yedek\ProjeDB_%tarih%.bak
)

ECHO Finished..

Hiç yorum yok: