Skip to content

Instantly share code, notes, and snippets.

@mark05e
Last active March 5, 2020 11:08
Show Gist options
  • Save mark05e/415ddca6cca67e68ad26734a64278640 to your computer and use it in GitHub Desktop.
Save mark05e/415ddca6cca67e68ad26734a64278640 to your computer and use it in GitHub Desktop.
@echo off
REM AWFOS v5.x Backup Script by mark@???? | Feb 2019
REM Requires ShadowSpawn [https://github.com/candera/shadowspawn/downloads] for online backup
REM Requires 7zip [https://www.7-zip.org/download.html] for archiving backup
REM Requires MSSQL osql [https://docs.microsoft.com/en-us/sql/tools/osql-utility?view=sql-server-2014] for db backup
REM Note 1: special quote sequence for variables that contain spaces
REM Note 2: this only works for stand-alone/consolidated solution
@echo on
set "backup-path-1=D:\Program Files (x86)\Avaya"
set "backup-path-2=D:\ProgramData\WFO_HOME"
set "backup-path-3=C:\Program Files\Apache Software Foundation"
set "backup-db01=AWFOSDB"
set "backup-db02=AWFOSDB_Tenant"
set "sevenzip-path=C:\Program Files\7-Zip"
set "osql-path=C:\Program Files\Microsoft SQL Server\110\Tools\Binn"
set "ShadowSpawn-path=D:\MarkTools\ShadowSpawn-0.2.2-x64"
set "backup-drive-local=E:"
set "backup-drive-remote=W:"
set "robocopy-exclude-filetypes=*.log *_log*.txt *.log.* *.tmp"
@echo off
REM Timestamp Function
REM https://stackoverflow.com/questions/11037831/filename-timestamp-in-windows-cmd-batch-script
@echo on
for /f "tokens=2-8 delims=.:/ " %%a in ("%date% %time: =0%") do set DateNtime=%%c-%%a-%%b_%%d-%%e
echo %DateNtime%
cd /d %backup-drive%\
mkdir AWFOS_BACKUP
mkdir AWFOS_BACKUP__%DateNtime%
mkdir AWFOS_BACKUP__%DateNtime%\Avaya
mkdir AWFOS_BACKUP__%DateNtime%\WFO_HOME
mkdir AWFOS_BACKUP__%DateNtime%\Registry
mkdir AWFOS_BACKUP__%DateNtime%\Database
mkdir AWFOS_BACKUP__%DateNtime%\WEBLM
@echo off
REM ShadowSpawn is a tool for working with shadow copies. Shadow copies are read-only snapshots of your disk.
REM eg: shadowspawn C:\foo Q: robocopy Q:\ C:\bar /s
@echo on
REM Online folder backup and skip log files
%ShadowSpawn-path%\ShadowSpawn.exe %backup-path-1% Q: robocopy Q:\ %backup-drive%\AWFOS_BACKUP__%DateNtime%\Avaya /E /XF %robocopy-exclude-filetypes%
%ShadowSpawn-path%\ShadowSpawn.exe %backup-path-2% Q: robocopy Q:\ %backup-drive%\AWFOS_BACKUP__%DateNtime%\WFO_HOME /E /XF %robocopy-exclude-filetypes%
%ShadowSpawn-path%\ShadowSpawn.exe %backup-path-3% Q: robocopy Q:\ %backup-drive%\AWFOS_BACKUP__%DateNtime%\WEBLM /E /XF %robocopy-exclude-filetypes%
REM Registry backup
regedit /E %backup-drive-local%\AWFOS_BACKUP__%DateNtime%\Registry\hklm_avaya.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Avaya"
regedit /E %backup-drive-local%\AWFOS_BACKUP__%DateNtime%\Registry\hklm_env.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
regedit /E %backup-drive-local%\AWFOS_BACKUP__%DateNtime%\Registry\hklm_services.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services"
regedit /E %backup-drive-local%\AWFOS_BACKUP__%DateNtime%\Registry\hkcu_env.reg "HKEY_CURRENT_USER\Environment"
SET >> %backup-drive-local%\AWFOS_BACKUP__%DateNtime%\Registry\allvariables.txt
REM Database backup
"%osql-path%\osql.exe" -Q "BACKUP DATABASE %db01% TO DISK='%backup-drive%\AWFOS_BACKUP__%DateNtime%\Database\%db01%.bak'" -S localhost -E
timeout 5
"%osql-path%\osql.exe" -Q "BACKUP DATABASE %db02% TO DISK='%backup-drive%\AWFOS_BACKUP__%DateNtime%\Database\%db02%.bak'" -S localhost -E
timeout 5
REM Archive all backup files
"%sevenzip-path%\7z.exe" a %backup-drive%\AWFOS_BACKUP\AWFOS_BACKUP__%DateNtime%.7z %backup-drive%\AWFOS_BACKUP__%DateNtime%
timeout 5
REM Move archive to remote location
robocopy %backup-drive-local%\AWFOS_BACKUP\ %backup-drive-remote%\AWFOS_BACKUP\ AWFOS_BACKUP__%DateNtime%.7z /mov
timeout 5
REM Remove temp folder after archive
rmdir %backup-drive%\AWFOS_BACKUP__%DateNtime% /S /Q
timeout 10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment