Last week after my hard-disk crashed and I realized that my backups are outdated, I decided to do it right this time. So I purchased a Buffalo Link Station Duo (2TB,Raid1, good price-performance ratio) as backup device and was absolutely convinced that with a few clicks I could easily setup a pure Windows based backup scenario.
But first of all my Windows7 Home Premium doesn't support SyncCenter and the second issue is that I was not happy with the "NAS PM Service", which caused the NAS station to start-up when ever I turned on my PC. This almost jeopardized my initial idea, because all I wanted to achieve was to activate the NAS, run the backup and finally shutdown the NAS until the next time the scheduler runs.
Time for some hands-on!
So here is my solution which works without the Buffalo NASNavi Suite and may work for other vendors/products as well:
In combination with the utility WolCmd.exe I created 2 additional scripts (WOL.bat,WOL.svn) which I use to wake-up and/or keep-alive the NAS. Simply download WolCmd.exe, create WOL.bat, WOL.svn (find source code below) and copy the files to (for now the directory is hard coded) C:\Program Files\Utils. Once this is done you can use WOL.bat for ...
Linkstation wakeup
"C:\Program Files\Utils\WOL.bat" wol [MAC] [IP] [NetMask] [Port] [Runs] [Interval in seconds]
Example:
"C:\Program Files\Utils\WOL.bat" wol 4ce6XXXXXXXX 10.0.0.XX 255.255.255.0 9 5 45
Start Linkstation keepalive
"C:\Program Files\Utils\WOL.bat" start [jobID] [IP] [NetMask] [Port] [Interval in seconds]
Example:
"C:\Program Files\Utils\WOL.bat" start backup 4ce6XXXXXXXX 10.0.0.XX 255.255.255.0 9 5
Stop Linkstation keepalive
"C:\Program Files\Utils\WOL.bat" end [jobID]
Example:
"C:\Program Files\Utils\WOL.bat" end backup
Using the Windows Task Scheduler and FreeFileSync I now run a daily backup and the Linkstation is only active while FreeFileSync runs (+ a couple of minutes until it shuts down). The image below shall give you an idea how to use WOL.bat to wake-up (duration 5*45s) and keep-alive (5s interval) your Linkstation while your e.g. backup executes.
br
WolCmd.exe - http://www.depicus.com/wake-on-lan/wake-on-lan-cmd.aspx
@ECHO OFF
IF /I "%1"=="__myself" (
FOR /L %%l IN (0,0,0) DO (
:: WOL command example -- "C:\Program Files\Utils\WolCmd.exe" 4ce67696094b 10.0.0.62 255.255.255.0 9
"C:\Program Files\Utils\WolCmd.exe" %3 %4 %5 %6
:: Delay for n (>1) seconds
ping -n %7 127.0.0.1 > nul
)
) ELSE (
SET prefix=w0L_-
SET postfix=-_L0w
IF /I "%1"=="start" (
:: ECHO %0 __myself %prefix%%2%postfix% %3 %4 %5 %6 %7
START "%2" /I /MIN cmd.exe /C %0 __myself %prefix%%2%postfix% %3 %4 %5 %6 %7
) ELSE (
IF /I "%1"=="end" (
START "Kill: %2" /I cmd.exe /C cscript "%~dp0WOL.vbs" %prefix%%2%postfix%
) ELSE (
IF /I "%1"=="wol" (
FOR /L %%l IN (%6,-1,1) DO (
:: WOL command example -- "C:\Program Files\Utils\WolCmd.exe" 4ce67696094b 10.0.0.62 255.255.255.0 9
"C:\Program Files\Utils\WolCmd.exe" %2 %3 %4 %5
:: Delay for n (>1) seconds
ping -n %7 127.0.0.1 > nul
)
)
)
)
)
WOL.vbs
Set oShell = CreateObject("WScript.Shell")
if WScript.Arguments.Count >= 1 then
Dim objWMIService
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
Dim colProcess
Set colProcess = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = 'cmd.exe'")
For Each objProcess in colProcess
Dim re1,re2
Set re1 = new RegExp
Set re2 = new RegExp
re1.Pattern = ".*[ ]{1}__myself[ ]{1}.*"
re2.Pattern = ".*[ ]{1}" & WScript.Arguments(0) & "[ ]{1}.*"
Dim m1,m2
Set m1 = re1.Execute(objProcess.CommandLine)
Set m2 = re2.Execute(objProcess.CommandLine)
WSCript.Echo m1.Count & "|" & re1.Pattern & "|" & objProcess.CommandLine
WSCript.Echo m2.Count & "|" & re2.Pattern & "|" & objProcess.CommandLine
if m1.Count > 0 AND m2.Count > 0 then
WSCript.Echo objProcess.CommandLine
objProcess.Terminate()
WScript.Quit()
end if
Next
end if
But first of all my Windows7 Home Premium doesn't support SyncCenter and the second issue is that I was not happy with the "NAS PM Service", which caused the NAS station to start-up when ever I turned on my PC. This almost jeopardized my initial idea, because all I wanted to achieve was to activate the NAS, run the backup and finally shutdown the NAS until the next time the scheduler runs.
Time for some hands-on!
So here is my solution which works without the Buffalo NASNavi Suite and may work for other vendors/products as well:
In combination with the utility WolCmd.exe I created 2 additional scripts (WOL.bat,WOL.svn) which I use to wake-up and/or keep-alive the NAS. Simply download WolCmd.exe, create WOL.bat, WOL.svn (find source code below) and copy the files to (for now the directory is hard coded) C:\Program Files\Utils. Once this is done you can use WOL.bat for ...
Linkstation wakeup
"C:\Program Files\Utils\WOL.bat" wol [MAC] [IP] [NetMask] [Port] [Runs] [Interval in seconds]
Example:
"C:\Program Files\Utils\WOL.bat" wol 4ce6XXXXXXXX 10.0.0.XX 255.255.255.0 9 5 45
Start Linkstation keepalive
"C:\Program Files\Utils\WOL.bat" start [jobID] [IP] [NetMask] [Port] [Interval in seconds]
Example:
"C:\Program Files\Utils\WOL.bat" start backup 4ce6XXXXXXXX 10.0.0.XX 255.255.255.0 9 5
Stop Linkstation keepalive
"C:\Program Files\Utils\WOL.bat" end [jobID]
Example:
"C:\Program Files\Utils\WOL.bat" end backup
Using the Windows Task Scheduler and FreeFileSync I now run a daily backup and the Linkstation is only active while FreeFileSync runs (+ a couple of minutes until it shuts down). The image below shall give you an idea how to use WOL.bat to wake-up (duration 5*45s) and keep-alive (5s interval) your Linkstation while your e.g. backup executes.
I hope this information is useful for you, helps to conserve energy and please apologize if there are typo(s), grammar error(s), etc. because my native language is German (and this is my first blog entry).
br
- Software
WolCmd.exe - http://www.depicus.com/wake-on-lan/wake-on-lan-cmd.aspx
- Scripts
@ECHO OFF
IF /I "%1"=="__myself" (
FOR /L %%l IN (0,0,0) DO (
:: WOL command example -- "C:\Program Files\Utils\WolCmd.exe" 4ce67696094b 10.0.0.62 255.255.255.0 9
"C:\Program Files\Utils\WolCmd.exe" %3 %4 %5 %6
:: Delay for n (>1) seconds
ping -n %7 127.0.0.1 > nul
)
) ELSE (
SET prefix=w0L_-
SET postfix=-_L0w
IF /I "%1"=="start" (
:: ECHO %0 __myself %prefix%%2%postfix% %3 %4 %5 %6 %7
START "%2" /I /MIN cmd.exe /C %0 __myself %prefix%%2%postfix% %3 %4 %5 %6 %7
) ELSE (
IF /I "%1"=="end" (
START "Kill: %2" /I cmd.exe /C cscript "%~dp0WOL.vbs" %prefix%%2%postfix%
) ELSE (
IF /I "%1"=="wol" (
FOR /L %%l IN (%6,-1,1) DO (
:: WOL command example -- "C:\Program Files\Utils\WolCmd.exe" 4ce67696094b 10.0.0.62 255.255.255.0 9
"C:\Program Files\Utils\WolCmd.exe" %2 %3 %4 %5
:: Delay for n (>1) seconds
ping -n %7 127.0.0.1 > nul
)
)
)
)
)
WOL.vbs
Set oShell = CreateObject("WScript.Shell")
if WScript.Arguments.Count >= 1 then
Dim objWMIService
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
Dim colProcess
Set colProcess = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = 'cmd.exe'")
For Each objProcess in colProcess
Dim re1,re2
Set re1 = new RegExp
Set re2 = new RegExp
re1.Pattern = ".*[ ]{1}__myself[ ]{1}.*"
re2.Pattern = ".*[ ]{1}" & WScript.Arguments(0) & "[ ]{1}.*"
Dim m1,m2
Set m1 = re1.Execute(objProcess.CommandLine)
Set m2 = re2.Execute(objProcess.CommandLine)
WSCript.Echo m1.Count & "|" & re1.Pattern & "|" & objProcess.CommandLine
WSCript.Echo m2.Count & "|" & re2.Pattern & "|" & objProcess.CommandLine
if m1.Count > 0 AND m2.Count > 0 then
WSCript.Echo objProcess.CommandLine
objProcess.Terminate()
WScript.Quit()
end if
Next
end if
2 comments:
fantastic. love the combination of WOL and backup.
You now longer have to create the script files on your own. They are now available for download.
WOL.vbs
WOL.bat
br
≠ logic
Post a Comment