User Tools

Site Tools


backup_script_7zip

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
backup_script_7zip [2011/04/02 05:34] – external edit 127.0.0.1backup_script_7zip [2017/01/01 20:05] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ===== Backup Script (7-Zip) ===== ===== Backup Script (7-Zip) =====
 +
 +==== With Fancy Logging ====
 +
 +See [[logger|Logger]].
  
 <code DOS> <code DOS>
 @echo off @echo off
 +
 +rem Version 1.1.0
 +rem Last Update: 2011-06-24
  
 rem Usage: rem Usage:
Line 16: Line 23:
 rem   Backup.bat DevLocal C:\DevLocal CS Daily True rem   Backup.bat DevLocal C:\DevLocal CS Daily True
 rem  rem 
-rem NOTE: Do NOT put double quotes in the argments - it won't work. If the directory has a space, use 8.3 formatted names:+rem NOTE: Do NOT put double quotes in the arguments - it won't work. If the directory has a space, use 8.3 formatted names:
 rem  rem 
 rem   Backup.bat FooBar z:\mydocu~1\visual~1\FooBar CS Hourly rem   Backup.bat FooBar z:\mydocu~1\visual~1\FooBar CS Hourly
 rem  rem 
  
 +set LoggerExe=C:\Bin\Logger.exe
 +set SummaryLogFile=C:\Bin\Logs\Summary.log
 +set FullLogFile=C:\Bin\Logs\Backup.log
 +
 +echo Info: Backup: **** Starting **** | %LoggerExe% >> %SummaryLogFile%
 + 
 set AllFlags= set AllFlags=
 set AllSearch=* set AllSearch=*
 + 
 set CSFlags=-x!*.dll -x!*.zip -x!*.pdf -x!*.pdb -x!*.exe set CSFlags=-x!*.dll -x!*.zip -x!*.pdf -x!*.pdb -x!*.exe
 set CSSearch=* set CSSearch=*
 + 
 set BatchFlags= set BatchFlags=
 set BatchSearch=*.bat set BatchSearch=*.bat
 + 
 if [%1]==[] goto ErrorInCommandLineOptions if [%1]==[] goto ErrorInCommandLineOptions
 if [%2]==[] goto ErrorInCommandLineOptions if [%2]==[] goto ErrorInCommandLineOptions
Line 35: Line 48:
 if [%4]==[] goto ErrorInCommandLineOptions if [%4]==[] goto ErrorInCommandLineOptions
 if [%5]==[] goto ErrorInCommandLineOptions if [%5]==[] goto ErrorInCommandLineOptions
 + 
 set TargetName=%1 set TargetName=%1
 set TargetDir=%2 set TargetDir=%2
Line 41: Line 54:
 set Frequency=%4 set Frequency=%4
 set HaltOnTargetDirError=%5 set HaltOnTargetDirError=%5
