Vladimir EreminJest to gościnny wpis autorstwa Vladimira Eremina, kierownika produktu w firmie Veeam.Vladimir aktywnie udziela się na forach VeeamTwitterze i Spiceworks. Jedną z jego specjalizacji jest środowisko PowerShell i w niniejszym wpisie przedstawia związane z nim procedury. Wszelkie pytania na temat zasad korzystania z PowerShell omówionych w tym wpisie można zadawać na forach Veeam. Ponadto umożliwiamy pobranie przykładowego skryptu dla VMware i dla Hyper-V. Na jego temat można porozmawiać na forach Veeam.

Rozwiązanie Veeam Backup Free Edition cieszy się największą popularnością wśród bezpłatnych narzędzi firmy Veeam. Głównym powodem jest funkcja VeeamZIP, która umożliwia samodzielne wykonywanie pełnych kopii zapasowych nieograniczonej liczby maszyn wirtualnych. Jednak funkcja ta zawsze miała drobne, ale denerwujące ograniczenie: nie pozwalała zaplanować regularnego tworzenia kopii zapasowych. Ponieważ VeeamZIP można uruchomić tylko ręcznie, interfejs użytkownika rzeczywiście po prostu nie zawiera opcji umożliwiającej zaplanowanie regularnych zadań backupu. Wszystkich użytkowników, którzy dobrze znają tę sytuację, ucieszy informacja, że w wersji Update 2 ta niedogodność została wyeliminowana! Wyszliśmy naprzeciw zastrzeżeniom zgłaszanym na forum Veeam, na Twitterze oraz w innych miejscach i udostępniliśmy we Free Edition polecenie cmdlet PowerShell o nazwie Start-VBRZip.

Zasada działania

Jak wspomnieliśmy, główną zaletą rozwiązania Veeam Backup Free Edition jest możliwość tworzenia kopii zapasowych maszyn wirtualnych przy użyciu funkcji VeeamZIP (a także oczywiście odzyskiwania maszyn, plików gości i elementów aplikacji z tych kopii zapasowych). Funkcja VeeamZIP zawsze tworzy plik pełnej kopii zapasowej (.vbk), który stanowi niezależny punkt przywracania. Free Edition umożliwia zapisanie pliku kopii zapasowej w repozytorium kopii zapasowych, w folderze lokalnym lub udziale sieciowym.

W przypadku korzystania z funkcji VeeamZIP operację backupu wybranej maszyny wirtualnej można rozpocząć natychmiast. Tego typu operacja wymaga minimalnej liczby ustawień i dlatego jej ręczne uruchamianie jest wyjątkowo łatwe.

image

Nowa wersja Update 2 umożliwia napisanie prostego skryptu PowerShell (tutaj w wersji dla VMware, a tutaj dla Hyper-V), który uruchamia funkcję VeeamZIP dla wybranej maszyny wirtualnej i ustawia dla niej wybrany przez użytkownika harmonogram za pośrednictwem Harmonogramu Windows. Opracowaliśmy nawet poniższy przykładowy skrypt, który nie tylko uruchamia tworzenie kopii zapasowych VeeamZIP określonych maszyn wirtualnych, ale również powoduje wysłanie pocztą e-mail czytelnego raportu z wynikami tych operacji!

Parametry skryptu

Skrypt wykonuje kopię zapasową ad hoc wybranych maszyn wirtualnych znajdujących się na autonomicznym hoście lub klastrze albo na serwerze vCenter. Przed uruchomieniem skryptu należy podać trzy obowiązkowe parametry: nazwy maszyn wirtualnych do uwzględnienia w kopii zapasowej, host, na którym znajdują się maszyny, oraz docelowy katalog zapisu plików kopii zapasowych. Uwaga: skrypt został zaktualizowany 18 maja na podstawie opinii użytkowników.
##################################################################

# Zmienne definiowane przez użytkownika

##################################################################

# Rozdzielone przecinkami nazwy maszyn wirtualnych do uwzględnienia w kopii zapasowej (obowiązkowo). Przykładowo: $VMNames = “VM1”,”VM2”

$VMNames = ""

# Nazwa serwera vCenter lub autonomicznego hosta, na którym znajdują się maszyny do uwzględnienia w kopii zapasowej (obowiązkowo)

$HostName = ""

# Katalog, w którym mają zostać zapisane kopie zapasowe maszyn (obowiązkowo, na przykład C:\Backup)

$Directory = ""

 

