Moim zdaniem Veeam należy do wiodących aplikacji backupowych. Jest prosty w obsłudze i bardzo logiczny. Backupy można wykonywać na przykład na macierze QNAP. Powiedzmy, że chcielibyśmy utworzyć pewną namiastkę zapasowego centrum danych: w innej lokalizacji umieścić jakieś urzadzenie sieciowe, na które będziemy kopiować backupy zapisane na urządzeniu znajdującym się w głównej serwerowni.
Oczywiście należy w takim przypadku brać pod uwagę przepustowość sieci - jeśli nie będzie zbyt wielka, dobrym kompromisem mogłoby być kopiowanie jedynie backupów związanych z najważniejszymi serwerami. Do tego celu będzie potrzebny prosty skrypt uruchamiany w harmonogramie serwera backupowego (Windows Server).
Oto przykład takiego skryptu. Dokładniejsze wyjaśnienia poniżej:
@echo off
SET LOG_FILE=d:\log_file.log
SET DIRS_FILE=dirs.txt
SET EXCL_FILE=excl.txt
SET SRC_DIR=e:
SET DST_DIR=x:
SET STORAGE_PATH=\\netstorage\dir
SET USER=user_storage
SET PASSWD=passwd_storage
echo ROZPOCZĘCIE KOPIOWANIA %date% %time% >> %LOG_FILE%
net use %DST_DIR% %STORAGE_PATH% /user:%USER% %PASSWD%
for /F "delims=#" %%i in (%DIRS_FILE%) do (call :dir_copy "%%i")
net use %DST_DIR% /delete
net use %STORAGE_PATH% /delete
echo ZAKOŃCZENIE KOPIOWANIA %date% %time% >> %PLIK_LOG%
goto :all_end
:dir_copy
SET _str=###%1###
SET _str=%_str:"###=%
SET _str=%_str:###"=%
SET _str=%_str:###=%
echo KOPIOWANIE %_str% - %date% %time% >> %LOG_FILE%
del "%DST_DIR%\%_str%" /f /q /s
xcopy "%SRC_DIR%\%_str%" "%DST_DIR%\%_str%" /e /i /v /c /f /r /k /y /z /j /EXCLUDE:%EXCL_FILE% >> %LOG_FILE% 2>>&1
@if not errorlevel 1 goto :all_end
echo PROBLEM Z KATALOGIEM %_str% >> %LOG_FILE%
:all_end
LOG_FILE
jest nazwą pliku logu, w którym będą zapisywane wszelkie informacje związane z kopiowaniem.
SRC_DIR
jest nazwą dysku, który zawiera katalogi z backupami Veeama.
DST_DIR
jest nazwą podmontowanego dysku z urządzenia sieciowego, na które będziemy kopiować wybrane katalogi.
Listę kopiowanych katalogów zawiera plik określany zmienną DIRS_FILE
. W każdym wierszu znajduje się nazwa jednego katalogu. Oto przykład takiego pliku:
serw_pocztowy
aplikacje01
aplikacje02
serw_uzytkownicy
Powyższy przykład zawiera 4 nazwy katalogów znajdujących się w katalogu głównym dysku. Jeśli ścieżka do katalogów byłaby dłuższa, należałoby ją oczywiście uwzględnić.
EXCL_FILE
jest nazwą pliku z rozszerzeniami, które należy pominąć podczas kopiowania. Na przykład jeśli chcemy kopiować tylko pliki pełnego backupu, a używamy metody odwróconego backupu inkrementalnego, możemy bez problemu pominąć pliki .vrb. Każde nowe rozszerzenie musi być podane w nowym wierszu. Oto przykład pliku z listą rozszerzeń:
.vrb
SRC_DIR
jest nazwą dysku źródłowego.
DST_DIR
jest nazwą dysku docelowego (podmontowanego).
STORAGE_PATH
jest ścieżką sieciową do urządzenia, na które zamierzamy kopiować. USER
i PASSWD
są odpowiednio nazwą i hasłem użytkownika pozwalającego na zamontowanie ściezki.
Po zakończeniu kopiowania zasób sieciowy jest automatycznie odłączany, a informacje o procesie są dostępne w pliku logu. Należy zawsze przeszukiwać plik w celu znalezienia ciągu znaków "PROBLEM Z KATALOGIEM", który oznacza, że coś się nie powiodło. Po pierwszym kopiowaniu warto również sprawdzić, ile trwało. Jeśli na przykład kopiowanie zakończy się już po uruchomieniu kolejnego backupu, pojawią się niespójności w backupie zapasowym. Wówczas trzeba na przykład utworzyć kilka plików .bat, które współbieżnie będą kopiować różne katalogi, albo odpowiednio wcześniej rozpocząć proces kopiowania.
Na podstawie kodu można wywnioskować, że istniejące katalogi na urządzeniu docelowym są najpierw usuwane, a dopiero później jest uruchamiany proces kopiowania najnowszych backupów. Jeśli pojawiłby się jakiś problem z kopiowaniem, na urządzeniu sieciowym nie mielibyśmy dostępu do poprawnej wersji backupu.
Jeśli dysponujemy dużą ilością miejsca na urządzeniu sieciowym, warto więc ulepszyć skrypt w taki sposób, by najpierw zmienić nazwę katalogu docelowego (dodając mu np. rozszerzenie .old), następnie skopiować najnowszy katalog, sprawdzić, czy kopiowanie się powiodło, a dopiero wtedy usunąć stary katalog z dodanym rozszerzeniem. Gdyby podczas kopiowania pojawił się problem, należałoby usunąć kopiowany katalog, a dla starego przywrócić oryginalną nazwę.