- +  
-set BackupDir=C:\Backups\%TargetName% +set BackupDir=C:\Dev\Backups\%TargetName% 
 + 
 :CheckHaltOnTargetDirError :CheckHaltOnTargetDirError
 if "%HaltOnTargetDirError%"=="True" goto CheckTargetDir if "%HaltOnTargetDirError%"=="True" goto CheckTargetDir
 if "%HaltOnTargetDirError%"=="False" goto CheckTargetDir if "%HaltOnTargetDirError%"=="False" goto CheckTargetDir
 + 
 echo ERROR: The HaltOnTargetDirError must be 'True' or 'False'. echo ERROR: The HaltOnTargetDirError must be 'True' or 'False'.
 +echo ERROR: Backup: The HaltOnTargetDirError must be 'True' or 'False'. | %LoggerExe% >> %SummaryLogFile%
 +
 echo. echo.
 goto ErrorInCommandLineOptions goto ErrorInCommandLineOptions
 + 
 :CheckTargetDir :CheckTargetDir
 if exist "%TargetDir%" goto CheckBackupDir if exist "%TargetDir%" goto CheckBackupDir
 + 
 echo ERROR: The target directory (%TargetDir%) does not exist or can not be accessed. echo ERROR: The target directory (%TargetDir%) does not exist or can not be accessed.
 +echo ERROR: Backup: The target directory (%TargetDir%) does not exist or can not be accessed. | %LoggerExe% >> %SummaryLogFile% 
 + 
 if "%HaltOnTargetDirError%"=="False" goto Done if "%HaltOnTargetDirError%"=="False" goto Done
 + 
 +pause
 +goto Done
 + 
 +:CheckBackupDir
 +if exist "%BackupDir%" goto CheckContentType
 + 
 +echo ERROR: The backup directory (%BackupDir%) does not exist or can not be accessed.
 +echo ERROR: Backup: The backup directory (%BackupDir%) does not exist or can not be accessed. | %LoggerExe% >> %SummaryLogFile%
  
 pause pause
 goto Done goto Done
 + 
 +:CheckContentType
 +if "%ContentType%"=="All" goto ContentTypeIsAll
 +if "%ContentType%"=="CS" goto ContentTypeIsCS
 +if "%ContentType%"=="Batch" goto ContentTypeIsBatch
 + 
 +echo ERROR: The content type must be 'All', 'CS' or 'Batch'.
 +echo ERROR: Backup: The content type must be 'All', 'CS' or 'Batch'. | %LoggerExe% >> %SummaryLogFile%
  
 +echo.
 +goto ErrorInCommandLineOptions
 + 
 +:ContentTypeIsAll
 +set Flags=%AllFlags%
 +set Search=%AllSearch%
 +goto CheckFrequency
 + 
 +:ContentTypeIsCS
 +set Flags=%CSFlags%
 +set Search=%CSSearch%
 +goto CheckFrequency
 + 
 +:ContentTypeIsBatch
 +set Flags=%BatchFlags%
 +set Search=%BatchSearch%
 +goto CheckFrequency
 + 
 +:CheckFrequency
 +if "%Frequency%"=="Hourly" goto FrequencyIsHourly
 +if "%Frequency%"=="Daily" goto FrequencyIsDaily
 +if "%Frequency%"=="Weekly" goto FrequencyIsWeekly
 + 
 +echo ERROR: The frequency must be 'Hourly', 'Daily' or 'Weekly'.
 +echo ERROR: Backup: The frequency must be 'Hourly', 'Daily' or 'Weekly'. | %LoggerExe% >> %SummaryLogFile%
 +
 +echo.
 +goto ErrorInCommandLineOptions
 + 
 +:FrequencyIsHourly
 +set CreateBackupCommand="C:\Program Files\7-Zip\7z.exe" u -r %Flags% "%BackupDir%\Daily_Backup_01.7z" -u- -up0q0x2y2z0w2!"%BackupDir%\%Frequency%_Backup_Temp.7z" "%TargetDir%\%Search%"
 +goto CheckDailyBackup
 + 
 +:FrequencyIsDaily
 +set CreateBackupCommand="C:\Program Files\7-Zip\7z.exe" a -r %Flags% "%BackupDir%\%Frequency%_Backup_Temp.7z" "%TargetDir%\%Search%"
 +goto CleanUpTemps
 + 
 +:FrequencyIsWeekly
 +set CreateBackupCommand=copy "%BackupDir%\Daily_Backup_01.7z" "%BackupDir%\%Frequency%_Backup_Temp.7z"
 +goto CheckDailyBackup
 + 
 +:CheckDailyBackup
 +if exist "%BackupDir%\Daily_Backup_01.7z" goto CleanUpTemps
 + 
 +echo ERROR: The daily backup ("%BackupDir%\Daily_Backup_01.7z") does not exist or can not be accessed.
 +echo ERROR: Backup: The daily backup ("%BackupDir%\Daily_Backup_01.7z") does not exist or can not be accessed. | %LoggerExe% >> %SummaryLogFile%
 +
 +pause
 +goto Done
 +
 +:CleanUpTemps
 +rem Clean up now, just in case the last run died halfway through.
 +del "%BackupDir%\%Frequency%_Backup_Temp.7z"
 +del "%BackupDir%\%Frequency%_Compare.7z"
 +del "%BackupDir%\%Frequency%_Backup_Temp_Contents.txt"
 +del "%BackupDir%\%Frequency%_Backup_01_Contents.txt"
 +
 +:CreateBackup
 +
 +echo Pre-check and set up is done. Beginning backup.
 +echo Info: Backup: [%TargetName% %Frequency%] Pre-check and set up is done. Beginning backup. | %LoggerExe% >> %SummaryLogFile%
 +
 +%CreateBackupCommand% 2>&1 | %LoggerExe% >> %FullLogFile%
 + 
 +if not exist "%BackupDir%\%Frequency%_Backup_01.7z" goto RollDone
 +
 +rem Determine if there is any differences between the current backup and the previous backup.
 +rem 7Zip includes the name of the file in the content list, so we need to make sure the filename is the same for each backup. We only want to know if the *contents* are different.
 +rem If DOS had a more functional 'tail' command we wouldn't need to do this...
 + 
 +rename "%BackupDir%\%Frequency%_Backup_Temp.7z" "%Frequency%_Compare.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +"C:\Program Files\7-Zip\7z.exe" l -slt "%BackupDir%\%Frequency%_Compare.7z" > "%BackupDir%\%Frequency%_Backup_Temp_Contents.txt"
 +rename "%BackupDir%\%Frequency%_Compare.7z" "%Frequency%_Backup_Temp.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 + 
 +rename "%BackupDir%\%Frequency%_Backup_01.7z" "%Frequency%_Compare.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +"C:\Program Files\7-Zip\7z.exe" l -slt "%BackupDir%\%Frequency%_Compare.7z" > "%BackupDir%\%Frequency%_Backup_01_Contents.txt"
 +rename "%BackupDir%\%Frequency%_Compare.7z" "%Frequency%_Backup_01.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +
 +fc "%BackupDir%\%Frequency%_Backup_Temp_Contents.txt" "%BackupDir%\%Frequency%_Backup_01_Contents.txt"
 + 
 +IF ERRORLEVEL 1 GOTO :DifferencesExist
 + 
 +ECHO No differences found - throwing the backup away.
 +echo Info: Backup: [%TargetName% %Frequency%] No differences found - throwing the backup away. | %LoggerExe% >> %SummaryLogFile%
 +
 +REM No differences found, so just clean up.
 +del "%BackupDir%\%Frequency%_Backup_01_Contents.txt" 2>&1 | %LoggerExe% >> %FullLogFile%
 +del "%BackupDir%\%Frequency%_Backup_Temp_Contents.txt" 2>&1 | %LoggerExe% >> %FullLogFile%
 +del "%BackupDir%\%Frequency%_Backup_Temp.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +GOTO :done
 + 
 +:DifferencesExist
 + 
 +ECHO Differences found - storing the backup.
 +echo Info: Backup: [%TargetName% %Frequency%] Differences found - storing the backup. | %LoggerExe% >> %SummaryLogFile%
 + 
 +del "%BackupDir%\%Frequency%_Backup_01_Contents.txt"
 +del "%BackupDir%\%Frequency%_Backup_Temp_Contents.txt"
 + 
 +:RollExistingBackups
 + 
 +del "%BackupDir%\%Frequency%_Backup_20.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_19.7z" "%Frequency%_Backup_20.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_18.7z" "%Frequency%_Backup_19.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_17.7z" "%Frequency%_Backup_18.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_16.7z" "%Frequency%_Backup_17.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_15.7z" "%Frequency%_Backup_16.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_14.7z" "%Frequency%_Backup_15.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_13.7z" "%Frequency%_Backup_14.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_12.7z" "%Frequency%_Backup_13.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_11.7z" "%Frequency%_Backup_12.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_10.7z" "%Frequency%_Backup_11.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_09.7z" "%Frequency%_Backup_10.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_08.7z" "%Frequency%_Backup_09.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_07.7z" "%Frequency%_Backup_08.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_06.7z" "%Frequency%_Backup_07.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_05.7z" "%Frequency%_Backup_06.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_04.7z" "%Frequency%_Backup_05.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_03.7z" "%Frequency%_Backup_04.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_02.7z" "%Frequency%_Backup_03.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 +rename "%BackupDir%\%Frequency%_Backup_01.7z" "%Frequency%_Backup_02.7z" 2>&1 | %LoggerExe% >> %FullLogFile%
 + 
 +:RollDone
 + 
 +rename "%BackupDir%\%Frequency%_Backup_Temp.7z" "%Frequency%_Backup_01.7z"  2>&1 | %LoggerExe% >> %FullLogFile%
 + 
 +goto :Done
 + 
 +:ErrorInCommandLineOptions
 +echo Error in command line arguments.
 +echo.
 +echo Usage:
 +echo.
 +echo   Backup.bat TargetName TargetDir ContentType Frequency HaltOnTargetDirError
 +echo.
 +echo   ContentType = 'CS' or 'Batch'
 +echo   Frequency = 'Hourly', 'Daily' or 'Weekly'
 +echo   HaltOnTargetDirError = 'True' or 'False'
 +echo.
 +echo Example:
 +echo.
 +echo   Backup.bat DevLocal C:\DevLocal CS Daily True
 +echo.
 +echo NOTE: Do NOT put double quotes in the arguments - it won't work. If the directory has a space, use 8.3 formatted names:
 +echo.
 +echo   Backup.bat FooBar z:\mydocu~1\visual~1\FooBar CS Hourly
 +echo.
 + 
 +goto :Done
 + 
 +:Done
 +echo Info: Backup: **** Done **** | %LoggerExe% >> %SummaryLogFile%
 +</code>
 +
 +==== Without Fancy Logging ====
 +
 +<code DOS>
 +@echo off
 +
 +rem Version 1.0.0
 +rem Last Update: 2011-06-14
 +
 +rem Usage:
 +rem 
 +rem   Backup.bat TargetName TargetDir ContentType Frequency HaltOnTargetDirError
 +rem 
 +rem   ContentType = 'All', 'CS' or 'Batch'
 +rem   Frequency = 'Hourly', 'Daily' or 'Weekly'
 +rem   HaltOnTargetDirError = 'True' or 'False'
 +rem 
 +rem Example:
 +rem 
 +rem   Backup.bat DevLocal C:\DevLocal CS Daily True
 +rem 
 +rem NOTE: Do NOT put double quotes in the arguments - it won't work. If the directory has a space, use 8.3 formatted names:
 +rem 
 +rem   Backup.bat FooBar z:\mydocu~1\visual~1\FooBar CS Hourly
 +rem 
 + 
 +set AllFlags=
 +set AllSearch=*
 + 
 +set CSFlags=-x!*.dll -x!*.zip -x!*.pdf -x!*.pdb -x!*.exe
 +set CSSearch=*
 + 
 +set BatchFlags=
 +set BatchSearch=*.bat
 + 
 +if [%1]==[] goto ErrorInCommandLineOptions
 +if [%2]==[] goto ErrorInCommandLineOptions
 +if [%3]==[] goto ErrorInCommandLineOptions
 +if [%4]==[] goto ErrorInCommandLineOptions
 +if [%5]==[] goto ErrorInCommandLineOptions
 + 
 +set TargetName=%1
 +set TargetDir=%2
 +set ContentType=%3
 +set Frequency=%4
 +set HaltOnTargetDirError=%5
 + 
 +set BackupDir=C:\Dev\Backups\%TargetName%
 + 
 +:CheckHaltOnTargetDirError
 +if "%HaltOnTargetDirError%"=="True" goto CheckTargetDir
 +if "%HaltOnTargetDirError%"=="False" goto CheckTargetDir
 + 
 +echo ERROR: The HaltOnTargetDirError must be 'True' or 'False'.
 +eventcreate /ID 1 /t ERROR /l APPLICATION /so "Backup" /d "The HaltOnTargetDirError must be 'True' or 'False'."
 +
 +echo.
 +goto ErrorInCommandLineOptions
 + 
 +:CheckTargetDir
 +if exist "%TargetDir%" goto CheckBackupDir
 + 
 +echo ERROR: The target directory (%TargetDir%) does not exist or can not be accessed.
 +eventcreate /ID 1 /t ERROR /l APPLICATION /so "Backup" /d "The target directory (%TargetDir%) does not exist or can not be accessed."
 + 
 +if "%HaltOnTargetDirError%"=="False" goto Done
 + 
 +pause
 +goto Done
 + 
 :CheckBackupDir :CheckBackupDir
 if exist "%BackupDir%" goto CheckContentType if exist "%BackupDir%" goto CheckContentType
 + 
 echo ERROR: The backup directory (%BackupDir%) does not exist or can not be accessed. echo ERROR: The backup directory (%BackupDir%) does not exist or can not be accessed.
 +eventcreate /ID 1 /t ERROR /l APPLICATION /so "Backup" /d "The backup directory (%BackupDir%) does not exist or can not be accessed."
 +
 pause pause
 goto Done goto Done
 + 
 :CheckContentType :CheckContentType
 if "%ContentType%"=="All" goto ContentTypeIsAll if "%ContentType%"=="All" goto ContentTypeIsAll
 if "%ContentType%"=="CS" goto ContentTypeIsCS if "%ContentType%"=="CS" goto ContentTypeIsCS
 if "%ContentType%"=="Batch" goto ContentTypeIsBatch if "%ContentType%"=="Batch" goto ContentTypeIsBatch
 + 
 echo ERROR: The content type must be 'All', 'CS' or 'Batch'. echo ERROR: The content type must be 'All', 'CS' or 'Batch'.
 +eventcreate /ID 1 /t ERROR /l APPLICATION /so "Backup" /d "The content type must be 'All', 'CS' or 'Batch'."
 +
 echo. echo.
 goto ErrorInCommandLineOptions goto ErrorInCommandLineOptions
 + 
 :ContentTypeIsAll :ContentTypeIsAll
 set Flags=%AllFlags% set Flags=%AllFlags%
 set Search=%AllSearch% set Search=%AllSearch%
 goto CheckFrequency goto CheckFrequency
 + 
 :ContentTypeIsCS :ContentTypeIsCS
 set Flags=%CSFlags% set Flags=%CSFlags%
 set Search=%CSSearch% set Search=%CSSearch%
 goto CheckFrequency goto CheckFrequency
 + 
 :ContentTypeIsBatch :ContentTypeIsBatch
 set Flags=%BatchFlags% set Flags=%BatchFlags%
 set Search=%BatchSearch% set Search=%BatchSearch%
 goto CheckFrequency goto CheckFrequency
 + 
 :CheckFrequency :CheckFrequency
 if "%Frequency%"=="Hourly" goto FrequencyIsHourly if "%Frequency%"=="Hourly" goto FrequencyIsHourly
 if "%Frequency%"=="Daily" goto FrequencyIsDaily if "%Frequency%"=="Daily" goto FrequencyIsDaily
 if "%Frequency%"=="Weekly" goto FrequencyIsWeekly if "%Frequency%"=="Weekly" goto FrequencyIsWeekly
 + 
 echo ERROR: The frequency must be 'Hourly', 'Daily' or 'Weekly'. echo ERROR: The frequency must be 'Hourly', 'Daily' or 'Weekly'.
 +eventcreate /ID 1 /t ERROR /l APPLICATION /so "Backup" /d "The frequency must be 'Hourly', 'Daily' or 'Weekly'."
 +
 echo. echo.
 goto ErrorInCommandLineOptions goto ErrorInCommandLineOptions
 + 
 :FrequencyIsHourly :FrequencyIsHourly
 set CreateBackupCommand="C:\Program Files\7-Zip\7z.exe" u -r %Flags% "%BackupDir%\Daily_Backup_01.7z" -u- -up0q0x2y2z0w2!"%BackupDir%\%Frequency%_Backup_Temp.7z" "%TargetDir%\%Search%" set CreateBackupCommand="C:\Program Files\7-Zip\7z.exe" u -r %Flags% "%BackupDir%\Daily_Backup_01.7z" -u- -up0q0x2y2z0w2!"%BackupDir%\%Frequency%_Backup_Temp.7z" "%TargetDir%\%Search%"
 goto CheckDailyBackup goto CheckDailyBackup
 + 
 :FrequencyIsDaily :FrequencyIsDaily
 set CreateBackupCommand="C:\Program Files\7-Zip\7z.exe" a -r %Flags% "%BackupDir%\%Frequency%_Backup_Temp.7z" "%TargetDir%\%Search%" set CreateBackupCommand="C:\Program Files\7-Zip\7z.exe" a -r %Flags% "%BackupDir%\%Frequency%_Backup_Temp.7z" "%TargetDir%\%Search%"
 goto CleanUpTemps goto CleanUpTemps
 + 
 :FrequencyIsWeekly :FrequencyIsWeekly
 set CreateBackupCommand=copy "%BackupDir%\Daily_Backup_01.7z" "%BackupDir%\%Frequency%_Backup_Temp.7z" set CreateBackupCommand=copy "%BackupDir%\Daily_Backup_01.7z" "%BackupDir%\%Frequency%_Backup_Temp.7z"
 goto CheckDailyBackup goto CheckDailyBackup
 + 
 :CheckDailyBackup :CheckDailyBackup
 if exist "%BackupDir%\Daily_Backup_01.7z" goto CleanUpTemps if exist "%BackupDir%\Daily_Backup_01.7z" goto CleanUpTemps
 + 
 echo ERROR: The daily backup ("%BackupDir%\Daily_Backup_01.7z") does not exist or can not be accessed. echo ERROR: The daily backup ("%BackupDir%\Daily_Backup_01.7z") does not exist or can not be accessed.
 +eventcreate /ID 1 /t ERROR /l APPLICATION /so "Backup" /d "The daily backup ('%BackupDir%\Daily_Backup_01.7z') does not exist or can not be accessed."
 +
 pause pause
 goto Done goto Done
