Backup Script läuft nicht mehr seit der Umstellung auf Win2008 SRV R2
Ich habe eine seltsame Geschichte, mit der ich aktuell nicht voran komme und hoffe über den einen oder anderen Tipp.
Ursprünglich lief auf einem 2003 R2 Srv BackupExec2010 mit einem Script, welches am Ende immer die alten Backup Files gelöscht hatte und eine Erfolgs -oder Fehlermail geschrieben hat.
Seit der Umstellung auf Win2008 R2 Srv werden die alten Dateien nicht mehr gelöscht und auch keine Mail verschickt.
Die Pfade, Benutzer und Berechtigungen sind alle gleich. Jemand vielleicht eine Idee, was ich übersehen habe?
Hier die Batch Datei:
@echo on & setlocal
goto beginn
Das Skript wird als User %computername%\administrator im Scheduler gestartet.
Ist der Systemname XEPR03 werden die Variablen nach dem Label :xepr03 geladen,
ist der Systemname XEPR04 werden die Variablen nach dem Label :xepr04 geladen.
Auf jedem anderen System wird das Skript abgebrochen. Es wird der Inhalt von
C:\temp\%~n0_last_run.txt mit dem Datum verglichen. Ist der Inhalt gleich dem
Datum wird das Skript beendet. Sind die Hosts aus %host0nn% erreichbar, wird
geprueft ob 7za.exe fertig ist. Dann werden die dort liegenden .zip Dateien mit
FTP nach %ftp_host% kopiert. Es werden %day_hold% Versionen auf %ftp_host%
aufgehoben. Am Ende wird eine Mail an %mail_empf% gesendet.
Modifikationen:
:beginn
:: Start Variablen definieren---------------------------------
set day_hold=5
set ftp_check_count=0
set file_menge=0
set bck_user=xets_backup
set bck_pass=vergismeinicht
set ext=zip
set log_dir=c:\prg\admin\logfiles
set input_dir=c:\prg\admin
set input_file=ftp_eex_input.txt
set output_file=ftp_eex_output.txt
set ftp_dir=eex
:: set mail_empf=neugvol@domain.com
set mail_empf=backup@domain.com
set mail_log=%log_dir%\%~n0_Mail.log
set mail_host=xeovms.xeo.de
set text=succeeded
echo %computername% | find /i "xepr0" >nul: 2>&1
if %errorlevel% equ 0 (goto :%computername%) else (echo Falsches System %computername% & exit)
:xepr04
set host001=xemsl2
set host002=xewsl2
set ftp_host=sysdev2.xeo.de
goto :select_ende
:xepr03
set host003=xemsl1
set host004=xewsl1
set ftp_host=sysdev2.xeo.de
goto :select_ende
:select_ende
set mail_server001=cfd001.xeo.de
set mail_server002=cfd002.xeo.de
set mail_port=25
:: Laufzeitvariable
set /a startzeit=%time:~0,2%*3600+%time:~3,1%*600+%time:~4,1%*60+%time:~6,1%*10+%time:~7,1%
set datum=%date:~-4%%date:~3,2%%date:~0,2%
:: Ende Variablen definieren-----------------------------------
if /i not exist C:\temp\%~n0_last_run.txt (goto :continue)
findstr "%datum%" C:\temp\%~n0_last_run.txt
if %errorlevel% equ 0 (echo %0 am %date% bereits gelaufen
goto :ende)
:continue
if /i exist %log_dir%\%output_file%* (del %log_dir%\%output_file%*)
if /i exist %log_dir%\%~n0_Mail_info.txt (del %log_dir%\%~n0_Mail_info.txt)
if /i exist %log_dir%\%~n0_tmp1.txt (del %log_dir%\%~n0_tmp1.txt)
if /i exist %log_dir%\%~n0_tmp2.txt (del %log_dir%\%~n0_tmp2.txt)
if /i exist %log_dir%\%~n0_tmp.txt (del %log_dir%\%~n0_tmp.txt)
for /f "usebackq tokens=2 delims==" %%a in (`set host0`) do set hostx=%%a& call :sub_host
goto :sub_host_ende
:sub_host
ping %hostx% | findstr /b /c:"Reply from " | findstr /c:": bytes=32 time"
if %errorlevel% neq 0 (echo %hostx% nicht erreichbar >>%log_dir%\%~n0_Mail_info.txt
set hostx=
set text=failed
goto :eof)
net use | find /i "%hostx%"
if %errorlevel% neq 0 (net use * \\%hostx%\c$ /user:eex\administrator /p:n)
for /f "usebackq tokens=2" %%b in (`net use ^| findstr /i /c:"%hostx%\C"`) do set drive=%%b
pushd %drive%\temp
for /f "usebackq" %%b in (`dir /b %hostx%_%datum%_*.%ext%`) do set file=%%b
if %file%x equ x (echo Keine Datei auf %hostx% vorhanden >>%log_dir%\%~n0_Mail_info.txt
set file=
set text=failed
goto :eof)
echo %bck_user%>%input_dir%\%input_file%
echo %bck_pass%>>%input_dir%\%input_file%
echo status>>%input_dir%\%input_file%
echo cd %ftp_dir%>>%input_dir%\%input_file%
echo debug>>%input_dir%\%input_file%
echo bin>>%input_dir%\%input_file%
echo put %file%>>%input_dir%\%input_file%
echo dir %file:~0,9%*.%ext%>>%input_dir%\%input_file%
echo status>>%input_dir%\%input_file%
echo bye>>%input_dir%\%input_file%
echo.>>%input_dir%\%input_file%
echo Start FTP %date% %time%>>%log_dir%\%output_file%_%ftp_check_count%
ftp -i -s:%input_dir%\%input_file% %ftp_host% >>%log_dir%\%output_file%_%ftp_check_count% 2>&1
echo End FTP %date% %time%>>%log_dir%\%output_file%_%ftp_check_count%
set /a ftp_check_count+=1
popd
net use %drive% /d
set hostx=
set file=
goto :eof
:sub_host_ende
pushd %log_dir%
for /f "usebackq" %%a in (`dir /b %output_file%_?`) do set file=%%a& call :sub_check_ftp
popd
goto :sub_check_ftp_ende
:sub_check_ftp
findstr /b /c:"226 Transfer complete." %file%
if %errorlevel% neq 0 (echo FTP-Fehler, check %log_dir%\%file% >>%log_dir%\%~n0_Mail_info.txt
set text=failed)
for /f "usebackq tokens=3" %%b in (`findstr /c:"Total of " %file% ^| findstr /c:" files, "`) do set file_menge=%%b
findstr /b /i "xe" %file% | findstr /i ".zip">%log_dir%\%~n0_tmp1.txt
for /f "usebackq tokens=1 delims=." %%b in (%log_dir%\%~n0_tmp1.txt) do echo %%b.zip>>%log_dir%\%~n0_tmp2.txt
type %log_dir%\%~n0_tmp2.txt | sort /+7 /r >%log_dir%\%~n0_tmp.txt
set /a del_num=%file_menge%-%day_hold%
if %file_menge% leq %day_hold% (goto :eof)
C:\Prg\Admin\tools\tail -%del_num% %log_dir%\%~n0_tmp.txt >%log_dir%\%~n0_del.txt
echo %bck_user%>%input_dir%\%input_file%
echo %bck_pass%>>%input_dir%\%input_file%
echo status>>%input_dir%\%input_file%
echo cd %ftp_dir%>>%input_dir%\%input_file%
echo debug>>%input_dir%\%input_file%
for /f %%c in (%log_dir%\%~n0_del.txt) do echo del %%c;* >>%input_dir%\%input_file%
echo status>>%input_dir%\%input_file%
echo bye>>%input_dir%\%input_file%
echo.>>%input_dir%\%input_file%
echo Start FTP %date% %time%>>%log_dir%\%output_file%_del
ftp -i -s:%input_dir%\%input_file% %ftp_host% >>%log_dir%\%output_file%_del 2>&1
echo End FTP %date% %time%>>%log_dir%\%output_file%_del
set /a ftp_check_count+=1
goto :eof
:sub_check_ftp_ende
findstr /c:"Failed to delete file" %log_dir%\%output_file%_del
if %errorlevel% equ 0 (echo Fehler beim loeschen einer Datei auf %ftp_host% >>%log_dir%\%~n0_Mail_info.txt
echo Check %log_dir%\%output_file%_del >>%log_dir%\%~n0_Mail_info.txt
set text=failed)
if /i %text%x neq failedx (echo Alles ok >>%log_dir%\%~n0_Mail_info.txt)
c:\Prg\blat\blat.exe %log_dir%\%~n0_Mail_info.txt -server %mail_host% -f %computername%_EEX_FTP@domain.com -to %mail_empf% -subject "%date% %time:~0,-3% Job %text%">%mail_log%
:ende
set /a endezeit=%time:~0,2%*3600+%time:~3,1%*600+%time:~4,1%*60+%time:~6,1%*10+%time:~7,1%
set /a laufzeit=%endezeit%-%startzeit%
echo Laufzeit war %laufzeit% Sekunden, ftp_check_count = %ftp_check_count%
echo %datum% >C:\temp\%~n0_last_run.txt
endlocal
Danke vorab
Ursprünglich lief auf einem 2003 R2 Srv BackupExec2010 mit einem Script, welches am Ende immer die alten Backup Files gelöscht hatte und eine Erfolgs -oder Fehlermail geschrieben hat.
Seit der Umstellung auf Win2008 R2 Srv werden die alten Dateien nicht mehr gelöscht und auch keine Mail verschickt.
Die Pfade, Benutzer und Berechtigungen sind alle gleich. Jemand vielleicht eine Idee, was ich übersehen habe?
Hier die Batch Datei:
@echo on & setlocal
goto beginn
Das Skript wird als User %computername%\administrator im Scheduler gestartet.
Ist der Systemname XEPR03 werden die Variablen nach dem Label :xepr03 geladen,
ist der Systemname XEPR04 werden die Variablen nach dem Label :xepr04 geladen.
Auf jedem anderen System wird das Skript abgebrochen. Es wird der Inhalt von
C:\temp\%~n0_last_run.txt mit dem Datum verglichen. Ist der Inhalt gleich dem
Datum wird das Skript beendet. Sind die Hosts aus %host0nn% erreichbar, wird
geprueft ob 7za.exe fertig ist. Dann werden die dort liegenden .zip Dateien mit
FTP nach %ftp_host% kopiert. Es werden %day_hold% Versionen auf %ftp_host%
aufgehoben. Am Ende wird eine Mail an %mail_empf% gesendet.
Modifikationen:
:beginn
:: Start Variablen definieren---------------------------------
set day_hold=5
set ftp_check_count=0
set file_menge=0
set bck_user=xets_backup
set bck_pass=vergismeinicht
set ext=zip
set log_dir=c:\prg\admin\logfiles
set input_dir=c:\prg\admin
set input_file=ftp_eex_input.txt
set output_file=ftp_eex_output.txt
set ftp_dir=eex
:: set mail_empf=neugvol@domain.com
set mail_empf=backup@domain.com
set mail_log=%log_dir%\%~n0_Mail.log
set mail_host=xeovms.xeo.de
set text=succeeded
echo %computername% | find /i "xepr0" >nul: 2>&1
if %errorlevel% equ 0 (goto :%computername%) else (echo Falsches System %computername% & exit)
:xepr04
set host001=xemsl2
set host002=xewsl2
set ftp_host=sysdev2.xeo.de
goto :select_ende
:xepr03
set host003=xemsl1
set host004=xewsl1
set ftp_host=sysdev2.xeo.de
goto :select_ende
:select_ende
set mail_server001=cfd001.xeo.de
set mail_server002=cfd002.xeo.de
set mail_port=25
:: Laufzeitvariable
set /a startzeit=%time:~0,2%*3600+%time:~3,1%*600+%time:~4,1%*60+%time:~6,1%*10+%time:~7,1%
set datum=%date:~-4%%date:~3,2%%date:~0,2%
:: Ende Variablen definieren-----------------------------------
if /i not exist C:\temp\%~n0_last_run.txt (goto :continue)
findstr "%datum%" C:\temp\%~n0_last_run.txt
if %errorlevel% equ 0 (echo %0 am %date% bereits gelaufen
goto :ende)
:continue
if /i exist %log_dir%\%output_file%* (del %log_dir%\%output_file%*)
if /i exist %log_dir%\%~n0_Mail_info.txt (del %log_dir%\%~n0_Mail_info.txt)
if /i exist %log_dir%\%~n0_tmp1.txt (del %log_dir%\%~n0_tmp1.txt)
if /i exist %log_dir%\%~n0_tmp2.txt (del %log_dir%\%~n0_tmp2.txt)
if /i exist %log_dir%\%~n0_tmp.txt (del %log_dir%\%~n0_tmp.txt)
for /f "usebackq tokens=2 delims==" %%a in (`set host0`) do set hostx=%%a& call :sub_host
goto :sub_host_ende
:sub_host
ping %hostx% | findstr /b /c:"Reply from " | findstr /c:": bytes=32 time"
if %errorlevel% neq 0 (echo %hostx% nicht erreichbar >>%log_dir%\%~n0_Mail_info.txt
set hostx=
set text=failed
goto :eof)
net use | find /i "%hostx%"
if %errorlevel% neq 0 (net use * \\%hostx%\c$ /user:eex\administrator /p:n)
for /f "usebackq tokens=2" %%b in (`net use ^| findstr /i /c:"%hostx%\C"`) do set drive=%%b
pushd %drive%\temp
for /f "usebackq" %%b in (`dir /b %hostx%_%datum%_*.%ext%`) do set file=%%b
if %file%x equ x (echo Keine Datei auf %hostx% vorhanden >>%log_dir%\%~n0_Mail_info.txt
set file=
set text=failed
goto :eof)
echo %bck_user%>%input_dir%\%input_file%
echo %bck_pass%>>%input_dir%\%input_file%
echo status>>%input_dir%\%input_file%
echo cd %ftp_dir%>>%input_dir%\%input_file%
echo debug>>%input_dir%\%input_file%
echo bin>>%input_dir%\%input_file%
echo put %file%>>%input_dir%\%input_file%
echo dir %file:~0,9%*.%ext%>>%input_dir%\%input_file%
echo status>>%input_dir%\%input_file%
echo bye>>%input_dir%\%input_file%
echo.>>%input_dir%\%input_file%
echo Start FTP %date% %time%>>%log_dir%\%output_file%_%ftp_check_count%
ftp -i -s:%input_dir%\%input_file% %ftp_host% >>%log_dir%\%output_file%_%ftp_check_count% 2>&1
echo End FTP %date% %time%>>%log_dir%\%output_file%_%ftp_check_count%
set /a ftp_check_count+=1
popd
net use %drive% /d
set hostx=
set file=
goto :eof
:sub_host_ende
pushd %log_dir%
for /f "usebackq" %%a in (`dir /b %output_file%_?`) do set file=%%a& call :sub_check_ftp
popd
goto :sub_check_ftp_ende
:sub_check_ftp
findstr /b /c:"226 Transfer complete." %file%
if %errorlevel% neq 0 (echo FTP-Fehler, check %log_dir%\%file% >>%log_dir%\%~n0_Mail_info.txt
set text=failed)
for /f "usebackq tokens=3" %%b in (`findstr /c:"Total of " %file% ^| findstr /c:" files, "`) do set file_menge=%%b
findstr /b /i "xe" %file% | findstr /i ".zip">%log_dir%\%~n0_tmp1.txt
for /f "usebackq tokens=1 delims=." %%b in (%log_dir%\%~n0_tmp1.txt) do echo %%b.zip>>%log_dir%\%~n0_tmp2.txt
type %log_dir%\%~n0_tmp2.txt | sort /+7 /r >%log_dir%\%~n0_tmp.txt
set /a del_num=%file_menge%-%day_hold%
if %file_menge% leq %day_hold% (goto :eof)
C:\Prg\Admin\tools\tail -%del_num% %log_dir%\%~n0_tmp.txt >%log_dir%\%~n0_del.txt
echo %bck_user%>%input_dir%\%input_file%
echo %bck_pass%>>%input_dir%\%input_file%
echo status>>%input_dir%\%input_file%
echo cd %ftp_dir%>>%input_dir%\%input_file%
echo debug>>%input_dir%\%input_file%
for /f %%c in (%log_dir%\%~n0_del.txt) do echo del %%c;* >>%input_dir%\%input_file%
echo status>>%input_dir%\%input_file%
echo bye>>%input_dir%\%input_file%
echo.>>%input_dir%\%input_file%
echo Start FTP %date% %time%>>%log_dir%\%output_file%_del
ftp -i -s:%input_dir%\%input_file% %ftp_host% >>%log_dir%\%output_file%_del 2>&1
echo End FTP %date% %time%>>%log_dir%\%output_file%_del
set /a ftp_check_count+=1
goto :eof
:sub_check_ftp_ende
findstr /c:"Failed to delete file" %log_dir%\%output_file%_del
if %errorlevel% equ 0 (echo Fehler beim loeschen einer Datei auf %ftp_host% >>%log_dir%\%~n0_Mail_info.txt
echo Check %log_dir%\%output_file%_del >>%log_dir%\%~n0_Mail_info.txt
set text=failed)
if /i %text%x neq failedx (echo Alles ok >>%log_dir%\%~n0_Mail_info.txt)
c:\Prg\blat\blat.exe %log_dir%\%~n0_Mail_info.txt -server %mail_host% -f %computername%_EEX_FTP@domain.com -to %mail_empf% -subject "%date% %time:~0,-3% Job %text%">%mail_log%
:ende
set /a endezeit=%time:~0,2%*3600+%time:~3,1%*600+%time:~4,1%*60+%time:~6,1%*10+%time:~7,1%
set /a laufzeit=%endezeit%-%startzeit%
echo Laufzeit war %laufzeit% Sekunden, ftp_check_count = %ftp_check_count%
echo %datum% >C:\temp\%~n0_last_run.txt
endlocal
Danke vorab
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 257703
Url: https://administrator.de/forum/backup-script-laeuft-nicht-mehr-seit-der-umstellung-auf-win2008-srv-r2-257703.html
Ausgedruckt am: 08.05.2025 um 15:05 Uhr
2 Kommentare
Neuester Kommentar
Hallo,
Vielleicht habt ihr einfach angenommen das ein Server 2003 nur ein Server 2003 plus 5 ist. Dem ist nicht so. Das OS hat einige Änderungen erfahren welche zum Teil das was war zu einen das was nicht mehr geht umbaut.
Wer soll was?
Welche Rechte hat derjenige?
Wie wird das alles gestartet? BE2010 Dienst oder angemeldeter Benutzer?
Zugriff von Diensten auf den Desktop nötig?
Gruß,
Peter
Vielleicht habt ihr einfach angenommen das ein Server 2003 nur ein Server 2003 plus 5 ist. Dem ist nicht so. Das OS hat einige Änderungen erfahren welche zum Teil das was war zu einen das was nicht mehr geht umbaut.
Wer soll was?
Welche Rechte hat derjenige?
Wie wird das alles gestartet? BE2010 Dienst oder angemeldeter Benutzer?
Zugriff von Diensten auf den Desktop nötig?
Auf jedem anderen System wird das Skript abgebrochen.
Wo im Skript wird denn abgebrochen?Gruß,
Peter