here are a lot of good scripts out there to use for backing up your SharePoint. This one is one of my favorites:
http://spfarmbackup.codeplex.com/
Just download it, unzip it, create a folder to store your backups, share that folder complete the Params.xml and you’re about ready to go!
Read this detailed instruction guide written by the scripts author for step-by-step instructions: http://www.darrenmarsden.com/file.axd?file=2013%2f1%2fPreparing+for+%26+Configuring+the+SharePoint+Farm+Backup+Script.pdf
Here is another, and probably the best script for backing up your SharePoint Farm. It is written by John Ferringer, a SharePoint Guru – http://gallery.technet.microsoft.com/scriptcenter/9b99c435-8831-4c9e-a70b-1f13158ef22a
If the Ferringer solution or the codeplex solution above seems a bit to daunting, you can copy and paste the powerhsell from this blog: http://bradcote.wordpress.com/2012/05/02/powershell-script-to-backup-site-collections/ into a .ps1 file and then set it up to run as a scheduled task using credentials that have Shell admin access and full control over the shared network location where the backups will be stored.
You’ll need to share a folder for the script to write into. Here is the powershell script from bradcote with a few additional notes
# Backup all site collections in the farm, placing them in
# a directory on a shared location
# Note - Does not backup the /train site collection
# adds the SharePoint cmdlets to your powershell and effectively turns it into the SharePoint
#Management Shell
Add-PsSnapin Microsoft.SharePoint.PowerShell
# Take care of the disposable objects to prevent memory leak.
Start-SPAssignment -Global
# This is the backup path - must be shared with account that is executing the script and the
# farm account
$backupLocation="\\\SharePointBackups"
# Remove all that backup folders created > 7 days ago
get-childitem $backupLocation |
where {$_.Lastwritetime -lt (date).adddays(-7)} |
remove-item -recurse -Confirm:$false
# Get current date for use in log file and format it to avoid
# invalid characters such as "/" and ":"
$today=Get-Date -format "MM-dd-yyyy HH.mm.ss"
# Create a folder in the backup location with todays date (sortable)
$todayFolder = $backupLocation + '\' + $((get-date).toString('MM-dd-yyyy'))
$logFile="$todayFolder\BackupLog.log"
md $todayFolder
# Does not backup the /train site collection
# or the temporary web ap site collection on port 15702
# Disregard this, or use it, depending on whether you have a /train site collection, etc.
foreach ($site in get-spsite -limit all |
where-object -FilterScript {$_.url -notlike "*/train*"} |
where-object -FilterScript {$_.url -notlike "*15702"}) {
write-Host Start backing up $site to $todayFolder
try {
# Create a new backup file and name it based on current date.
# If you want to create only 1 backup file and overwrite it
# each time the backup is run, you can replace "$today.bak"
# with your desired file name.
$pathName = ($todayFolder + '\' + $($site.ID) + '.bak')
write-Host 'Backing up ' $site ' GUID = ' $($site.ID)
# This farm does not have Enterprise SQL Server, so snapshots
# cannot be used. This requires that the sites belocked for
# update during the backup, so this should be run after hours
Backup-SPSite -Identity $site -Path $pathName -EV Err
-EA "SilentlyContinue"
write-Host Backup succeeded.
# Write success message to the log file
write "$today $site GUID =
$($site.ID) successfully backed up.">>logFile
} catch {
write-Host Backup failed. See $logFile for more information.
# Write error message to the log file
# change the logFile to some other name if you want, e.g. BackupHistory.txt
$e = $Err[0].ToString()
write "$today $site Error: $e">>logFile
}
}
Stop-SPAssignment -Global
Remove-PsSnapin Microsoft.sharepoint.powershell
write-Host "Finished script."
This blog has another script that you can use, also an easier to use version:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make sure to update these variables:
#Variables $logfile = "SPFarm-Backup-" + $(Get-Date -Format dd-MM-yy) + ".log" $ConfigDB = "SP_Config" $DBServer = "server" $BackupConfigFolder = "\\server\SharePoint\Backup\Config" $BackupSAFolder = "\\server\SharePoint\Backup\ServiceApp" $AdminEmail = <a href="mailto:admin@sharepoint.com">admin@sharepoint.com</a> $MailServer = "mail.sharepoint.com" $FromAddress = <a href="mailto:sharepoint.notifications@sharepoint.com">sharepoint.notifications
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Microsoft TechNet – http://technet.microsoft.com/en-us/library/ee428316.aspx – Backing up a Farm in SharePoint 2013
Petri blog – backup and restore advice – Good Read http://www.petri.co.il/how-to-backup-restore-sharepoint-2013.htm
John Ferringer on backups – http://mycentraladmin.wordpress.com/2011/07/11/use-powershell-to-back-up-your-sharepoint-farm/
Microsoft’s scripting guy defers to John Ferringer – http://blogs.technet.com/b/heyscriptingguy/archive/2011/06/22/use-powershell-to-back-up-your-sharepoint-farm.aspx – same here
Cheers,
Stacy