Link to home
Start Free TrialLog in
Avatar of 03671328
03671328Flag for United States of America

asked on

virtual server backup

looking for a reason as to why the fallowing script will not give the reason why the xcopy failed
any info will be helpfull thanks
Set objShell = CreateObject ("WScript.Shell")
 
'local computer computer name
strTime = "local computer"
 
'net use share name
strNetShare= "share name here"
 
'backup computer name
strRemotepc = "ipaddress here"
 
'backup freenas server name
strnasdevice = "computer name here"
 
'location for the daily backup
strold = "W:"
 
'backup location for the old files
strolderfiles = "ip address here"
 
'backup directory drive
strBackupDrive= "Z:"
 
'Drive containing Virtual Machines
strVMdrive = "E:" 
 
'VM folder path
strVMfolder = "\virtual"
 
'available drive letter used to mount shadow copy
strTempDrive = "x:"
 
'nas device drive
strnas = "N:"
'nas computername
strnascomputer = "nas name here"
'nas sharename
strnasdevice ="nas share here"
 
'shadow command file
sExCmd = "CreateVSS.cmd"
 
'logs for program
sLog = "logs.txt"
 
'cleanup file
scleanup = "cleanup.cmd"
 
 
'email variables
'-------------------------------
 
'email address 1
stremail1 = "bla2@bla.com"
 
'email address 2
stremail2 = "bla@bla.com"
 
'from host email
strfrom = "backup@bla.com"
 
'mailserver
strmailserver = "mail.bla.com"
 
'message subject
strsubject= "bla backup"
 
'===================YOU SHOULD NOT NEED TO CHANGE ANYTHING BELOW THIS LINE========================================
 
 
 
 
 
 
dim result
'get the day of week
'---------------------------------
dtmTargetDate = date()  
intDay = WeekDay(dtmTargetDate)
if intDay= 1 then
strday = "Sun"
end if
if intDay= 2 then
strDay = "Mon"
end if
if intDay= 3 then
strDay = "Tues"
end if
if intDay= 4 then
strDay = "Wed"
end if
if intDay= 5 then
strDay = "thurs"
end if
if intDay= 6 then
strDay = "fri"
end if
if intDay= 7 then
strDay = "Sat"
end if
'---------------------------------
'get the week number 1-6
'-------------------------------------------------
dtmDay = DatePart("d", dtmTargetDate)
dtmMonth = DatePart("m", dtmTargetDate)
dtmYear = DatePart("yyyy", dtmTargetDate)
dtmStartDate = dtmMonth & "/1/" & dtmYear
dtmStartDate = CDate(dtmStartDate)
intWeekday = Weekday(dtmStartDate)
intAddon = 8 - intWeekday
intWeek1 = intAddOn
intWeek2 = intWeek1 + 7
intWeek3 = intWeek2 + 7
intWeek4 = intWeek3 + 7
intWeek5 = intWeek4 + 7
intWeek6 = intWeek5 + 7
'-------------------------
'get the day of the week
'-------------------------
If dtmDay <= intWeek6 Then
    strTime1 = "Week 6"
End If
If dtmDay <= intWeek5 Then
    strTime1 = "Week 5"
End If
If dtmDay <= intWeek4 Then
    strTime1 = "Week 4"
End If
If dtmDay <= intWeek3 Then
    strTime1 = "Week 3"
End If
If dtmDay <= intWeek2 Then
    strTime1 = "Week 2"
End If
If dtmDay <= intWeek1 Then
    strTime1 = "Week 1"
End If
 
'--------------------------------------------------
 
'daily backup
stroldbackup = strold &"\"& strDay
 
' Backup target folder or UNC path
strBackupDir = strBackupDrive &"\" & strTime
 
'log file creation
set FileSys = CreateObject("Scripting.FileSystemObject")
if FileSys.FileExists(sLog) then FileSys.DeleteFile(sLog)
set oLog = FileSys.CreateTextFile(sLog,CopyOverwrite)
 
'write all vars to the log file for verfication
olog.writeline("local computer computer name: "& strTime)
olog.writeline("backup computer name: "& strRemotepc)
olog.writeline("backup freenas server name: "&strnasdevice)
olog.writeline("location for the daily backup: "&strold)
olog.writeline("backup directory drive: "&strBackupDrive)
olog.writeline("Drive containing Virtual Machines: "&strVMdrive)
olog.writeline("VM folder path: "& strVMfolder)
olog.writeline("available drive letter used to mount shadow copy: "& strTempDrive)
olog.writeline("nas device drive: "& strnas)
olog.writeline("shadow command file: "& sExCmd)
olog.writeline("logs for program: "& sLog)
 
 
'place time of day in file
olog.writeline("backup created at" &date &" "& time)
 