Line 129: Line 393:
    
 :CreateBackup :CreateBackup
-%CreateBackupCommand% 
  
 +eventcreate /ID 1 /t INFORMATION /l APPLICATION /so "Backup %TargetName% %Frequency%" /d "Pre-check and set up is done. Beginning backup."
 +
 +%CreateBackupCommand%
 + 
 if not exist "%BackupDir%\%Frequency%_Backup_01.7z" goto RollDone if not exist "%BackupDir%\%Frequency%_Backup_01.7z" goto RollDone
  
Line 136: Line 403:
 rem 7Zip includes the name of the file in the content list, so we need to make sure the filename is the same for each backup. We only want to know if the *contents* are different. rem 7Zip includes the name of the file in the content list, so we need to make sure the filename is the same for each backup. We only want to know if the *contents* are different.
 rem If DOS had a more functional 'tail' command we wouldn't need to do this... rem If DOS had a more functional 'tail' command we wouldn't need to do this...
 + 
 rename "%BackupDir%\%Frequency%_Backup_Temp.7z" "%Frequency%_Compare.7z" rename "%BackupDir%\%Frequency%_Backup_Temp.7z" "%Frequency%_Compare.7z"
 "C:\Program Files\7-Zip\7z.exe" l -slt "%BackupDir%\%Frequency%_Compare.7z" > "%BackupDir%\%Frequency%_Backup_Temp_Contents.txt" "C:\Program Files\7-Zip\7z.exe" l -slt "%BackupDir%\%Frequency%_Compare.7z" > "%BackupDir%\%Frequency%_Backup_Temp_Contents.txt"
 rename "%BackupDir%\%Frequency%_Compare.7z" "%Frequency%_Backup_Temp.7z" rename "%BackupDir%\%Frequency%_Compare.7z" "%Frequency%_Backup_Temp.7z"
 + 
 rename "%BackupDir%\%Frequency%_Backup_01.7z" "%Frequency%_Compare.7z" rename "%BackupDir%\%Frequency%_Backup_01.7z" "%Frequency%_Compare.7z"
 "C:\Program Files\7-Zip\7z.exe" l -slt "%BackupDir%\%Frequency%_Compare.7z" > "%BackupDir%\%Frequency%_Backup_01_Contents.txt" "C:\Program Files\7-Zip\7z.exe" l -slt "%BackupDir%\%Frequency%_Compare.7z" > "%BackupDir%\%Frequency%_Backup_01_Contents.txt"
