پاک کردن Back Up های قدیمی با استفاده از ابزار Power Shell
همونطور که در پست قبلی قول داده بودم می خوام در این پست نحوه پاک کردن BACK UP های قدیمی را توضیح بدم.
backup های قدیمی فضای قابل توجهی از دیسک ما را اشغال می کنن که این موضوع خوشایند مدیران شبکه و شرپوینت نیست به همین دلیل به دنبال روشی هستیم که هم نسخه پشتیبان کاملی داشته باشیم و در کنار آن از فضای دیسک کمتری استفاده کرده باشیم. همانطور که می دانیم و در پست قبلی توضیح دادم، از ابزار stsadm جهت backup از moss استفاده می کنیم ولیکن در این ابزار قابلیتی جهت پاک کردن backup های قدیمی وجود ندارد به همین دلیل در این سناریو ابتدا توسط ابزار stsadm از moss یک نسخه پشتیبان تهیه کرده و در ادامه آن توسط ابزار Power shell نسخه های پشتیبان قدیمی را پاک می کنیم.
برای انجام این کار مراحل زیر را دنبال می کنیم:
- ابزار power shell به صورت پیش فرض در windows server 2003 وجود ندارد (مایکروسافت این ابزار را درwindows server 2008 قرار داده است) پس می بایست نسخه این ابزار را download و نصب کنیم که لینک آن را براتون گذاشتم :
http://technet.microsoft.com/en-us/scriptcenter/default.aspx
- از طریق command prompt دستور powershell.exe را اجرا کرده تا وارد محیط powershell شویم.
- سپس دستور Set-ExecutionPolicy Unrestricted اجرا میکنیم، به دلیل sign نبودن script ی که اجرا میکنیم از این command استفاده می کنیم ، این دستور این امکان را به ما می دهد تا بتوانیم script های unsigned را در محیط powershell اجرا کنیم.
- یک فایل text در notepad ایجاد می کنیم و کد زیر را در آن paste میکنیم، و آن رادر آدرس زیر ذخیره می کنیم
C:\backup\cleanbackups.ps1
# Clean-up (old) backup files created by WSS v3 (STSADM.EXE)
# Created by Marco
# Tested with PowerShell RTM v1.0
# Location of spbrtoc.xml
$spbrtoc = "\\server1\backup\Sharepoint\spbrtoc.xml"
# Days of backup that will be remaining after backup cleanup.
$days = 14
# Import the Sharepoint backup report xml file
[xml]$sp = gc $spbrtoc
# Find the old backups in spbrtoc.xml
$old = $sp.SPBackupRestoreHistory.SPHistoryObject | ? { $_.SPStartTime -lt ((get-
date).adddays(-$days)) }
if ($old -eq $Null) { write-host "No reports of backups older than $days days found in spbrtoc.xml.`nspbrtoc.xml isn't changed and no files are removed.`n" ; break}
spbrtoc.xml.`nspbrtoc.xml isn't changed and no files are removed.`n" ; break}
# Delete the old backups from the Sharepoint backup report xml file
$old | % { $sp.SPBackupRestoreHistory.RemoveChild($_) }
# Delete the physical folders in which the old backups were located
$old | % { Remove-Item $_.SPBackupDirectory -Recurse }
# Save the new Sharepoint backup report xml file
$sp.Save($spbrtoc)
Write-host "Backup(s) entries older than $days days are removed from spbrtoc.xml and harddisc."
removed from spbrtoc.xml and harddisc."
من این script را از لینکی که براتون گذاشتم پیدا کردم، نحوه عمل کردن این script بگونه ای است که هر 14 روز تمامی back up های قدیمی را پاک میکند:
http://blog.wauwwie.nl/Lists/Categories/Category.aspx?Name=MOSS%202007%20%2F%20WSS%20v.3
stsadm -o backup -directory \\server1\backup -force -backupmethod full
powershell.exe C:\backup\cleanbackups.ps1
موفق و پایدار باشید:)