VCB prosty skrypt do tworzania kopii zapasowych.

Tworzenie kopii zapasowych dla maszyn wirtualnych nie jest ani trudne, ani pracochłonne. Warto to robić gdyż tylko prawdziwi twardziele nie robią backupów. Przedstawiam wam prosty skrypt któy po wrzuceniu do „Harmonogramu zadań” może nam automatycznie backupowa maszyny wirtualne bez konieczności ich wyłączania, czy wstrzymywania.

Przed uruchomieniem tego skryptu należy na serwerze który od tego momentu będziemy nazywać „Backup Proxy” zainstalować 7zip 4.65 lub nowszy oraz VMware Consolidated Backup 1.1 Update 1 lub nowszy. Następnie tworzymy sobie na dysku „D” katalog „Backup” a w nim by nie było zbyt metaforycznie plik vcb.bat i wklejamy do niego następującą treść.

del D:\Backup\%1.7z /F /Q
„C:\Program Files\VMware\VMware Consolidated Backup Framework\vcbMounter.exe” -h [ip- vcenter] -u [użytkownik] -p [hasło] -m nbd -a name:%1 -r d:\Backup\%1 -t fullvm -M 1
„C:\Program Files\7-zip\7z.exe” a d:\Backup\%1.7z -mx9 -mmt on -t7z -r d:\Backup\%1
del D:\Backup\%1\ /F /Q
rmdir D:\Backup\%1

Następnie w „Harmonogramie zadań” ustawiamy nową pracę dla naszego serwera „Backup Proxy”. Podczas wpisywania programu który ma się uruchomić należy wprowadzić nazwę maszyny wirtualnej np. „D:\Backup\vcb.bat lab-win2k3”. W kolejnym kroku ustalamy datę, godzinę, powtarzalność itp. Po kilku chwilach mamy swój system do robienia kopii zapasowych maszyn wirtualnych.

Przeprowadziłem pewne testy programów do pakowania podczas ustawiania tego systemu backupu i wyszło że z pośród 4 testowanych – WinRAR, WinZIP, TugZIP oraz 7zip. 7zip wypadł najlepiej, a dodatkowo jego standard 7z okazał się blisko 35% lepszy pod względem upakowania plików niż zip.

About the author