Line 148: Line 415:
    
 IF ERRORLEVEL 1 GOTO :DifferencesExist IF ERRORLEVEL 1 GOTO :DifferencesExist
 + 
 ECHO No differences found - throwing the backup away. ECHO No differences found - throwing the backup away.
 +eventcreate /ID 1 /t INFORMATION /l APPLICATION /so "Backup %TargetName% %Frequency%" /d "No differences found - throwing the backup away."
  
 REM No differences found, so just clean up. REM No differences found, so just clean up.
Line 156: Line 424:
 del "%BackupDir%\%Frequency%_Backup_Temp.7z" del "%BackupDir%\%Frequency%_Backup_Temp.7z"
 GOTO :done GOTO :done
 + 
 :DifferencesExist :DifferencesExist
 + 
 ECHO Differences found - storing the backup. ECHO Differences found - storing the backup.
 +eventcreate /ID 1 /t INFORMATION /l APPLICATION /so "Backup %TargetName% %Frequency%" /d "Differences found - storing the backup." 
 + 
 del "%BackupDir%\%Frequency%_Backup_01_Contents.txt" del "%BackupDir%\%Frequency%_Backup_01_Contents.txt"
 del "%BackupDir%\%Frequency%_Backup_Temp_Contents.txt" del "%BackupDir%\%Frequency%_Backup_Temp_Contents.txt"
 + 
 :RollExistingBackups :RollExistingBackups
 + 
 del "%BackupDir%\%Frequency%_Backup_20.7z" del "%BackupDir%\%Frequency%_Backup_20.7z"
 rename "%BackupDir%\%Frequency%_Backup_19.7z" "%Frequency%_Backup_20.7z" rename "%BackupDir%\%Frequency%_Backup_19.7z" "%Frequency%_Backup_20.7z"
