Řešil jsem úkol vzdálené zálohy PC které si každý den
vytváří databázi nebo ji modifikuje.Stroj má konektivitu na internet ale pouze
CDMA modem který nestíhá ani běžný denní
provoz.Z tohoto důvodu může stěhování záloh probíhat jen v noci.
A na tuto nezbytně dlouhou dobu se potřebuji připojit
pomocí VPN stáhnout zálohy na server a VPN odpojit , aby spojení nevytěžovalo linku v denních
hodinách.A toto vše z centrály naší organizace.
Celý proces zálohy je rozdělen do dvou bloků první je
lokální záloha a druhý je záloha na vzdálený server
Lokální záloha:
Vzdálené PC každý den zálohuje na flash kde se udržuje 8 záloh.Zde se v případě nouze mohu vrátit o 8dní zpět.Tato záloha je myšlena jako
ošetření havárie pevného disku.
Záloha na vzdálený server:
Vytváří dvakrát v týdnu jednu zálohu a starou maže(ve
výsledku máme v adresáři vždy jednu aktuální zálohu).Soubor má název ZipPraha
a je v cestě D:\ZipPraha.
Na našem serveru se v daný čas spustí powershell skript
který nejdříve otestuje zda existuje starý adresář zálohy (je zde řeč o
předešlé stažené záloze která se umísťuje na server disk C:).Pokud adresář existuje,bude smazán i
se všemi soubory.Tento krok nám zajišťuje že se nám adresáře nehromadí.Tedy
nezvyšuje se objem dat které ještě stěhuji dále na podnikové úložiště kde už
zálohy držím 20dní zpět.
Poté skript vytvoří
na serveru adresář jehož název je aktuální datum.
Dále si server sáhne na disk D vzdáleného PC a
překopíruje celý adresář ZipPraha na svůj disk C: do adresáře jenž vytvořil.Veškeré
své počínání(úspěch,neúspěch) zapisuje skript do logu.
Celý proces je ošetřen podmínkou.Pokud je spojení úspěšně
navázáno provede se hlavní skript.Pokud spojení není zapíšeme neúspěch do logu.Skript
končí tím že ukončíme VPN spojení.
Časový rozvrh vzdálené zálohy
00:10 smaže z c: soubor z předešlého dne
00:20 stáhne zálohu ze vzdáleného PC a uloží na svůj disk
c:
00:50 staženou zálohu z c: umístí do podnikového úložiště(zde
už držím zálohu po dnech 20dní zpět)
Skript funguje pomocí již vytvořeného spojení které
musíme mít nakonfigurované předem.Jednoduše řečeno pomocí palubních prostředků windows
si mezi stroji vytvoříte VPN spojení na bázi klient(vzdálené PC) server(server
u vás v organizaci) a toto spojení smysluplně pojmenujete.Powershell pak
spojení pomocí jména zavolá a předá parametry spojení(jméno,heslo)
################################ Vytvoril:Petr Skrivan ####################################
#vytoc spojeni na PRAHA,povereni
user:Administrator heslo:tajneheslo
rasdial PRAHA Administrator
tajneheslo
#pockej 30 sekund aby bylo
spojeni v poradku navazano
Start-Sleep -Seconds 30
#zalozime log ktery nas bude
informovat o provedeni a prubehu skriptu
"Zaloha Rohan" > "C:\VPNLog.txt"
#do logu uvedeme daum a cas
spusteni skriptu
get-date >> "C:\VPNLog.txt"
#test konektivity na vzdalene PC. IP tohoto stroje naleznete treba v
#..sit nastaveni>jmeno vpn
spojeni>podrobnosti
$connect = Test-Connection 192.168.0.10 -quiet
#pokud existuje spojeni na
vzdalene pc provede se skript v zavorkach
if($connect -like "True")
{
#spojeni je uspesne zapiseme tuto
skutecnost do logu
"Spojeni navazano" >> "C:\VPNLog.txt"
#datum si naformatujeme do podoby
retezce ktery muze reprezentovat
#..nazev sdresare
$datum = "{0:yyyy_MM_dd}" -f (get-date)
#pokud existuje adresar zaloha
if (Test-Path C:\Zaloha\)
{
#smaze puvodni adresar jinak by
cobian stehoval stale vetsi objem dat
# .. -recurse rika smaz vse
vcetne podadresaru
del C:\Zaloha\ -Recurse
}
#v zadane ceste si vytvorime
adresar jehoz jmeno je dnesni datum
New-Item -ItemType directory -Path C:\Zaloha\$datum
#zkopirujeme zadany adresar do
zadaneho umisteni adresa 192.168.0.10
#..to je adresa meho protejsku v
mini-siti VPN.Zjistite ji tak
#..ze si rozkliknete sitova
spojeni pak VPN a podrobnosti
copy-item "\\192.168.0.10\d$\ZipPraha
" -destination
"C:\Zaloha\$datum" -recurse -Force
#info do logu o uspesnem
provedeni skriptu
"Zaloha probehla v poradku
" >> "C:\VPNLog.txt"
#info o case kdy byla zaloha
dokoncena
get-date >> "C:\VPNLog.txt"
#odpojime VPN spojeni ke vzdalene
stanici
rasdial /disconnect
}
#vse v zavorkach vyse se provede jen v pripade ze spojeni bylo navazano
#..pokud spojeni neni navazano nastava situace else
else
{
#zapiseme do logu informaci o
neuspesnem spojeni
"Selhání spojeni" >> "C:\VPNLog.txt"
#info o case kdy se zaloha
nepovedla
get-date >> "C:\VPNLog.txt"
#odpojime VPN spojeni ke vzdalene
stanici
rasdial /disconnect
}