是否备份 Windows 8 客户端 Hyper-V 机器?

是否备份 Windows 8 客户端 Hyper-V 机器?

我在 Windows 8 Pro 中使用 Hyper-V 运行至少一台 VM,并且我想在它仍在运行时对其进行备份。

Windows Server 2012 通过内置的“Windows Server Backup”引擎很好地处理了这个问题。

但我找不到在 Windows 8 上实现此目的的方法。

我发现HyperV备份以及用于备份 HyperV 的开源应用程序,但它在 Windows 8 上不起作用。

答案1

Windows 服务器备份、系统还原、以前的版本、Windows 备份/Windows 7 文件恢复和 Windows 上的大多数其他备份技术都使用称为卷影复制 (VSS) 的服务来执行备份。

使用 VSS 的备份软件将能够对虚拟机进行快照,然后备份虚拟机没有将它们关闭。

为什么不使用 Windows Backup(包含在 Windows 8 Pro 中)来执行备份?

答案2

这是我用来备份在 Windows 8 上运行的客户端虚拟机的 PowerShell 脚本,尽管我并不实时地执行它们。PowerShell 不是我最擅长的套件,而且它做出了一些假设,但我希望它对帮助其他人快速入门有所帮助

function SendMail([string]$Subject, [string]$Body)
{
    #SMTP Variables

    $EmailFrom = "[email protected]"
    $EmailTo = "[email protected]" 
    $SMTPServer = "smtp.gmail.com" 
    $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
    $SMTPClient.EnableSsl = $true 
    $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("Username", "Password"); 

    $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

}

function init()
{
    # Delete existing shares

    #Net Use * /delete /y

    $guid = [guid]::NewGuid()
    $vms = Get-VM        
}

try
{
    $guid = [guid]::NewGuid()
    $vms = Get-VM  

    $pass = cat C:\HVBackup\securestring.txt | ConvertTo-SecureString
    $mycred = New-Object -typename System.Management.Automation.PSCredential -ArgumentList "Username",$pass

    New-PSDrive -Name V -PSProvider FileSystem -Root "\\NAS\Hyper-V" -Persist -Credential $mycred

    $Subject = "Notification from Virtual Machine Backup" 
    $Body = "Starting Virtual Machine Backup." 

    SendMail($Subject,$Body)

    foreach ($vm in $vms)
    {
        if($vm.State -eq "Running") { Stop-VM $vm.VMName -Save -Force }
    }

    #Stop-VM * -Save -Force

    # Delete all the files older than 7 days

    $TargetFolder = “V:\Backups”
    foreach ($i in Get-ChildItem $TargetFolder -recurse)
    {
        if ($i.CreationTime -lt ($(Get-Date).AddDays(-7)))
        {
            Remove-Item $File.FullName -force
        }
    }

    # Export the virtual machines to directory

    Export-VM * V:\Backups\$guid\

    $Subject = "Notification from Virtual Machine Backup" 
    $Body = "Finished Virtual Machine Backup." 

    SendMail($Subject,$Body)

    exit 0

}
catch [System.Exception]
{
    $Subject = "Notification from Virtual Machine Backup" 
    $Body = "There has been an error whilst running virtual machine backup." + $_.Exception.Message

    Write-Host($_.Exception.Message)

    SendMail($Subject,$Body)

    exit 1
}
finally
{

    Remove-PSDrive V

    $vms = Get-VM

    foreach ($vm in $vms)
    {
        if($vm.State -eq "Saved") { Start-VM $vm.VMName }
    }

    # Start the domain controller virtual machine

    #Start-VM dc.applicita.local
}

这是我用来生成密码文件的脚本。

read-host -assecurestring | ConvertFrom-SecureString | out-file C:\HVBackup\securestring.txt

答案3

我知道这是一个老问题。我在搜索如何备份在 Windows 10 上运行的 Hyper-V 计算机的解决方案时发现了它。我相信 Windows 10 中的情况与 Windows 8 中的情况相同。所以希望以下内容对遇到此问题的其他任何人都有用。

最重要的是,如果不使用第三方工具,你就无法备份在 Windows 8/10 上运行的 hyper-v 机器。wbadmin允许您在 Windows 服务器上备份 hyper-v 机器的命令不支持在 Windows 8/10 上备份 hyper-v 机器。

然而,虽然你不能备份, 你可以出口。导出几乎与备份一样好,可能最显着的区别是虚拟机不知道它已被“备份”,因此例如 SQL 服务器不知道已运行备份,这可能会对日志被截断的时间产生影响。

您可以使用 Hyper-V 管理器 GUI 执行导出,或者如果您想从命令行执行导出(如果您希望由任务计划程序运行它,您可能会这样做),则 powershell cmdlet 是:

Export-VM -Name 'VM-Name' -PATH 'C:\Export-Path'

如果你想从 .cmd/.bat 文件运行它,那么它变成:

powershell -NonInteractive -Command "Export-VM -Name 'VM-Name' -PATH 'C:\Export-Path'"

请注意,如果您要导出到网络共享,则需要授予运行 Hyper-V 的计算机对网络共享的访问权限。

相关内容