Войти

Показать полную графическую версию : Планировщик и скрипт архивации c помощью ntbackup


Udar_Nick
29-09-2010, 11:56
Приветствую уважаемый форум!

Стащил из http://forum.oszone.net/post-616207-2.html
скрипт архивации c помощью ntbackup
настроил под себя... и..
наткнулся на странную проблему..

скрипт отрабатывает при запуске дв.кликом, при запуске из шедулера, но только если залогонен пользователь!
это же задание шедулера не выполняется если юзер не залогонен :-(
запуск из шедулера под админским аккаунтом (домен АД)
в логах системы ничего
в логах шедулера "The task completed with an exits code of (1)"

ОС Windows Server 2003 R2 Service Pack 2 ENG

Подскажите, пожалуйста, что делать?

Заранее благодарен,
Александр

Petya V4sechkin
29-09-2010, 12:16
Udar_Nick, попробуйте в задании прописать запуск через cmd /c
cmd.exe /c полное_имя_скрипта

Udar_Nick
29-09-2010, 12:27
Увы, это не помогло. Результат тот же :-(

Petya V4sechkin
29-09-2010, 12:35
Udar_Nick, скрипт должен создавать лог в текущей папке.
Галка "Выполнять только при выполненном входе в систему" в свойствах задания снята?

Udar_Nick
29-09-2010, 12:51
Все верно, но скрипт лога не создает в случае запуска по расписанию и без залогоненого юзера (видимо до этого не доходит)
Указанная Вами галка снята

Я подозреваю, что в скрипте есть что-то особенное, что не дает ему выполниться по шедулеру ибо есть иной скрипт (очень простой :-) ), выполняющийся под этим же пользователем (админом) и в тех же условиях без подобных проблем:


@echo off
copy e:\backup\system\master-systemstate.bkf \\reserv3\arc\master\system\systemstate-%DATE%.bkf
GoTo :EOF

Добавление:

Испробовал тот же скрипт под тем же юзером но на рабочей машине с WinXP Prof RUS SP3 - абсолютно тот же эффект - в логах нули, в логах шедулера
Закончилось в 29.09.2010 14:45:00
Итог: Задание завершено с кодом (1).

Udar_Nick
30-09-2010, 12:17
скомпилировал этот скрипт в exe
таже картина - отрабатывает по расписанию если кто-то залогонен
если нет - ошибка 0х1 в шедулере

даже не знаю куда смотреть... :-(

amel27
30-09-2010, 13:02
Udar_Nick, под этой доменной учеткой нужно хотя бы раз залогиниться интерактивно (чтобы сформировался профиль и переменная APPDATA), и хотя бы раз запустить NTBackup (чтобы сформировался путь ...\User\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data)

Udar_Nick
30-09-2010, 13:39
amel27, ну как я и писал ВЫШЕ - много раз я логонился под ИМЕННО ЭТОЙ учеткой, под ней запускал скрипт

может быть проблема в том что cmd-шник я сейчас запускаю из e:\backup\database (куда и кладу сам бэкап)

по права на эту папку достаточные..
сейчас пробую запускать из под nncron lite - таже картина
явно дело в скрипте

amel27
30-09-2010, 14:50
Udar_Nick, стандартный приём: запускать батник с параметрами типа "test.cmd >c:\err.log 2>&1",
предварительно заменив в батнике "@echo off" -> "@echo on", потом см. лог

NiOl
30-09-2010, 14:55
Думаю проблема в пользователе, который используется шедулером - попробуйте простой тест, что будет на выходе после шедулера?

@echo %USERDOMAIN%\%USERNAME%: %CD%>%~dpn0.txt

Udar_Nick
30-09-2010, 15:16
стандартный приём: запускать батник с параметрами типа "test.cmd >c:\err.log 2>&1" »

Итак, в шедулере у меня такая строка (все как здесь, т.е. без кавычек, не знаю нужны они или нет)

C:\WINDOWS\system32\cmd.exe /c E:\backup\database\database.cmd >c:\err.log 2>&1


поставил в расписание - сделал LOG OFF - подождал - смотрю содержимое файла c:\err.log


E:\backup\database>SetLocal EnableDelayedExpansion

E:\backup\database>SET SOURCE=D:\resourse\backup_bases

E:\backup\database>SET FULLDEPTH=3

E:\backup\database>SET INCRDEPTH=5

E:\backup\database>Call :CallEx GetState

E:\backup\database>Call :GetState

E:\backup\database>For /F "Delims=" %i in (database.ini) Do Set /A %i+0

E:\backup\database>Set /A INCREMENT=0 +0

E:\backup\database>If "0" == "" (
Echo INCREMENT=0 1>database.ini
For /F "Delims=" %i in (database.ini) Do Set /A %i+0
If Not "!INCREMENT!" == "0" (
Set INCREMENT=0
Exit /B 2
)
)

E:\backup\database>GoTo :EOF

E:\backup\database>If 0 EQU 1 (
Echo.
Echo Модуль "GetState" вызвал исключение, работа скрипта прервана!
Exit
)

E:\backup\database>If 0 EQU 2 Echo Модуль "GetState" вызвал некритичную ошибку, работа скрипта продолжена.

E:\backup\database>GoTo :EOF

E:\backup\database>Call :CallEx DelLogs

E:\backup\database>Call :DelLogs

E:\backup\database>Set $BakData=~0,-17\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data

E:\backup\database>Del /Q /F "~0,-17\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data\backup*.log" 1>nul
The system cannot find the path specified.

E:\backup\database>If 1 NEQ 0 Exit /B 1

E:\backup\database>If 1 EQU 1 (
Echo.
Echo Модуль "DelLogs" вызвал исключение, работа скрипта прервана!
Exit
)

Модуль "DelLogs" вызвал исключение, работа скрипта прервана


Большое спасибо, что откликнулись
Что с этим делать дальше не знаю...

Petya V4sechkin
30-09-2010, 15:23
Set $BakData=~0,-17
Вот оно что, переменная APPDATA не определяется (если вход не интерактивный).

Udar_Nick
30-09-2010, 15:28
Думаю проблема в пользователе, который используется шедулером - попробуйте простой тест, что будет на выходе после шедулера?
Код:
@echo %USERDOMAIN%\%USERNAME%: %CD%>%~dpn0.txt »


задание выполняется под OFFICE\Aleks

в шедулере: cmd /c C:\test.cmd (содержащий Вашу строчку)

на выходе получил файл в корне диска C: с именем test.txt содержащий:

OFFICE\Aleks: C:\WINDOWS\system32


Спасибо что откликнулись :-)

Petya V4sechkin
30-09-2010, 15:33
Udar_Nick, в принципе, можно заменить строчку (их две штуки):
Set $BakData=%APPDATA:~0,-17%\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data
на:
Set $BakData=%UserProfile%\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data

Udar_Nick
30-09-2010, 15:47
Udar_Nick, в принципе, можно заменить строчку (их две штуки): »

УРА! СПАСИБО! РАБОТАЕТ!

Udar_Nick
10-02-2011, 12:02
Приветствую уважаемый форум!

Опять столкнулся с проблемкой по этому скрипту...

Решение выше заработало на Win 2003 Enterprice Server SP2 ENG

А вот на Win XP SP3 RUS - скрипт не отрабатывает... причем пока запускаю его не шедулером, а руками

делаю вывод ошибок в файл, вот его содержимое
:\Documents and Settings\Reanimator>SetLocal EnableDelayedExpansion

C:\Documents and Settings\Reanimator>SET SOURCE="@C:\backup-log\admin03.bks"

C:\Documents and Settings\Reanimator>SET FULLDEPTH=5

C:\Documents and Settings\Reanimator>SET INCRDEPTH=6

C:\Documents and Settings\Reanimator>Call :CallEx GetState

C:\Documents and Settings\Reanimator>Call :GetState

C:\Documents and Settings\Reanimator>For /F "Delims=" %i in (admin03.ini) Do Set /A %i+0

C:\Documents and Settings\Reanimator>Set /A INCREMENT=1 +0

C:\Documents and Settings\Reanimator>If "1" == "" (
Echo INCREMENT=0 1>admin03.ini
For /F "Delims=" %i in (admin03.ini) Do Set /A %i+0
If Not "!INCREMENT!" == "0" (
Set INCREMENT=0
Exit /B 2
)
)

C:\Documents and Settings\Reanimator>GoTo :EOF

C:\Documents and Settings\Reanimator>If 0 EQU 1 (
Echo.
Echo Модуль "GetState" вызвал исключение, работа скрипта прервана!
Exit
)

C:\Documents and Settings\Reanimator>If 0 EQU 2 Echo Модуль "GetState" вызвал некритичную ошибку, работа скрипта продолжена.

C:\Documents and Settings\Reanimator>GoTo :EOF

C:\Documents and Settings\Reanimator>Call :CallEx DelLogs

C:\Documents and Settings\Reanimator>Call :DelLogs

C:\Documents and Settings\Reanimator>Set $BakData=C:\Documents and Settings\Reanimator\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data

C:\Documents and Settings\Reanimator>Del /Q /F "C:\Documents and Settings\Reanimator\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data\backup*.log" 1>nul

C:\Documents and Settings\Reanimator>If 0 NEQ 0 Exit /B 1

C:\Documents and Settings\Reanimator>GoTo :EOF

C:\Documents and Settings\Reanimator>If 0 EQU 1 (
Echo.
Echo Модуль "DelLogs" вызвал исключение, работа скрипта прервана!
Exit
)

C:\Documents and Settings\Reanimator>If 0 EQU 2 Echo Модуль "DelLogs" вызвал некритичную ошибку, работа скрипта продолжена.

C:\Documents and Settings\Reanimator>GoTo :EOF

C:\Documents and Settings\Reanimator>Call :CallEx StartCMD

C:\Documents and Settings\Reanimator>Call :StartCMD

C:\Documents and Settings\Reanimator>Set $CMD=ntbackup backup "@C:\backup-log\admin03.bks" /f "c:\backup-log\admin03.0.bkf" /l:f /m incremental /a

C:\Documents and Settings\Reanimator>If 1 EQU 0 Set $CMD=ntbackup backup "@C:\backup-log\admin03.bks" /f "c:\backup-log\admin03.bkf" /m normal /l:f

C:\Documents and Settings\Reanimator>Start /WAIT ntbackup backup "@C:\backup-log\admin03.bks" /f "c:\backup-log\admin03.0.bkf" /l:f /m incremental /a

C:\Documents and Settings\Reanimator>If 0 NEQ 0 (
Call :CallEx CopyLog
Echo При выполнении резервного копирования возникли ошибки,
Echo Смотрите журнал сообщений: "admin03.log".
Exit /B 1
)

C:\Documents and Settings\Reanimator>Call :CallEx CopyLog

C:\Documents and Settings\Reanimator>Call :CopyLog

C:\Documents and Settings\Reanimator>Set $BakData=C:\Documents and Settings\Reanimator\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data

C:\Documents and Settings\Reanimator>If 1 EQU 0 (Copy "C:\Documents and Settings\Reanimator\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data\backup*.log" admin03.log 1>nul ) Else (Copy /B admin03.0.log+"C:\Documents and Settings\Reanimator\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data\backup*.log" admin03.0.log 1>nul )

C:\Documents and Settings\Reanimator>If 1 NEQ 0 Exit /B 1

C:\Documents and Settings\Reanimator>If 1 EQU 1 (
Echo.
Echo Модуль "CopyLog" вызвал исключение, работа скрипта прервана!
Exit
)

Модуль "CopyLog" вызвал исключение, работа скрипта прервана


Подскажите пожалуйста, в чем может быть ошибка?




© OSzone.net 2001-2012