'create commands for shadow copy
Set oFileSys = CreateObject("Scripting.FileSystemObject")
if oFileSys.FileExists(sExCmd) then oFileSys.DeleteFile(sExCmd)
set oExCmd = oFileSys.CreateTextFile(sExCmd, CopyOverwrite)
 
' Create Shadow copy of VM drive
oExCmd.WriteLine "set startdate=%date%"
oExCmd.WriteLine "set starttime=%time%"
oExCmd.WriteLine "vshadow.exe -script=setvar1.cmd -p " & strVMdrive
oExCmd.WriteLine "call setvar1.cmd"
oExCmd.WriteLine "vshadow.exe -el=%SHADOW_ID_1%," &strTempDrive
oExCmd.WriteLine "net use "&strBackupDrive&" \\"&strRemotepc&"\"&strNetShare
oExCmd.WriteLine "net use "&strnas&" \\"&strnascomputer&"\"&strnasdevice
oExCmd.WriteLine strnas
oExCmd.WriteLine "mkdir " & strTime1
oExCmd.WriteLine "net use "&strold&" \\"&strolderfiles&"\V_M_backup"
oExCmd.WriteLine "dir "&strold
oExCmd.WriteLine "dir "&strBackupDrive
oExCmd.WriteLine "dir "&strnas
oExCmd.WriteLine strBackupDrive
oExCmd.Close
 
'run shadow copy
'result = read_lines(sExCmd)
'if u want to log the shadowcopy data please uncomment above line and then comment between the lines
'---------------------------------------------
 set objExecObject = objShell.exec(sExCmd)
  Do Until objExecObject.StdOut.AtEndOfStream
   strLine = objExecObject.StdOut.ReadLine()
   strIP = Instr(strLine,"Address")
  Loop
'---------------------------------------------
olog.writeline("shadow copy completed at "& Month(Now) & "-" & Day(Now) & "-" & Year(Now) &_
  "_" & hour(now) & "-" &  minute(now))
'create backup of old data every day
olog.writeline ""
olog.writeline ""
olog.writeline "--------------------old files data-----------------------------"
olog.writeline "moving old files to the backup directory time is now "& Time
olog.writeline ("xcopy "&strBackupDir &" " &stroldbackup&" /s /i /y")
result = read_lines("xcopy "&strBackupDir &" " &stroldbackup&" /s /i /y")
olog.writeline "finnished moving old data at " & Time
olog.writeline "--------------------end of old files move----------------------"
olog.writeline ""
olog.writeline ""
 
'weekly backups only runs on firday 
'intday = 1-6
'1 = Sunday
'2 = Monday
'3 = Tuesday
'4 = Wendsday
'5 = Thursday
'6 = Friday
'7 = Saturday
 
