Microsoft Hyper-V backup dysku maszyny wirtualnej.

Zajmę się dziś tematem tworzenia kopii zapasowych wirtualnych dysków twardych. Założenia są następujące:

  • Wirtualizator, to Microsoft Hyper-V
  • Bez użycia komercyjnego – dedykowanego oprogramowania.
  • Kopia jest wykonywania na udział sieciowy.

Wykorzystam do tego PowerShell. Na początek tworzymy plik z zapisanymi poświadczeniami do udziału sieciowego. W poniższym skrypcie musimy uzupełnić dwie rzeczy, w $securePassword wstawiamy swoje hasło zamiast gfgdsgdgsdgF5 oraz nawę użytkownika zamiast What-IT\Administrator. Można również zmienić ścieżkę do pliku C:\cred.xml, będzie ona wykorzystana w kolejnym skrypcie więc i tam trzeba będzie ją poprawić.

$securePassword = "gfgdsgdgsdgF5" | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ("What-IT\Administrator", $securePassword)
$credential | Export-CliXml -Path "C:\cred.xml"

Uruchamiam teraz Microsoft PowerShell ISE, kopiuję powyższy kod i uruchamiam go:

Jeżeli wykonanie zakończyło się bez błędu to przechodzimy do kolejnego kroku. Ten kod również musimy spersonalizować

  • Zmienną $vmName zmieniamy na nazwę naszej maszyny wirtualnej.
  • Zmienną $diskPath zmieniamy na ścieżkę do dysku, który jest podpięty do tej maszyny wirtualnej i dla którego chcemy wykonać kopię.
  • W zmiennej $networkPath podajemy ścieżkę do udziału sieciowego, gdzie kopia ma zostać zapisana.
$vmName = "What-IT"
$checkpointName = "Snapshot_$(Get-Date -Format yyyyMMddHHmmss)"
$diskPath = "E:\Hyper-V\What-IT\Virtual Hard Disks\What-IT.vhdx"
$networkPath = "\\192.168.3.180\s\BACKUP\VM"
$destFileName="Backup:\$vmName-$(Get-Date -Format yyyyMMddHHmmss).vhdx"

$credential = Import-CliXml -Path "C:\cred.xml"
$username = $credential.UserName
$password = $credential.GetNetworkCredential().Password
New-PSDrive -Name "Backup" -PSProvider FileSystem -Root $networkPath -Credential $credential
Checkpoint-VM -Name $vmName -SnapshotName $checkpointName
Copy-Item -Path $diskPath -Destination $destFileName
Remove-PSDrive -Name "Backup"
Remove-VMSnapshot -VMName $vmName -Name $checkpointName

Tak jak poprzednio, kopiujemy kod i uruchamiamy go w PowerShell ISE:

Jeżeli wykonanie skryptu nie zakończy się błędem, to w udziale sieciowym powinny się pojawić kopie naszego wirtualnego dysku twardego. W nazwie pliku znajduje się nazwa maszyny wirtualnej, której kopia dotyczy oraz data i godzina wykonania kopii. W zależności od rozmiarów dysku twardego, prędkości sieci, skrypt może się wykonywać od kliku sekund do kilkudziesięciu minut.

Cały proces można zautomatyzować uruchamiając cyklicznie skrypt w harmonogramie zadań. Należy wtedy pamiętać o regularnym usuwaniu (ręcznym lub automatycznym) wykonanych kopii.

Koniec 🙂

Jeżeli pomogłem to Postaw mi kawę na buycoffee.to ,a będę miał więcej energii na pisanie kolejnych ciekawych wpisów.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *