Posted On January 20, 2020

PowerShell: Hobocopy Backup Software

kimconnect 0 comments
blog.KimConnect.com >> Codes >> PowerShell: Hobocopy Backup Software
# hobocopy-backup.ps1
# Note: this is a quick snippet to demonstrate the use of this utility.
# The good: this software can backup locked/open files using VSS, and its speed is impressive.
# The bad: "incremental" copy does not regenerate files that have been deleted at the destination


# Input variables
$source="C:\temp"
$destination="C:\tempcopy"
$logFolder="C:\logs"

# Autogen variables
$logFile="$logFolder\hobocopy-log-$(get-date -Format 'yyyy-MM-dd-hh-mm-ss').log"
$stateFile="$logFolder\hobocopy-statefile.log"
$hobocopyFullSwitches="/statefile=$stateFile /ignorepattern='System Volume Information|\$RECYCLE.BIN' /full /skipdenied /r /y"
$hobocopyIncrementalSwitches="/statefile=$stateFile /ignorepattern='System Volume Information|\$RECYCLE.BIN' /incremental /skipdenied /r /y"

# Include prerequisites
.{
if (!(get-command hobocopy)){
if (!(Get-Command choco.exe -ErrorAction SilentlyContinue)) {
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
}
choco install hobocopy -y;
}
}

if (test-path $stateFile){
$hobocopyCommand="hobocopy $source $destination $hobocopyIncrementalSwitches"
}else{
$hobocopyCommand="hobocopy $source $destination $hobocopyFullSwitches"
}
$output=invoke-expression $hobocopyCommand;

write-host $output
Add-Content $logFile $output;

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

PowerShell: Regex Examples

# Example 1 Simple 10-digit match $x='123-456-7890' [regex]$regex10Digits='\({0,1}\d{0,1}\){0,1}\-{0,1}(\d{3})' $areaCode=$regex10Digits.Match($x).Groups[1].Value # Example 2 IP Version 4…

PowerShell: Kill a Windows Service Forcefully

# killService.ps1 $serviceName='vmms' function killService($serviceName='Spooler',$restart=$false){ $processId=Get-WmiObject -Class Win32_Service -Filter "Name LIKE '$serviceName'"|Select-Object -ExpandProperty ProcessId if($processId.count…

PowerShell: How To Set IP and Domain Restrictions to Specific IIS Sites

# Enable IP Filtering Feature in IIS using PowerShell Install-WindowsFeature Web-IP-Security Restart-Service W3SVC # Optional:…