Translate

Sunday, January 5, 2014

Backing up a SharePoint 2010 farm

There 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:

http://www.mysharepointadventures.com/2012/05/powershell-script-to-backup-farm-configuration-and-service-applications/

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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

No comments:

Post a Comment

Thanks for commenting, if you have a question and want a reply, please post it on TechNet forums and reference this blog, or navigate to www.SharePointPapa.com and post it there, all of these blog posts and more are on my SharePoint Papa site.

Popular Posts