Backup script for Windows OS (BATCH)

Discussions related to using VirtualBox on Windows hosts.
Post Reply
antoniofr
Posts: 3
Joined: 22. Nov 2015, 17:36

Backup script for Windows OS (BATCH)

Post by antoniofr »

Hi everyone!

I'd like to contribute to the community with this stuff. It's a backup script for Windows operating systems:

Download scripts here: http://www.michublog.com/informatica/sc ... de-windows


Method 1: poweroff VM and copy folder

Code: Select all

@ECHO OFF
CLS
 
SET "VM=Ubuntu Server 14.04"
SET "VM_DIR=C:\VirtualBox VMs\"
SET "BACKUP_DIR=C:\VirtualBox VMs\backup\"
SET VBOXMANAGE="C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
SET RAR="C:\Program Files\WinRAR\Rar.exe"
SET CICLOS=10
SET PAUSAS=5
SET SOLICITUD_APAGADO=0
SET ERROR=0
SET RUNNING_INICIAL=2
 
ECHO Starting backup VM "%VM%"...
 
:check_running
%VBOXMANAGE% list runningvms > %TEMP%\runningvms.txt
FIND "%VM%" %TEMP%\runningvms.txt > nul
 
IF %errorlevel% EQU 0 (
    SET RUNNING=1
) ELSE (
    SET RUNNING=0
)
 
IF %RUNNING_INICIAL% EQU 2 (
    SET RUNNING_INICIAL=%RUNNING%
)
 
IF %CICLOS% GTR 0 (
    IF %RUNNING% EQU 1 (
        IF %SOLICITUD_APAGADO% EQU 0 (
            SET SOLICITUD_APAGADO=1
            ECHO Power off VM "%VM%"...
            %VBOXMANAGE% controlvm "%VM%" acpipowerbutton
        )
 
        ECHO Waiting VM "%VM%" shut down...
        TIMEOUT /t %PAUSAS% /nobreak > nul
        SET /a CICLOS-=1
        GOTO check_running
    ) ELSE (
        ECHO VM "%VM%" is power off now...
    )
)
 
DEL %TEMP%\runningvms.txt
 
IF %RUNNING% EQU 1 (
    SET ERROR=1
    GOTO end
)
 
:copy_vm
ECHO Copying VM "%VM%"...
TIMEOUT /t 3 /nobreak > nul
XCOPY "%VM_DIR%%VM%" "%BACKUP_DIR%%VM%" /E /I /Y
 
IF %errorlevel% NEQ 0 (
    SET ERROR=2
    GOTO end
)
 
:start_vm
IF %RUNNING_INICIAL% EQU 1 (
    ECHO Starting VM "%VM%"...
    %VBOXMANAGE% startvm "%VM%"
     
    IF %errorlevel% NEQ 0 (
        SET ERROR=3
        GOTO end
    )
)
 
:compress_backup
ECHO Compressing backup VM "%VM%"...
SET FECHA=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
%RAR% a -r -ep1 -o+ "%BACKUP_DIR%%VM% %FECHA%.rar" "%BACKUP_DIR%%VM%"
 
IF %errorlevel% NEQ 0 (
    SET ERROR=4
    GOTO end
)
 
:delete_uncompressed_backup
ECHO Removing uncompressed backup VM "%VM%"...
RMDIR "%BACKUP_DIR%%VM%" /S /Q
 
IF %errorlevel% NEQ 0 (
    SET ERROR=5
    GOTO end
)
 
:end
IF %ERROR% GTR 0 (
    ECHO Error ^(%ERROR%^) while creating backup VM "%VM%".
) ELSE (
    ECHO Backup finished OK.
)
Method 2: save VM state and export to OVF and VMDK

Code: Select all

@ECHO OFF
CLS
 
SET "VM=Ubuntu Server 14.04"
SET "VM_DIR=C:\VirtualBox VMs\"
SET "BACKUP_DIR=C:\VirtualBox VMs\backup\"
SET VBOXMANAGE="C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
SET ERROR=0
SET RUNNING_INICIAL=2
 
ECHO Starting backup VM "%VM%"...
 
:check_running
%VBOXMANAGE% list runningvms > %TEMP%\runningvms.txt
FIND "%VM%" %TEMP%\runningvms.txt > nul
 
IF %errorlevel% EQU 0 (
    SET RUNNING_INICIAL=1
) ELSE (
    SET RUNNING_INICIAL=0
)
 
DEL %TEMP%\runningvms.txt
 
IF %RUNNING_INICIAL% EQU 1 (
    ECHO Saving state VM "%VM%"...
    %VBOXMANAGE% controlvm "%VM%" savestate
 
    IF %errorlevel% NEQ 0 (
        SET ERROR=1
        GOTO end
    )
)
 
:export_vm
ECHO Exporting VM "%VM%"...
TIMEOUT /t 3 /nobreak > nul
SET FECHA=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
%VBOXMANAGE% export "%VM%" -o "%BACKUP_DIR%%VM% %FECHA%.ovf"
 
IF %errorlevel% NEQ 0 (
    SET ERROR=2
    GOTO end
)
 
:start_vm
IF %RUNNING_INICIAL% EQU 1 (
    ECHO Starting VM "%VM%"...
    %VBOXMANAGE% startvm "%VM%"
     
    IF %errorlevel% NEQ 0 (
        SET ERROR=3
        GOTO end
    )
)
 
:end
IF %ERROR% GTR 0 (
    ECHO Error ^(%ERROR%^) while creating backup VM "%VM%".
) ELSE (
    ECHO Backup finished OK.
)
More info here: http://www.michublog.com/informatica/sc ... de-windows

I hope it helped.
mpack
Site Moderator
Posts: 39134
Joined: 4. Sep 2008, 17:09
Primary OS: MS Windows 10
VBox Version: VirtualBox+Oracle ExtPack
Guest OSses: Mostly XP

Re: Backup script for Windows OS (BATCH)

Post by mpack »

Thank you for contributing.
Post Reply