PowerShell ile Dosya Yedekleme

robocopy

Herkese merhaba, msHOWTO üzerinde ilk makalemde sizlere basit bir yöntem olan powershell ile dosya yedekleme işlemi ve  task schudele ile düzenli hale nasıl getiririz yedekleme sürecimizi nasıl takip ederiz bunları anlatacağım.

Komut satırından aslında tanıdığımız robocopy komutunu kullanarak bu işlemi gerçekleştiriyorum.

Robocopy.exe kaynak ve hedef lokasyonları belirleyip belli parametreler ile dosyaların kopyalanmasını sağlıyorum. Şu günlerde artık hemen hemen her kurum ve kuruluşta Microsoft backup yada 3rd party backup yazılımları kullanılsa da kısa vadeli yada operasyonel olarak hızlı aksiyon almak isteyen arkadaşlar için faydalı olacaktır.

Basit bir robocopy komutu ile işlemlerime başlıyorum.

robocopy.exe <Yedek Alınmak İstenen Klasor Dizini> <Yedekleme Yapılacak Klasör Dizini> /mir /mt:90 /r:3 /w:3 /np /ts /bytes /xd > c:\log.txt

Kullandığım parametreleri size anlatmak isterim.

/mir Mirror mode olarak kullan
/mt:90 Farklı bitiş zamanlarında sonuçlanan maksimum 90 işlem sayısı (değeri dosya sayısına göre düzenleyebilirsiniz) /r:3 Dosya kopyalama işlemini en fazla 3 kere tekrarla, (değeri değiştirebilirsiniz.)
/w:3 Dosya kopyalama işlemi sırasında tekrar denenecekse 3 sn bekle (değeri değiştirebilirsiniz.)
/np İşlem yoksa gösterme.
/ts Kaynak dosyanın zaman bilgilerini ekle.
/bytes Hesaplama için bayt cinsinden işlem yap.
/xd exculude tanımlamasını bu parametreye yapabilirsiniz. Örneğin “$ exclude” şeklinde.  > c:\log.text export log.txt Son olarak log çıktısını C: dizinine txt olarak ver

Dosya kopyalama komutumuz hazır. Sırada bunu yeni bir task  Schedule oluşturarak periyodik hale getirmeye geldi.

New-ScheduledTaskAction komutu ile powershell çalıştırıp yukarıda yazdığımız komutu çalıştıracak task oluşturuyorum.

New-ScheduledTaskTrigger komut ile de bu taskımızın çalışma periyodunu belirliyoruz.

Örneğin:  

New-ScheduledTaskAction -Execute “PowerShell.exe” komutu ile taskımı oluşturuyorum.

New-ScheduledTaskTrigger -At 10:00am –Daily komutu ile de taskımın çalışma zamanını belirliyorum.

Register-ScheduledTask -TaskName “test” taskımında adını belirliyerek register ediyorum.

Buraya kadar aslında hepimizin bildiği süreçler bu komutları bir araya getirerek PowerShell ile basit bir script oluşturuyorum.

$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily $Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily $User= "NT AUTHORITY\SYSTEM" $Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "robocopy.exe C:\a C:\b /mir /mt:90 /r:3 /w:3 /np /ts /bytes /xd > c:\log.txt" Register-ScheduledTask -TaskName "test" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force

 

Uygulama ekran görüntüleri:

Resim-1

Resim-2

Uygulaması gayet basit yeri geldiğinde can kurtaracak bir çözümdür. Dosyaları restore etmek istediğinizde dizinlerin yerini değiştirip robocopy komutunu çalıştırmanız işinizi görecektir.

robocopy.exe < Yedekleme Yapılan Klasör Dizin> <Recovery Yapılacak Dizin> /mir /mt:90 /r:3 /w:3 /np /ts /bytes /xd > c:\log.txt

Robocopy ile aslında çok daha fazla çözüm sağlayabilirsiniz. Örneğin DFS yapısı kurgulamak yerine yine robocopy ile iki web sunucunuz içerisinde ki FTP verilerini belirlediğiniz periyotlar yada manual olarak bu komut dizinleri ile gerçekleştirebilirsiniz.

Umarım sizler için faydalı olmuştur. PowerShell kullanarak basit çözümler oluşturma ile ilgili yazılarıma devam edeceğim. Bir sonraki yazımda görüşmek üzere…

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar
www.mshowto.org

TAGs: powershell, backup, recovery, robocopy, mshowto,

 

 

 

 

 

 

Yazı gezinmesi

Mobil sürümden çık