Artykuł opisuje przygotowania backupu plików z sieci lokalnej z włączeniem odpowiedniego komputera w godzinach nocnych i zamknięciem go po zakończeniu backupu.

1. Jak włączyć komputer z którego chcemy pobrac dane?
Aby to wykonać musimy dysponować uruchomionym komputerem w sieci lokalnej, który wyśle wewnątrz tej sieci wygnał do komputera, którego backup chcemy wykonać. Do obudzenia komputera niezbędny będzie program, który w konsoli pozwoli wysłać Magic Packet do docelowego komputera. Oczywiście wcześniej w BIOSie należy zezwolić na wybudzanie komputera za pomocą sieci. Musimy znać mac adres karty sieciowej tego komputera. Użyłem darmowego programu https://www.depicus.com/downloads/wolcmd.zip, który można pobrać ze strony https://www.depicus.com/.

Program wywołujemy z nastepującymi parametrami:

wolcmd [mac adres] [ip] [maska] [numer portu]

Przykładowe wywołanie programu bedzie miało postać:

wolcmd   10-23-af-0d-34-99   192.168.10.55   255.255.255.0   7

Wielokrotne odstępy dodałem tylko dla zwiekszenia czytelności.

Najważniejszy oczywiście jest adres sprzętowy karty sieciowej (możemy go wpisać również tak: 1023af0d3499 ), po nim nastepuje zakładane ip jakie otrzyma komputer, maska podsieci i numer portu po którym wysłany zostanie Magic Pocket. Zwyczajowo jest to port nr 7. W przypadku korzystania z DHCP adres ip nie ma znaczenia, poniewaz komputer i tak dostanie swój numer z puli serwera DHCP.

Jeżeli wszystko poprawnie skonfigurowaliśmy po wykonaniu powyższej komendy komputer posiadający kartę sieciową powinien się włączyć.

2. Tworzenie backupu - Power Shell

Przygotowując procedurę zabezpieczenia danych oparłem się na artykule Tymoteusza Kęstowicza http://tymoteuszkestowicz.com/2013/11/powershell-mini-kompendium/ z którego wykorzystałem procedurę pakującą, której źródło wskazano to: http://itproctology.blogspot.com/2013/08/zip-files-and-folders-with-powershell.html

function Add-Zip  # usage: Get-ChildItem $folder | Add-Zip $zipFullName
{
    param([string]$zipfilename)

    if(!(test-path($zipfilename)))
    {
        set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
        (dir $zipfilename).IsReadOnly = $false   
    }
    $shellApplication = new-object -com shell.application
    $zipPackage = $shellApplication.NameSpace($zipfilename)
    foreach($file in $input)
    {
        $zipPackage.CopyHere($file.FullName)
        do {
            Start-sleep 2
        } until ( $zipPackage.Items() | select {$_.Name -eq $file.Name} )
    }
}

# Przygotowuję nazwę pliku typu Backup_2016-03-13_22.54.zip
$datka = get-date -format yyyy-MM-dd_HH.mm
$archiwum="Backup_"+$datka+".zip"
# Ustawiam folder w którym powstanei backup
$archiwum = "c:\Backup\dane\"+$archiwum
# pobieramy spis plików do backupu z odpowiedniego pliku
$co_pakujemy = get-content c:\Backup\skrypt\spis_plikow_do_backupu.txt
# echo $Co_pakujemy
Get-ChildItem $co_pakujemy | Add-Zip $archiwum

W wyniku działania skryptu powstanie spakowane archiwum: c:\Backup\dane\Backup_2016-03-13_22.54.zip oczywiście data i czas będzie odpowiednia dla powstania archiwum.

3. Pobranie backupu.

Wiemy, że przygotowany plik znajduje się na komputerze z którego dane zabezpieczamy. Teraz wystarczy dostac się do niego przez udział administracyjny i pobrać dane. Można do tego celu wykorzystać winwget - uruchamiany z innego komputera, lub najprościej bezpośrednio z komputera zabezpieczanego wykonać komendę xcopy na udział sieciowy

4. Wyłączanie komputera

Aby wyłączyć komputer po zakończeniu backupu wystarczy z odpowiednimi uprawnieniami wykonać polecenie:

shutdown -s

lub zdalnie wykonać komendę:

shutdown -s -m nazwa_lub_ip_komputera_do_wyłączenia -t 60

UWAGI:

W całym procesie należy zadbać o bezpieczeństwo. Wskazane jest, aby do celów backupowych było przygotowane specjalne konto, posiadające uprawnienia administracyjne na komputerach zabezpieczanych oraz dostęp do udziału sieciowego, gdzie będziemy zabezpieczać dane.