Opcjonalnie można zmienić stopień kompresji i okres przechowywania, wyłączyć przełączanie maszyn VMware w stan spoczynku (quiescence), włączyć szyfrowanie i określić ustawienia powiadomień:

# Żądany stopień kompresji (opcjonalnie, możliwe wartości: 0 — brak, 4 — stopień uwzględniający deduplikację, 5 — optymalny, 6 — wysoki, 9 — ekstremalny)

$CompressionLevel = "5"

# Przełączenie maszyny wirtualnej w stan spoczynku na czas wykonywania migawki (opcjonalnie; w tym przypadku w systemie operacyjnym gościa wymagane są narzędzia VMware lub składniki integracji Hyper-V; możliwe wartości: $True/$False)

$EnableQuiescence = $True

# Zabezpieczenie utworzonej kopii zapasowej kluczem szyfrującym (opcjonalnie, $True/$False)

$EnableEncryption = $False

# Klucz szyfrujący (opcjonalnie, ścieżka do bezpiecznego ciągu znaków)

$EncryptionKey = ""

# Ustawienia przechowywania (opcjonalnie; domyślne pliki VeeamZIP nie są usuwane i pozostają w określonej lokalizacji bezterminowo;

# możliwe wartości: Never, Tonight, TomorrowNight, In3days, In1Week, In2Weeks, In1Month)

$Retention = "Never"

 

Jeśli po utworzeniu kopii zapasowej chcemy otrzymać raport pocztą e-mail, dodatkowo określamy poniższe ustawienia powiadomień.

##################################################################

# Ustawienia powiadomień

##################################################################

# Włączenie powiadomień (opcjonalnie)

$EnableNotification = $True

# Serwer pocztowy SMTP

$SMTPServer = ""

# Nadawca e-maila

$EmailFrom = ""

# Adresat e-maila

$EmailTo = ""

# Temat e-maila

$EmailSubject = ""

 

Wygenerowany raport w postaci wiadomości e-mail będzie wyglądał następująco:

Name Start Time End Time Result Details
CentOS-tiny_2015-03-26T180459 3/26/2015 6:04:59 PM 3/26/2015 6:07:17 PM Warning Processing finished with warnings at 3/26/2015 6:07:13 PM Cannot use VMware Tools quiescence because VMware Tools are not found.
CentOS-tiny_replica_2015-03-26T180720 3/26/2015 6:07:20 PM 3/26/2015 6:11:20 PM Success Processing finished at 3/26/2015 6:11:18 PM

Wszystkie powyższe ustawienia można skonfigurować przez wprowadzenie odpowiedniej wartości określonych zmiennych. Jeśli na przykład chcemy włączyć szyfrowanie, w zmiennej $EnableEncryption należy ustawić wartość $True (logiczną) i podać klucz szyfrujący (zobacz następną sekcję). Ponadto, jeśli pliki kopii zapasowych mają być usuwane po dwóch tygodniach, należy w zmiennej $Retention ustawić wartość „In2Weeks” (ciąg znaków). Nie trzeba pamiętać zastosowania każdej zmiennej i jej dopuszczalnych wartości — dla wygody przykładowy skrypt zawiera krótki opis każdej zmiennej.

Szyfrowanie

Jeśli chodzi o szyfrowanie, to bezpieczeństwo danych jest kluczowym elementem strategii backupu. Dane zawarte w kopiach zapasowych muszą być chronione przed nieautoryzowanym dostępem, zwłaszcza w przypadku, gdy dane ze szczególnie ważnych maszyn wirtualnych są w postaci kopii zapasowych przesyłane do lokalizacji zewnętrznej lub archiwizowane na taśmach. Aby zabezpieczyć firmowe dane, kopie zapasowe utworzone przy użyciu funkcji VeeamZIP można szyfrować. Jak już wspomniano, wymaga to wybrania pliku zawierającego hasło szyfrowania.

Oczywiście hasło można by podać w skrypcie w postaci zwykłego ciągu tekstowego. Jednak normalne ciągi tekstowe nie są bezpieczne (oględnie mówiąc), ponieważ są przechowywane w pamięci w postaci zwykłego tekstu. Dlatego polecenia cmdlet w interfejsie PowerShell nie akceptują haseł w tej postaci.

Lepszym rozwiązaniem jest bezpieczny ciąg znaków. Zawartość takiego ciągu jest szyfrowana w pamięci. Stosowane szyfrowanie ma charakter odwracalny, a więc hasło może w razie potrzeby zostać odszyfrowane, ale wyłącznie przez podmiot, który je zaszyfrował. Chcąc utworzyć bezpieczny ciąg znaków, należy otworzyć konsolę PS i wpisać poniższe dwa wiersze. Po wykonaniu tego kodu pojawi się monit o wpisanie hasła, po czym hasło zostanie zapisane jako bezpieczny ciąg w pliku:

