Backup script

Discussion in 'Software' started by Gu55, Aug 28, 2014.

  1. Gu55

    Gu55 Private E-2

    Hi Guys,
    I'm working on a backup script in .bat format.

    the script creates a backup of a MYSQL DB locally and then zips it and then copies it to a newtork share before deleting the local copy.

    The issue i have is that for each location that the script is run at i have to manually edit the location so that the script can copy the zip to the appropriate network share. there are over 50 locations.

    so for example
    location 4066 has 4 PC's located there.
    PC 1 hostname = cgb4066deep01 - copies backsup to cgb4066back01
    PC 2 hostname = cgb4066deep01 - copies backsup to cgb4066back01
    PC 3 hostname = cgb4066deep01 - copies backsup to cgb4066back01
    PC 4 hostname = cgb4066back01 - copies backsup to cgb4066back01

    In my script i have tried to set some variables so that the script picks out the location number from computername and uses that to determine where to copy the zip file to. I've highlighted the section in RED to identify it.

    any help would be much appreciated.
    Gu55


    @echo off

    set backupFolder=C:\MYSQLbackupTEMP

    set mySQLInstallFolder=C:\MySQL
    set databaseUser=root
    set databasePassword=************
    set databasesToBackup=LLP
    set numBackupsToKeep=4

    SET PATH=%PATH%;"%mySQLInstallFolder%\bin"

    if not exist "%backupFolder%" (
    mkdir %backupFolder%
    )

    set n=%computername%
    set n=%n:~3,4%
    for %%d in (%n%) do (
    SET STOREID=%%d
    )
    SET STOREID=%STOREID:~-7%
    IF NOT DEFINED TILLID set copyToFolder=\\cgb%STOREID%back01\MYSQL_EPOS_DB_Backups\
    REM IF NOT DEFINED TILLID set copyToFolder=\\cgb%STOREID%02\dbBackups


    > %TEMP%\$$$date$$$.vbs echo Wscript.Echo Year(Now()) ^& " " ^& Month(Now()) ^& " " ^& Day(Now()) ^& " " ^& Hour(Now()) ^& " " ^& Minute(Now()) ^& " " ^& Second(Now())
    for /f "tokens=1-6" %%g in ('cscript //nologo %TEMP%\$$$date$$$.vbs') do (
    set yy=%%g
    set mm=%%h
    set dd=%%i
    set hour=%%j
    set min=%%k
    set sec=%%l
    )
    del %TEMP%\$$$date$$$.vbs

    echo ----------------------------------------
    echo %dd%/%mm%/%yy% %hour%:%min%:%sec% - MySQL Backup Script Starting...

    for %%d in (%databasesToBackup%) do (
    if exist "%backupFolder%\%%d-%yy%%mm%%dd%%hour%%min%%sec%-%computername%.zip" (
    echo Backup file for today already exists for DB '%%d', skipping.
    )
    if not exist "%backupFolder%\%%d-%yy%%mm%%dd%%hour%%min%%sec%-%computername%.zip" (
    echo Backing up database %%d to %backupFolder%\%%d-%yy%%mm%%dd%%hour%%min%%sec%-%computername%.zip
    mysqldump -u %databaseUser% -p%databasePassword% -r %backupFolder%\%%d-%yy%%mm%%dd%%hour%%min%%sec%-%computername%.sql %%d
    IF NOT EXIST %backupFolder%\%%d-%yy%%mm%%dd%%hour%%min%%sec%-%computername%.sql GOTO ERROR

    cd\
    cd RetailJ\support\7zip
    7za.exe a -y %backupFolder%\%%d-%yy%%mm%%dd%%hour%%min%%sec%-%computername%.zip %backupFolder%\%%d-%yy%%mm%%dd%%hour%%min%%sec%-%computername%.sql

    del /Q /F %backupFolder%\%%d-%yy%%mm%%dd%%hour%%min%%sec%-%computername%.sql

    IF NOT EXIST %backupFolder%\%%d-%yy%%mm%%dd%%hour%%min%%sec%-%computername%.zip GOTO ERROR

    IF NOT "%copyToFolder%"=="" (
    echo Copying backup file to second location: %copyToFolder%\%%d-%yy%%mm%%dd%%hour%%min%%sec%-%computername%.zip
    copy /Y %backupFolder%\%%d-%yy%%mm%%dd%%hour%%min%%sec%-%computername%.zip %copyToFolder%\%%d-%yy%%mm%%dd%%hour%%min%%sec%-%computername%.zip
    )
    )
    dir /O-D /A-D /b %backupFolder%\%%d-*.zip > %TEMP%\%%d_backups.txt
    for /F "skip=%numBackupsToKeep% tokens=1" %%a in (%TEMP%\%%d_backups.txt) do (
    echo Deleting old backup file %backupFolder%\%%a
    del /Q /F %backupFolder%\%%a
    IF NOT "%copyToFolder%"=="" del /Q /F %copyToFolder%\%%a
    )
    del /Q /F %TEMP%\%%d_backups.txt
    )

    GOTO END

    :ERROR
    echo Error creating MySQL backup

    :END
    > %TEMP%\$$$date$$$.vbs echo Wscript.Echo Year(Now()) ^& " " ^& Month(Now()) ^& " " ^& Day(Now()) ^& " " ^& Hour(Now()) ^& " " ^& Minute(Now()) ^& " " ^& Second(Now())
    for /f "tokens=1-6" %%g in ('cscript //nologo %TEMP%\$$$date$$$.vbs') do (
    set yy=%%g
    set mm=%%h
    set dd=%%i
    set hour=%%j
    set min=%%k
    set sec=%%l
    )
    PAUSE
    echo %dd%/%mm%/%yy% %hour%:%min%:%sec% - MySQL Backup Script Finished
    echo ----------------------------------------
     

MajorGeeks.Com Menu

Downloads All In One Tweaks \ Android \ Anti-Malware \ Anti-Virus \ Appearance \ Backup \ Browsers \ CD\DVD\Blu-Ray \ Covert Ops \ Drive Utilities \ Drivers \ Graphics \ Internet Tools \ Multimedia \ Networking \ Office Tools \ PC Games \ System Tools \ Mac/Apple/Ipad Downloads

Other News: Top Downloads \ News (Tech) \ Off Base (Other Websites News) \ Way Off Base (Offbeat Stories and Pics)

Social: Facebook \ YouTube \ Twitter \ Tumblr \ Pintrest \ RSS Feeds