Start Kontakt

Kopiowanie backupów Veeam na inne urządzenie

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

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.

Ulepszenie skryptu

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ę.