$SecurePassword = Read-Host -Prompt "Wprowadź hasło" -AsSecureString

$SecurePassword | ConvertFrom-SecureString > “Katalog, w którym ma być przechowywany bezpieczny ciąg, na przykład C:\SecureString.txt”

Następnie należy określić w głównym skrypcie ścieżkę do nowo utworzonego pliku:
# Zabezpieczenie utworzonej kopii zapasowej kluczem szyfrującym (opcjonalnie, $True/$False)

$EnableEncryption = $True

# Klucz szyfrujący (opcjonalnie, ścieżka do bezpiecznego ciągu znaków)

$EncryptionKey = "C:\SecureString.txt"

Planowanie skryptu

Zanim zaplanujemy wykonywanie skryptu, musimy uruchomić go ręcznie i sprawdzić, czy działa zgodnie z oczekiwaniami.

Najlepszym sposobem na zaplanowanie skryptu, który okresowo automatycznie wykonuje kopię zapasową, jest użycie Harmonogramu zadań systemu Windows. W tym celu przechodzimy do narzędzia Harmonogram zadań i tworzymy nowe zadanie podstawowe:

image

Podajemy nazwę i wprowadzamy opis, który ułatwi zapamiętanie jego przeznaczenia.

Następna strona to Wyzwalacz zadania. Nie wymaga ona szczególnych wyjaśnień. Dostępne opcje zapewniają dużą elastyczność (tworzenie kopii zapasowych od kilku razy dziennie do jednego razu w miesiąc). Wybieramy tutaj opcję odpowiadającą wymaganej wartości RPO. Większość użytkowników decyduje się codzienne tworzenie kopii zapasowej:

image

Czas uruchamiania zadania ustawiamy poza godzinami pracy. W tym przykładzie zadanie będzie uruchamiane co wieczór o 22:00 od 22 kwietnia 2015 r.

image

Na kolejnej stronie Akcja określamy, że zaplanowane zadanie powinno uruchamiać program, i klikamy Dalej.

clip_image002

Na stronie Uruchamianie programu w polu Program/skrypt wpisujemy następujące polecenie:

Powershell -file [ścieżka do pliku Veeamzip.ps1]

clip_image004

To wszystko! Jednak po utworzeniu zadania możemy je otworzyć, aby wprowadzić kilka dodatkowych zmian. W tym celu zaznaczamy opcję „Otwórz okno dialogowe Właściwości dla tego zadania, kiedy kliknę Zakończ” (na przedstawionym zrzucie: Open the Properties dialog for this task when I click Finish):

clip_image006

Ponieważ zadanie ma być uruchamiane na serwerze, a użytkownik może nie być zalogowany o zaplanowanej godzinie wykonywania zadania, warto umożliwić jego uruchamianie niezależnie od zalogowania użytkownika. W tym celu należy skojarzyć poświadczenia użytkownika z zadaniem.

clip_image008

Na zakończenie klikamy zadanie prawym przyciskiem myszy i wybieramy Uruchom, aby sprawdzić, czy zostanie wykonane prawidłowo:

clip_image009

Interfejs PowerShell daje użytkownikom rozwiązania Veeam Backup Free Edition możliwości, o których zawsze marzyli.

Dzięki nim użytkownicy będą mogli zrealizować bardzo ważny cel: tworzyć zaplanowane kopie zapasowe przy użyciu rozwiązania Veeam Backup Free Edition, które udostępnia znacznie więcej funkcji backupu i odzyskiwania niż inne korzystające ze skryptów bezpłatne narzędzia do backupu.

GD Star Rating
loading...
Veeam Backup Free Edition: teraz z interfejsem PowerShell!, 5.0 out of 5 based on 1 rating
Veeam Availability Suite — Pobierz darmowe wersje trial

Rick Vanover
Author: Rick Vanover

Rick Vanover (vExpert, MCITP, VCP) to specjalista ds. strategii produktowej firmy Veeam Software stacjonujący w Columbus w stanie Ohio (USA). Jest popularnym blogerem, autorem podcastów i aktywnym członkiem społeczności związanej z wirtualizacją. Jego doświadczenie obejmuje administrowanie systemami i zarządzanie infrastrukturą IT, a ostatnio szczególnie zajmuje... 

Opublikowany: January 25, 2016