Major Cleanup

* Updated README.txt to describe what's in each kind of backup
* Added script to sync backups to desktop (from USB Drive)
* Updated Copyright notices
* Renamed 'Weekly' to 'Program' for clarity
* Added 7-Zip return code handling
This commit is contained in:
2Shirt 2014-07-20 20:16:22 -07:00
parent 581d514b8c
commit a8b78de994
3 changed files with 260 additions and 90 deletions

View file

@ -1,42 +1,61 @@
:: Aloha Backup
:: Copyright 2013 Alan Mason
:: Copyright 2014 Alan Mason
::
:: This program is free software: you can redistribute it and/or modify
:: it under the terms of the GNU General Public License as published by
:: the Free Software Foundation, either version 3 of the License, or
:: (at your option) any later version.
:: This file is part of Aloha Backup.
::
:: This program is distributed in the hope that it will be useful,
:: but WITHOUT ANY WARRANTY; without even the implied warranty of
:: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
:: GNU General Public License for more details.
:: Aloha Backup is free software: you can redistribute it and/or modify
:: it under the terms of the GNU General Public License as published by
:: the Free Software Foundation, either version 3 of the License, or
:: (at your option) any later version.
::
:: You should have received a copy of the GNU General Public License
:: along with this program. If not, see <http://www.gnu.org/licenses/>.
:: Aloha Backup is distributed in the hope that it will be useful,
:: but WITHOUT ANY WARRANTY; without even the implied warranty of
:: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
:: GNU General Public License for more details.
::
:: You should have received a copy of the GNU General Public License
:: along with Aloha Backup. If not, see <http://www.gnu.org/licenses/>.
@echo off
Setlocal EnableDelayedExpansion
:GPLStuff
cls
title Aloha - Backup
:Init
setlocal EnableDelayedExpansion
title Aloha Backup
color 1b
echo Aloha Backup Copyright (C) 2013 Alan Mason
echo This program comes with ABSOLUTELY NO WARRANTY.
echo This is free software, and you are welcome to redistribute it
echo under certain conditions; see COPYING.txt for details.
pushd %~dp0
:Flags
set silent=
for %%f in (%*) do (
if /i "%%f" == "/DEBUG" (@echo on)
if /i "%%f" == "/H" (goto Usage)
if /i "%%f" == "/HELP" (goto Usage)
if /i "%%f" == "/S" (set silent=True)
)
: GetMode
set mode=
if /i "%1" == "nightly" (set mode=Nightly)
if /i "%1" == "monthly" (set mode=Monthly)
if /i "%1" == "yearly" (set mode=Yearly)
if /i "%1" == "program" (set mode=Program)
if /i "%1" == "full" (set mode=Full)
if not defined mode (goto Usage)
:GPLStuff
if not defined silent (
echo Aloha Backup Copyright ^(C^) 2014 Alan Mason
echo This program comes with ABSOLUTELY NO WARRANTY.
echo This is free software, and you are welcome to redistribute it
echo under certain conditions; see COPYING.txt for details.
echo.
)
:SetVariables
pushd %~dp0
set pd=%cd%
set backup=Aloha Backups
set warnings=
set month=%date:~4,2%
set day=%date:~7,2%
set year=%date:~10,4%
@ -51,26 +70,19 @@ for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
)
)
)
rem Not found
goto AlohaNotFound
:FindSevenZip
if exist "7za\7za.exe" (set sevenzip=%pd%\7za\7za.exe)
if exist "%PROGRAMFILES%\7-Zip\7z.exe" (set sevenzip=%PROGRAMFILES%\7-Zip\7z.exe)
if exist "%PROGRAMFILES86%\7-Zip\7z.exe" (set sevenzip=%PROGRAMFILES86%\7-Zip\7z.exe)
if not defined sevenzip goto SevenZipNotFound
:GetMode
if /i "%1" == "nightly" goto Nightly
if /i "%1" == "weekly" goto Weekly
if /i "%1" == "monthly" goto Monthly
if /i "%1" == "yearly" goto Yearly
if /i "%1" == "full" goto Full
rem else
goto Usage
:Main
goto %mode%Backup
:Full
title Aloha - Full Backup
rem Warn user
:FullBackup
title Aloha Backup - Full Backup
if not defined silent (
echo Aloha - Full Backup
echo.
@ -84,15 +96,13 @@ if not defined silent (
pause>nul
)
rem Set filter = " " (set but empty)
set filter=
set filename=%year%_%month%_%day%.7z
set subdir=Full Backups
goto CompressBackup
:Monthly
title Aloha - Monthly Backup
rem Warn user
:MonthlyBackup
title Aloha Backup - Monthly Backup
if not defined silent (
echo Aloha - Monthly Backup
echo.
@ -123,9 +133,8 @@ set filename=%year%_%month%.7z
set subdir=Monthly Backups
goto CompressBackup
:Nightly
title Aloha - Nightly Backup
rem Warn user
:NightlyBackup
title Aloha Backup - Nightly Backup
if not defined silent (
echo Aloha - Nightly Backup
echo.
@ -161,19 +170,19 @@ if %month% lss 10 (
if %day% equ 0 (
if exist "%src%\%year%%month%31\*.*" (
set day=31
goto NightlyFilter
goto NightlyBackupFilter
)
if exist "%src%\%year%%month%30\*.*" (
set day=30
goto NightlyFilter
goto NightlyBackupFilter
)
if exist "%src%\%year%%month%29\*.*" (
set day=29
goto NightlyFilter
goto NightlyBackupFilter
)
if exist "%src%\%year%%month%28\*.*" (
set day=28
goto NightlyFilter
goto NightlyBackupFilter
)
)
@ -183,18 +192,17 @@ if %day% lss 10 (
if not exist "%src%\%year%%month%%day%\*.*" goto DayNotFound
:NightlyFilter
:NightlyBackupFilter
rem Set filter = yesterday
set filter=%year%%month%%day%
set filename=%year%_%month%_%day%.7z
set subdir=Nightly Backups
goto CompressBackup
:Weekly
title Aloha - Weekly Backup
rem Warn user
:ProgramBackup
title Aloha Backup - Program Backup
if not defined silent (
echo Aloha - Weekly Backup
echo Aloha - Program Backup
echo.
echo This script will make a backup of the Aloha System program files.
echo This should take only a few minutes to complete.
@ -206,16 +214,15 @@ if not defined silent (
pause>nul
)
rem Set filter = 7-Zip switch to exclude all transaction data
rem Set filter to exclude all transaction data
echo 20*> "%tmp%\7z_switch"
set filter=-x^^@"%tmp%\7z_switch"
set filename=%year%_%month%_%day%.7z
set subdir=Program Backups
goto CompressBackup
:Yearly
title Aloha - Yearly Backup
rem Warn user
:YearlyBackup
title Aloha Backup - Yearly Backup
if not defined silent (
echo Aloha - Yearly Backup
echo.
@ -240,6 +247,10 @@ goto CompressBackup
:CompressBackup
cd /d "%src%"
"%sevenzip%" a -t7z -mx=9 "%tmp%\%filename%" %filter%
if %errorlevel% equ 255 (goto Abort)
if %errorlevel% geq 2 (goto ErrorFatal)
if %errorlevel% equ 1 (set warnings=True)
goto CopyBackup
:CopyBackup
for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
@ -251,52 +262,86 @@ for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
)
)
)
if defined warnings (goto SevenZipWarning)
goto Done
:Cleanup
del /q "%tmp%\%filename%">nul 2>&1
del /q "%tmp%\7z_switch">nul 2>&1
goto End
:Abort
echo.
echo Aborted.
goto Exit
:AlohaNotFound
cls
color 0c
echo Aloha not found^^!
echo.
echo ERROR: AlohaQS not found.
echo This backup script only works with the AlohaQS program.
goto End
set silent=
goto Exit
:DayNotFound
cls
color 0c
echo No records found for date: %month%/%day%/%year%^^!
echo Skipping nightly backup.
goto End
echo.
echo ERROR: No records found for date: %month%/%day%/%year%.
set silent=
goto Exit
:SevenZipFatalError
color 0c
echo.
echo ERROR: %mode% Backup has failed.
set silent=
goto Exit
:SevenZipNotFound
cls
color 0c
echo 7-Zip not found^^!
echo.
echo ERROR: 7-Zip not found.
echo Please install 7-Zip and then try again.
goto End
set silent=
goto Exit
:SevenZipWarning
color 0c
echo.
echo WARNING: Some files were not backed up.
echo ^(Try rebooting and running a %mode% Backup again^).
set silent=
goto Exit
:Usage
echo.
echo Usage: Aloha_Backup.cmd ^<mode^> ^(/s^)
echo Usage:
echo Aloha_Backup.cmd mode [options]
echo Aloha_Backup.cmd /help
echo.
echo Modes: Nightly ^(Backup yesterday^)
echo Weekly ^(Backup program files^)
echo Monthly ^(Backup last month^)
echo Yearly ^(Backup last year^)
echo Full ^(Backup everything^)
echo /s Suppress warnings
goto End
:End
if defined silent goto Done
echo Options:
echo /h /help Show this screen.
echo /s Silent ^(Suppress messages^).
echo.
echo Press any key to exit...
pause>nul
echo Modes:
echo Nightly Backup yesterday
echo Monthly Backup last month
echo Yearly Backup last year
echo Program Backup program files
echo Full Backup everything
goto Done
:Done
echo.
echo Done.
goto Exit
:Exit
rem Cleanup
del /q "%tmp%\%filename%">nul 2>&1
del /q "%tmp%\7z_switch">nul 2>&1
if not defined silent (
echo.
echo Press any key to exit...
pause>nul
)
popd
endlocal
color
endlocal
title %cd%

View file

@ -0,0 +1,93 @@
:: Aloha Backups - Copy to Desktop
:: Copyright 2014 Alan Mason
::
:: This file is part of Aloha Backups.
::
:: Aloha Backups is free software: you can redistribute it and/or modify
:: it under the terms of the GNU General Public License as published by
:: the Free Software Foundation, either version 3 of the License, or
:: (at your option) any later version.
::
:: Aloha Backups is distributed in the hope that it will be useful,
:: but WITHOUT ANY WARRANTY; without even the implied warranty of
:: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
:: GNU General Public License for more details.
::
:: You should have received a copy of the GNU General Public License
:: along with Aloha Backups. If not, see <http://www.gnu.org/licenses/>.
@echo off
:Init
setlocal EnableDelayedExpansion
title Aloha Backups - Copy to Desktop
color 1b
pushd %~dp0
:GPLStuff
echo Aloha Backups Copyright (C) 2014 Alan Mason
echo This program comes with ABSOLUTELY NO WARRANTY.
echo This is free software, and you are welcome to redistribute it
echo under certain conditions; see COPYING.txt for details.
echo.
:Flags
for %%f in (%*) do (
if /i "%%f" == "/DEBUG" (@echo on)
)
:Main
mkdir "%USERPROFILE%\Desktop\Aloha Backups">nul 2>&1
robocopy . . /L>nul 2>&1
if %errorlevel% equ 9009 (goto Xcopy)
goto Robocopy
:Robocopy
robocopy "Aloha Backups" "%USERPROFILE%\Desktop\Aloha Backups" /e /r:3 /w:10
if %errorlevel% geq 16 (goto SeriousError)
if %errorlevel% geq 8 (goto IncompleteCopy)
goto Done
:Xcopy
xcopy "Aloha Backups" "%USERPROFILE%\Desktop\Aloha Backups" /e /c /h /r /y
if %errorlevel% equ 5 (goto WriteError)
if %errorlevel% equ 2 (goto Abort)
if %errorlevel% geq 1 (goto SeriousError)
goto Done
:IncompleteCopy
color 0c
echo.
echo ERROR: Some files or directories could not be copied.
goto Exit
:SeriousError
color 0c
echo.
echo ERROR: Could not copy any files.
goto Exit
:WriteError
color 0c
echo.
echo ERROR: Disk write error occurred.
goto Exit
:Abort
echo.
echo Aborted.
goto Exit
:Done
echo.
echo Done.
goto Exit
:Exit
echo.
echo Press any key to exit...
pause>nul
popd
color
endlocal
title %cd%

View file

@ -1,17 +1,49 @@
Aloha Backup - A script for automating AlohaQS backups.
There are five types of backups that this script can perform:
Full:
Contents: The whole AlohaQS folder.
Name: YYYY_MM_DD.7z
Monthly:
Contents: All "YYYYMMDD" folders from the previous month.
Name: YYYY_MM.7z
Nightly:
Contents: The "YYYYMMDD" folder for yesterday.
Name: YYYY_MM_DD.7z
Program:
Contents: Everything but the "YYYYMMDD" folders.
Name: YYYY_MM_DD.7z
Yearly:
Contents: All "YYYYMMDD" folders from a year (determined by the filename).
Name: YYYY.7z
* All backups are compressed with 7-Zip to save space. Backups are less than 20% original size!
** All filenames refer to the dates contained in the backup except the Full and Program backups; those refer to when the backup was done.
Installation:
Just copy the files to a folder and run Aloha_Backup.cmd
Make a folder named "Aloha Backups" at the root of a drive.
e.g. "D:\Aloha Backups" or "F:\Aloha Backups"
The drive can be a local HD, USB Stick, or Network Share.
(Optional) Copy the "Copy Backups to Desktop.cmd" file to the root of the same drive.
This file is useful if your backups are on a USB stick and you want to keep an additional backup on another PC.
Then copy the files to any folder and run Aloha_Backup.cmd
* If you don't copy the 7za folder, you will need to install 7-Zip.
Usage: Aloha_Backup.cmd <mode> (/s)
Modes: Nightly (Backup yesterday)
Weekly (Backup program files)
Monthly (Backup last month)
Yearly (Backup last year)
Full (Backup everything)
/s Suppress warnings
Usage:
Aloha_Backup.cmd mode [options]
Aloha_Backup.cmd /help
Options:
/h /help Show this screen.
/s Silent ^(Suppress messages^).
Modes:
Nightly Backup yesterday
Monthly Backup last month
Yearly Backup last year
Program Backup program files
Full Backup everything
7-Zip is Copyright Igor Pavlovis www.7-zip.org