Whatever your specific scenario, my rule of thumb for changing anything is: ALWAYS BACKUP BEFORE MAKING CHANGES.
With solutions using less complex deploy processes - I used to select, copy, and paste specific files and directories to a separate location in case something went completely awry. To save time - and maintain peace of mind before making file changes to a staging or production environment - I now utilize a handy backup script using Powershell that backs up all necessary files (Robocopy) by simply running it.
To use it:
- Modify and save the Settings.xml file with your own source and destination paths.
- Double-click on RunBackup.bat file. Once you accept the prompt to run the script as an administrator, you'll see the output of each file being transferred to the destination folder.
- Watch it run!
The script explicitly excludes the following Sitecore specific paths that often aren't changed from build to build - and don't need to take up more space than needed. To add/remove an excluded entries, open and modify the _sitecorebackupscript.ps1 file's '$exclude' variable.
"_DEV", "App_Data", "Content", "temp", "upload", "sitecore", "sitecore modules"
Settings.xml - Configuration settings
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<!-- Date format for Destination folder -->
<DateFormat>MM-dd-yyyy hhmmss</DateFormat>
<!-- Source Website directory to backup (exclude trailing back-slash) -->
<SourceDirectory>C:\inetpub\wwwroot\Sitecore8\Website</SourceDirectory>
<!-- Destination directory where backup made (exclude trailing back-slash) -->
<BackupDirectory>C:\inetpub\wwwroot-backup\Sitecore8</BackupDirectory>
</settings>
_sitecorebackupscript.ps1: The Powershell script
<# Sitecore Backup Script - Gabriel Streza (sitecoregabe.com)
**************************************************************************
Powershell script that backups your Sitecore website while excluding unessesary files.
Modify Settings.xml to control Source and Directory paths.
**************************************************************************
#>
# Directory definitions
$scriptpath = $MyInvocation.MyCommand.Path
$directory = Split-Path $scriptpath
[xml]$ConfigFile = Get-Content "$directory\Settings.xml"
# Script Variable Defintions
$DateFormat = Get-Date -format $ConfigFile.Settings.DateFormat
$SourceDirectory = $ConfigFile.Settings.SourceDirectory
$BackupDirectory = $ConfigFile.Settings.BackupDirectory
$dest = $BackupDirectory + '_' + $DateFormat
# Folders to exclude
$exclude = "_DEV", "App_Data", "Content", "temp", "upload", "sitecore", "sitecore modules"
# Run as Administrator
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit }
# File copy
robocopy $SourceDirectory $dest /s /xj /xd $exclude
# Completed
Write-Host -NoNewLine 'DONE! Press any key to continue...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');
RunBackup.bat: Execute the Powershell script
Powershell.exe -executionpolicy remotesigned -File "_sitecorebackupscript.ps1"
You can download, modify, and utilize this by heading to this GitHub repo and grabbing a copy:
https://github.com/strezag/Sitecore-Website-Backup-Script/
Happy backup...ing!
0 comments:
Post a Comment