Bloger i niezależny konsultant z wieloletnim doświadczeniem w branży IT. Specjalizujący się w wirtualizacji i cloud computingu. Posiada tytuły MCP, MCTS, VCP oraz VMware vExpert.
12 Responses
  1. Bardzo ładnie działa ten skrypt polecam.
    A pytanie czy wie ktoś jak odtworzyć potem taką maszynę ?
    Pozdrawiam
    mc

  2. Witam
    No VMware Converter’em to nie był by najszybszy sposób.
    (bo trzeba by było raz z konwertować ) a potem jeszcze skopiować na macierz.

    Chodzi mi bardziej szybszy
    Próbowałem vcbRestore na jednym z ESX
    vcbRestore -h 1.1.1.111 -u root -p ‚pass’ -s /vmfs/volumes/DYSK_PO_NFS’ie/nazwa_maszyny/
    [2010-09-09 07:50:51.630 ‚App’ 3076440896 info] Current working directory: /root
    [2010-09-09 07:50:53.644 ‚vcbRestore’ 3076440896 error] Error: Containing folder „/Datacenters/PD/vm” for VM not found.
    Oczywiście ESX widzi ten zasób.
    Gdzie tkwi błąd ?
    pozdr
    mc

  3. ml

    Hymmmm… za symulowałem całą tą sytuację. Mam pewien pomysł, ale potrzebuje od ciebie pełnej ścieżki do „/Datacenters/PD/vm”, informacji czy backupowałeś przez ESX, czy przez vCenter, oraz czy maszyna którą odzyskujesz istnieje, czy jej w ogóle niema i odzyskujesz niejako w nowe miejsce… no i oczywiście „-L 6”. Pozdro i czekam.

  4. Witam
    [2010-09-09 10:55:44.850 ‚App’ 3076457280 info] Current working directory: /root
    [2010-09-09 10:55:44.869 ‚vcbRestore’ 3076457280 info] Connecting to host 192.168.1.226 on port 443 using protocol https

    [2010-09-09 10:55:44.873 ‚vcbRestore’ 3076457280 trivia] Initializing SSL context
    [2010-09-09 10:55:44.875 ‚App’ 3076457280 info] Vmacore::InitSSL: doVersionCheck = true, handshakeTimeoutUs = 120000000
    [2010-09-09 10:55:44.881 ‚SOAP’ 3076457280 trivia] Sending soap request to [TCP:192.168.1.226:443]: retrieveContent
    [2010-09-09 10:55:44.894 ‚SOAP’ 3076457280 trivia] Received soap response from [TCP:192.168.1.226:443]: retrieveContent
    [2010-09-09 10:55:44.900 ‚vcbRestore’ 3076457280 info] Connected using API Namespace vim25.
    [2010-09-09 10:55:44.903 ‚vcbRestore’ 3076457280 info] Authenticating user root
    [2010-09-09 10:55:44.907 ‚SOAP’ 3076457280 trivia] Sending soap request to [TCP:192.168.1.226:443]: login
    [2010-09-09 10:55:44.923 ‚SOAP’ 3076457280 trivia] Received soap response from [TCP:192.168.1.226:443]: login
    [2010-09-09 10:55:44.928 ‚vcbRestore’ 3076457280 info] Logged in!
    [2010-09-09 10:55:44.933 ‚vcbRestore’ 3076457280 info] Catalog parsed successfully
    [2010-09-09 10:55:44.937 ‚SOAP’ 3076457280 trivia] Sending soap request to [TCP:192.168.1.226:443]: retrieveContent
    [2010-09-09 10:55:44.943 ‚SOAP’ 3076457280 trivia] Received soap response from [TCP:192.168.1.226:443]: retrieveContent
    [2010-09-09 10:55:44.948 ‚vcbRestore’ 3076457280 verbose] Looking up host esx1.cedc (192.168.1.226)
    [2010-09-09 10:55:44.950 ‚SOAP’ 3076457280 trivia] Sending soap request to [TCP:192.168.1.226:443]: findByIp
    [2010-09-09 10:55:45.827 ‚SOAP’ 3076457280 trivia] Received soap response from [TCP:192.168.1.226:443]: findByIp
    [2010-09-09 10:55:45.831 ‚vcbRestore’ 3076457280 verbose] Found host esx1.cedc (192.168.1.226) in this VirtualCenter instance.
    [2010-09-09 10:55:45.837 ‚SOAP’ 3076457280 trivia] Sending soap request to [TCP:192.168.1.226:443]: GetName
    [2010-09-09 10:55:45.841 ‚SOAP’ 3076457280 trivia] Received soap response from [TCP:192.168.1.226:443]: GetName
    [2010-09-09 10:55:45.845 ‚SOAP’ 3076457280 trivia] Sending soap request to [TCP:192.168.1.226:443]: GetConfig
    [2010-09-09 10:55:46.931 ‚SOAP’ 3076457280 trivia] Received soap response from [TCP:192.168.1.226:443]: GetConfig
    [2010-09-09 10:55:46.991 ‚vcbRestore’ 3076457280 info] Querying resources.
    [2010-09-09 10:55:46.992 ‚SOAP’ 3076457280 trivia] Sending soap request to [TCP:192.168.1.226:443]: retrieveContent
    [2010-09-09 10:55:47.005 ‚SOAP’ 3076457280 trivia] Received soap response from [TCP:192.168.1.226:443]: retrieveContent
    [2010-09-09 10:55:47.009 ‚SOAP’ 3076457280 trivia] Sending soap request to [TCP:192.168.1.226:443]: GetName
    [2010-09-09 10:55:47.014 ‚SOAP’ 3076457280 trivia] Received soap response from [TCP:192.168.1.226:443]: GetName
    [2010-09-09 10:55:47.018 ‚vcbRestore’ 3076457280 verbose] matching object ha-folder-root Datacenters
    [2010-09-09 10:55:47.021 ‚SOAP’ 3076457280 trivia] Sending soap request to [TCP:192.168.1.226:443]: GetName
    [2010-09-09 10:55:47.025 ‚SOAP’ 3076457280 trivia] Received soap response from [TCP:192.168.1.226:443]: GetName
    [2010-09-09 10:55:47.028 ‚SOAP’ 3076457280 trivia] Sending soap request to [TCP:192.168.1.226:443]: GetName
    [2010-09-09 10:55:47.032 ‚SOAP’ 3076457280 trivia] Received soap response from [TCP:192.168.1.226:443]: GetName
    [2010-09-09 10:55:47.036 ‚vcbRestore’ 3076457280 verbose] Looking into entity ha-folder-root Datacenters
    [2010-09-09 10:55:47.038 ‚SOAP’ 3076457280 trivia] Sending soap request to [TCP:192.168.1.226:443]: GetName
    [2010-09-09 10:55:47.042 ‚SOAP’ 3076457280 trivia] Received soap response from [TCP:192.168.1.226:443]: GetName
    [2010-09-09 10:55:47.045 ‚vcbRestore’ 3076457280 error] Error: Containing folder „/Datacenters/PD/vm” for VM not found.
    [2010-09-09 10:55:47.046 ‚SOAP’ 3076457280 trivia] Sending soap request to [TCP:192.168.1.226:443]: logout

    A może ja coś źle robię ?
    Zrobiłem tak
    Kopie ze skryptu podłączyłem lokalnie po NFS’ie do ESX1 zalogowałem się na ESX1 i daję to polecenie vcbRestore ….. wynik wyżej.

  5. No właśnie nie ! ! ! !
    Wygląda to tak , że kopie robię ze skryptu na górze , który łączy się przez VCenter.
    A odtworzyć chcę przez ESX1 i nie ma tego folderu.
    Zaraz sprawdzę robiąc kopie nie łącząc się do VCenter tylko przez ESX1 i odtworzyć też przez ESX1
    Pozdr
    mc

  6. ml

    Słuchaj to sprawa jest prosta. Stwórz ten folder, następnie przekopiuj do tego folderu plik catalog z folderu w którym masz backup maszyny pierwotej. Poprzerabiaj w nim ścieżki tak aby pasowały do nowej lokalizacji i urzyj vcbRestore z przełacznikiem „-a /Datacenters/PD/vm/catalog”. Powinno pomóc.

  7. Witam
    I tak jak myślałem skrypt łączący się przez ESX ‚a i potem vcbRestore na tym że ESXie działa bez problemu.
    Będę miał czas to zobaczę co z tymi ścieżkami.
    I dam znać
    Pozdrawiam
    mc

Leave a Reply