if intDay = 6 then
olog.writeline "preparing for nasbackup"
'start backup to nas device
olog.writeline ""
olog.writeline ""
olog.writeline "-----------------------friday backup data----------------------------"
olog.writeline "backup for freenas started at"& time
olog.writeline ("xcopy "&strTempDrive&strVMfolder& " " &strnas&"\"&strTime1&" /s /i /y")
result = read_lines("xcopy "&strTempDrive&strVMfolder& " " &strnas&"\"&strTime1&" /s /i /y")
olog.writeline "backup to freenas ended at" & time
olog.writeline "-----------------------friday data ended-----------------------------"
olog.writeline ""
olog.writeline ""
end if
 
 
'startbackup
olog.writeline "-------------------------virtual server data----------------------"
olog.writeline "backup to vs2 started at"& time
olog.writeline "xcopy "&strTempDrive&strVMfolder& " " &strBackupDir&" /s /i /y"
result = read_lines("xcopy "&strTempDrive&strVMfolder& " " &strBackupDir&" /s /i /y")
olog.writeline "backup to vs2 ended at" & time
olog.writeline "-------------------------virtual sever data end-------------------"
olog.writeline ""
olog.writeline ""
 
'cleanup starts
 
Set oFileSys1 = CreateObject("Scripting.FileSystemObject")
set oExCmd1 = oFileSys.CreateTextFile(scleanup, CopyOverwrite)
oExCmd1.writeline "Echo y | vshadow.exe -da"
oExCmd1.writeline "net use "& strBackupDrive &" /delete"
oExCmd1.writeline "net use "& strnas &" /delete"
oExCmd1.writeline "net use "& strold&" /delete"
oExCmd1.writeline "Echo y | del C:\setvar1.cmd"
oExCmd1.writeline "Echo y | del C:\CreateVSS.cmd"
oExCmd1.writeline "Echo y | del C:\cleanup.cmd"
oExCmd1.close
result = read_lines("C:\cleanup.cmd")
 
'email
result = read_lines("C:\sendEmail.exe -f "&strfrom&" -u "&strsubject&" -t "&stremail2&" -o message-file=C:\logs.txt -s "&strmailserver)
result = read_lines("C:\sendEmail.exe -f "&strfrom&" -u "&strsubject&" -t "&stremail1&" -o message-file=C:\logs.txt -s "&strmailserver)
 
'-------------function that will launch the exe / bat ect. to read the output to a text file creating a log
Function read_lines(x)
 set objExecObject = objShell.exec(x)
  Do Until objExecObject.StdOut.AtEndOfStream
   strLine = objExecObject.StdOut.ReadLine()
   strIP = Instr(strLine,"Address")
   oLog.WriteLine strLine
  Loop
End Function
oLog.Close

Open in new window

Avatar of 03671328
03671328
Flag of United States of America image

ASKER

other info that i didnt add...
runing windows 2003 server enterprice in a domain controler enviremnet.

example of the log output



local computer computer name: vs1
backup computer name: 10.0.0.60
backup freenas server name: Internal_backup
location for the daily backup: W:
backup directory drive: Z:
Drive containing Virtual Machines: E:
VM folder path: \virtual
available drive letter used to mount shadow copy: x:
nas device drive: N:
shadow command file: CreateVSS.cmd
logs for program: logs.txt
backup created at10/13/2008 3:13:00 PM
shadow copy completed at 10-13-2008_15-13
 
 
--------------------old files data-----------------------------
moving old files to the backup directory time is now 3:13:32 PM
xcopy Z:\vs1 W:\Mon /s /i /y
Z:\vs1\Log Server.vhd
0 File(s) copied
 
finnished moving old data at 3:53:51 PM
--------------------end of old files move----------------------
 
-------------------------virtual server data----------------------
backup to vs2 started at3:53:51 PM
xcopy x:\virtual Z:\vs1 /s /i /y
X:\virtual\bla\bla.vhd
X:\virtual\bla\bla.vmc
X:\virtual\bla\bla.vsv
X:\virtual\freenas\backup.vhd
X:\virtual\freenas\data.vhd
X:\virtual\freenas\freenas.vmc
X:\virtual\freenas\freenas.vsv
X:\virtual\freenas\_backup.vhd
X:\virtual\linux\dyndnslinux.vmc
X:\virtual\linux\linux.vhd
X:\virtual\Log Server\Log Server.vmc
X:\virtual\LOGSERVER\C_2008-10-09T194226.vhd
X:\virtual\LOGSERVER\LOGSERVER.vmc
X:\virtual\LOGSERVER\LOGSERVER.vsv
X:\virtual\MikroTik\MikroTik.vhd
X:\virtual\MikroTik\MikroTik.vmc
X:\virtual\MikroTik\MikroTik.vsv
X:\virtual\Name Server 1\Name Server 1.vmc
X:\virtual\Virtual Web 1\data.vhd
backup to vs2 ended at4:46:20 PM
-------------------------virtual sever data end-------------------
 
 
 
C:\>Echo y   | vshadow.exe -da 
 
VSHADOW.EXE 2.2 - Volume Shadow Copy sample client
Copyright (C) 2005 Microsoft Corporation. All rights reserved.
 
 
(Option: Delete all shadow copies)
This will delete all shadow copies in the system. Are you sure? [Y/N] 
- Setting the VSS context to: 0xffffffff
- Deleting shadow copy {7b398665-82d0-4c2f-80c2-f22dccdb4af1} on \\?\Volume{727228eb-6f09-4db6-87c3-16609e706842}\ from provider {b5946137-7b9f-4925-af80-51abd60b20d5} [0x00520009]...
 
C:\>net use Z: /delete 
Z: was deleted successfully.
 
 
C:\>net use N: /delete 
N: was deleted successfully.
 
 
C:\>net use W: /delete 
W: was deleted successfully.
 
 
C:\>Echo y   | del C:\setvar1.cmd 
 
C:\>Echo y   | del C:\CreateVSS.cmd 
 
C:\>Echo y   | del C:\cleanup.cmd 
Oct 13 16:46:24 vs1 sendEmail.exe[7416]: Email was sent successfully!
Oct 13 16:46:24 vs1 sendEmail.exe[1748]: Email was sent successfully!

Open in new window

SOLUTION
Avatar of pit1140
pit1140
Flag of Austria image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
the whole idea of the script is to make shure the virtual machines stay running. for no down time. So i create a shadow copy then mount it, and copy the data from the shadow to anouther drive. I would like to add why it would error out. as in why it would not copy.
what is the specific error of xcopy?
thats what i need to find out it dont say.
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial