Knowledgebase: NAS - deutsch
NAS für robocopy-Backup Job via DOS-shell/ bat-Skript starten (WOL-Boot) und dannach herunterfahren
Posted by Mathias Fuerlinger on 13 May 2016 03:58 PM

Das folgende MS-DOS BATCH Script kopiert (inkrementell) mittels robocopy lokale Daten auf ein QNAP NAS.

Das NAS wird vor dem Kopiervorgang über die WakeOnLan-Funktion "geweckt" und nach dem BackupJob wieder in den Sleep Modus versetzt.

Je nach verwendetem Windows Betriebssystem wird zusätzliche Software benötigt:

  1. robocopy.exe (siehe Microsoft-Download)
  2. wolcmd.exe (siehe http://www.heise.de/download/wol.exe.html)
  3. plink.exe (siehe Putty download page: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)
  4. wait.exe (falls nicht Bestandteil von OS: siehe Google, es gibt auch viele Alternativen) Das hier verwendete wait-Programm setzt angegeben Werte in Minuten um

Die Veröffentlichung des Skripts dient als Anregung für einfache und automatisierte Backup-Routinen auf einem Windows Host mit einem QNAP NAS als Backup-Ziel. Auch eine Teil-Nutzung erfolgt auf eigene Gefahr und wird nicht supported.

Bitte auch beachten, dass das Skript das ADMIN-Password in Reintext hinterlegt (für plink.exe) und das insbesondere der wolcmd.exe Befehl nicht ganz unkritisch zu sehen ist. Daher ist der Einsatz nur in abgekapselten Netzen und auf einem gesichertem Host ratsam.

 

REMOTE das NAS mit DOS-Befehl wecken (aus SleepMode):

wolcmd.exe setzte einen WakeOnLan Befehl ab und "weckt" so das NAS - es reicht die MAC-Adresse KEIN! weiterer Passwortschutz.
Übrigens: das QNAP NAS kann auch über das Programm Qfinder (im LAN) oder über Qcenter (im WAN) https://www.qnap.com/solution/qcenter/index.php?lang=de geweckt werden.

 

REMOTE das NAS mit DOS-Befehl herunterfahren (in SleepMode):

plink.exe fährt das NAS mittels SSH (hier port 22) shutdown Befehl herunter - der Befehl benötigt das admin-passwort in Reintext!
Übrigens: kann diese Funktionalität auch über das Programm Qfinder (im LAN) oder Qcenter (im WAN) https://www.qnap.com/solution/qcenter/index.php?lang=de erreicht werden. Zudem bietet auch die Smartphone App: "QMANAGER" https://www.qnap.com/i/de/qts4_phone_app/ eine Shutdown Funktion.

 

Das hier verwendete Robocopy Version nutzt die folgenden Schalter: (robocopy -h liefert mehr Details).

rem robocopy %syncsource1% \\%syncdestination%\%syncdestfolder1% /E /L /R:3 /XO /V /LOG+:%locallogfile%
rem /E : copy subfolders including empty ones
rem /L : List only - don't copy, timestamp or delete any files. (for debugging)
rem /R:3 specifies the number of retries on failed copies. (The default is 1 million.)
rem /W:10 specifies the wait time between retries. (The default is 30 seconds.)
rem /XO excludes files tagged as “Older”
rem /X reports all files tagged as “Extra” (including files not selected)
rem /V produces verbose output (including skipped files)
rem /FFT : Assume FAT File Times (2-second date/time granularity).
rem /NP : No Progress - don't display % copied.
rem /LOG:file : Output status to LOG file (overwrite existing log).
rem /LOG+:file : Output status to LOG file (append to existing log).
rem UNILOG and UNILOG+ will output to a unicode logfile
rem Logfile: %locallogfile%
rem /TEE : Output to console window, as well as the log file.
rem /ZB : Use restartable mode; if access denied use Backup mode. (between windows copying)
rem /COPY:DT instead of default /COPY:DAT (=no attributes on ext3/ext4)

 

 

Das Skript:

@echo off
cls
setlocal
set adminpwd=admin
set syncdestination=192.168.2.251
set syncdestfolder1=Public
set destinationsubnet=255.255.255.0
set syncsource1=C:\DATA\DOCS\
set locallogfile=C:\LOGS\myBackUp.log
set MACaddr=008021c342ac
set WOLport=8900

echo.
echo ###################################################################
echo B A C K U P J O B
echo ###################################################################
echo.
rem NAS mit wolcmd.exe wecken
wolcmd %MACaddr% %syncdestination% %destinationsubnet% %WOLport%
rem etwa 5 Minuten warten, bis Bootprozess abgeschlossen
wait 5

:BACKUPCMD
IF NOT EXIST "\\%syncdestination%\%syncdestfolder1%\" GOTO :syncdestination1notfound
IF NOT EXIST %syncsource1% GOTO :syncsource1notfound

set starttime=%TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2%
echo Start des BACK-UP Befehls (robocopy): %starttime%
echo ROBOCOPY von %syncsource1% auf \\%syncdestination%\%syncdestfolder1%
echo.

robocopy %syncsource1% %syncdestination%\%syncdestfolder1% /COPY:DT /E /R:3 /W:5 /XO /V /FFT /NP /LOG:%locallogfile%

set endtime=%TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2%
echo Start des BACK-UP Befehls: %starttime%
echo Ende des BACK-UP Befehls: %endtime%
echo.
echo ###################################################################
echo.
echo NAS wird wieder heruntergefahren

wait 5
rem NAS herunterfahren
plink %syncdestination% -P 22 -ssh -l admin -pw %adminpwd% -v poweroff

pause

goto :EOF
:syncdestination1notfound
echo Error! Abbruch. BackupZiel (\\%syncdestination%\%syncdestfolder1%\) NICHT gefunden.
pause

goto :EOF
:syncsource1notfound
echo Error! Abbruch. lokale Quelle 1 (%syncsource1%) nicht erreichbar.
pause

 

(36 vote(s))
Helpful
Not helpful

Comments (0)