Line 186: Line 455:
 rename "%BackupDir%\%Frequency%_Backup_02.7z" "%Frequency%_Backup_03.7z" rename "%BackupDir%\%Frequency%_Backup_02.7z" "%Frequency%_Backup_03.7z"
 rename "%BackupDir%\%Frequency%_Backup_01.7z" "%Frequency%_Backup_02.7z" rename "%BackupDir%\%Frequency%_Backup_01.7z" "%Frequency%_Backup_02.7z"
 + 
 :RollDone :RollDone
 + 
 rename "%BackupDir%\%Frequency%_Backup_Temp.7z" "%Frequency%_Backup_01.7z" rename "%BackupDir%\%Frequency%_Backup_Temp.7z" "%Frequency%_Backup_01.7z"
 + 
 goto :Done goto :Done
 + 
 :ErrorInCommandLineOptions :ErrorInCommandLineOptions
 echo Error in command line arguments. echo Error in command line arguments.
Line 208: Line 477:
 echo   Backup.bat DevLocal C:\DevLocal CS Daily True echo   Backup.bat DevLocal C:\DevLocal CS Daily True
 echo. echo.
-echo NOTE: Do NOT put double quotes in the argments - it won't work. If the directory has a space, use 8.3 formatted names:+echo NOTE: Do NOT put double quotes in the arguments - it won't work. If the directory has a space, use 8.3 formatted names:
 echo. echo.
 echo   Backup.bat FooBar z:\mydocu~1\visual~1\FooBar CS Hourly echo   Backup.bat FooBar z:\mydocu~1\visual~1\FooBar CS Hourly
 echo. echo.
 + 
 goto :Done goto :Done
 + 
 :Done :Done
 echo Done. echo Done.
backup_script_7zip.1301722487.txt.gz · Last modified: 2017/01/01 19:48 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki