From 0d16e72fde7c9152494b2411c8777a3d373db3ea Mon Sep 17 00:00:00 2001 From: zwnk Date: Fri, 30 Nov 2018 16:37:33 +0100 Subject: [PATCH] Update 'Virtual_box_backup' --- Virtual_box_backup | 137 +++++++++++++++++++++++++++++++++++++++++++++ all | 59 ------------------- 2 files changed, 137 insertions(+), 59 deletions(-) create mode 100644 Virtual_box_backup delete mode 100644 all diff --git a/Virtual_box_backup b/Virtual_box_backup new file mode 100644 index 0000000..84dd9ea --- /dev/null +++ b/Virtual_box_backup @@ -0,0 +1,137 @@ +############################# +# +# Backup Intranet +# +############################# + +# Setting path for vboxmanage +$Env:Path = "c:\Program Files\Oracle\VirtualBox\" + +# creating backup paths +$remoteBackupPath = "\\freenas\programas\VM_Backup" +$backupDriveLetterMount = "L" +$backupFilename = $backupDriveLetterMount + ":\" + [string](Get-Date).Year + [string](Get-Date).Month + [string](Get-Date).Day + "_Intranet_Backup.ova" +$vmName = "2018_intranet" +$logFile = "c:\logs\vm_backup.log" + +"################ Starting Intranet Backup at $Time ######################" | out-file $logFile -append + +# mounting backup path New-PSDrive -Name L -Root \\freenas\programas\VM_Backup\ -Persist -PSProvider FileSystem +Try +{ + New-PSDrive -Name $backupDriveLetterMount -Root $remoteBackupPath -Persist -PSProvider FileSystem + $Time=Get-Date + "[Success] Mounting Backup Path at $Time" | out-file $logFile -append +} +Catch +{ + $Time=Get-Date + "[Error] Mounting Backup Path at $Time" | out-file $logFile -append + $_.Exception.Message | out-file $logFile -append + $_.Exception.ItemName | out-file $logFile -append + Break +} + +# Stopping VM +Try +{ + $vmanagerStopVM = "VBoxManage.exe" + $vmanagerStopVM += @(" controlvm ") + $vmanagerStopVM += @($vmName) + $vmanagerStopVM += @(" poweroff") + Write-host "$vmanagerStopVM" + Invoke-Expression "$vmanagerStopVM" + $Time=Get-Date + "[Success] Stop VM at $Time" | out-file $logFile -append +} +Catch +{ + $Time=Get-Date + "[Error] to Stop VM at $Time" | out-file $logFile -append + $_.Exception.Message | out-file $logFile -append + $_.Exception.ItemName | out-file $logFile -append + Break +} + +# Backing Up VM +Try +{ + $vmanagerBackup = "VBoxManage.exe" + $vmanagerBackup += @(" export ") + $vmanagerBackup += @($vmName) + $vmanagerBackup += @(" --ovf10") + $vmanagerBackup += @(" -o ") + $vmanagerBackup += @([string]$backupFilename) + Write-host "$vmanagerBackup" + Invoke-Expression "$vmanagerBackup" + $Time=Get-Date + "[Success] Backing Up VM at $Time" | out-file $logFile -append +} +Catch +{ + $Time=Get-Date + "[Error] Backing Up VM at $Time" | out-file $logFile -append + $_.Exception.Message | out-file $logFile -append + $_.Exception.ItemName | out-file $logFile -append + Break +} + +# Start VM after Backup +Try +{ + $vmanagerStart = "VBoxManage.exe" + $vmanagerStart += @(" startvm ") + $vmanagerStart += @($vmName) + $vmanagerStart += @(" -type headless") + Write-host "$vmanagerStart" + Invoke-Expression "$vmanagerStart" + $Time=Get-Date + "[Success] Starting VM at $Time" | out-file $logFile -append +} +Catch +{ + $Time=Get-Date + "[Error] Starting VM at $Time" | out-file $logFile -append + $_.Exception.Message | out-file $logFile -append + $_.Exception.ItemName | out-file $logFile -append + Break +} +# remove old Backups +$backupFileCount = ( Get-ChildItem -Filter *.ova $remoteBackupPath | Measure-Object ).Count +$backupPath = $backupDriveLetterMount + ":\" + +DO +{ + $Item = Get-ChildItem -Path $remoteBackupPath -Filter *.ova | Sort CreationTime | select -First 1 + Write-Host "Oldest file/folder in $FolderName is $($Item.FullName)" + Try + { + Remove-Item -Path $($Item.FullName) -Force + $Time=Get-Date + "[Success] Deleting old backup at $Time" | out-file $logFile -append + } + Catch + { + $Time=Get-Date + "[Error] Deleting old backup at $Time" | out-file $logFile -append + $_.Exception.Message | out-file $logFile -append + $_.Exception.ItemName | out-file $logFile -append + Break + } + $backupFileCount = ( Get-ChildItem -Filter *.ova $remoteBackupPath | Measure-Object ).Count +} While ($backupFileCount -gt 3) + +# removing Network drive +Try +{ + Remove-PSDrive -Name $backupDriveLetterMount +} +Catch +{ + $Time=Get-Date + "[Error] Umounting Network drive at $Time" | out-file $logFile -append + $_.Exception.Message | out-file $logFile -append + $_.Exception.ItemName | out-file $logFile -append + Break +} + diff --git a/all b/all deleted file mode 100644 index e1fdf9d..0000000 --- a/all +++ /dev/null @@ -1,59 +0,0 @@ -############################# -# -# Backup Intranet -# -############################# - -# Setting path for vboxmanage -$Env:Path = "c:\Program Files\Oracle\VirtualBox\" - -# creating backup paths -$remoteBackupPath = "\\freenas\programas\VM_Backup" -$backupDriveLetterMount = "L" -$backupFilename = $backupDriveLetterMount + ":\" + [string](Get-Date).Year + [string](Get-Date).Month + [string](Get-Date).Day + "_Intranet_Backup.ova" -$vmName = "2018_intranet" - -# mounting backup path New-PSDrive -Name L -Root \\freenas\programas\VM_Backup\ -Persist -PSProvider FileSystem -New-PSDrive -Name $backupDriveLetterMount -Root $remoteBackupPath -Persist -PSProvider FileSystem - -# stoping vm -$vmanagerStopVM = "VBoxManage.exe" -$vmanagerStopVM += @(" controlvm ") -$vmanagerStopVM += @($vmName) -$vmanagerStopVM += @(" poweroff") -Write-host "$vmanagerStopVM" -Invoke-Expression "$vmanagerStopVM" - -#backing up vm -$vmanagerBackup = "VBoxManage.exe" -$vmanagerBackup += @(" export ") -$vmanagerBackup += @($vmName) -$vmanagerBackup += @(" --ovf10") -$vmanagerBackup += @(" -o ") -$vmanagerBackup += @([string]$backupFilename) -Write-host "$vmanagerBackup" -Invoke-Expression "$vmanagerBackup" - -# start vm -$vmanagerStart = "VBoxManage.exe" -$vmanagerStart += @(" startvm ") -$vmanagerStart += @($vmName) -$vmanagerStart += @(" -type headless") -Write-host "$vmanagerStart" -Invoke-Expression "$vmanagerStart" - -# remove old Backups -$backupFileCount = ( Get-ChildItem -Filter *.ova $remoteBackupPath | Measure-Object ).Count -$backupPath = $backupDriveLetterMount + ":\" - -DO -{ - $Item = Get-ChildItem -Path $remoteBackupPath -Filter *.ova | Sort CreationTime | select -First 1 - Write-Host "Oldest file/folder in $FolderName is $($Item.FullName)" - Remove-Item -Path $($Item.FullName) -Force - $backupFileCount = ( Get-ChildItem -Filter *.ova $remoteBackupPath | Measure-Object ).Count - -} While ($backupFileCount -gt 3) - -# removing backup path -Remove-PSDrive -Name $backupDriveLetterMount