none
Скрипт для бэкапа RRS feed

  • Вопрос

  • Всем привет.

    Подскажите пож-то скрипт для создания бэкапа systemstate на 2003 систему.

    Т.е. сам запуск по расписнаию не проблема. Хотелось бы, что бы создавался данный бэкап каждый день и с указанием даты создания-у меня чего то не выходит пока(((((


    • Изменено chellout 9 сентября 2013 г. 3:36
    • Перемещено Dmitry Nikitin 9 сентября 2013 г. 12:43 script
    9 сентября 2013 г. 3:35

Ответы

  • Там просто чуть сложнее с обработкой, возьмите готовое решение.
    9 сентября 2013 г. 12:14
  • А, если попробовать так, смотрите скрипт.

     
    @echo off 
    SetLocal EnableDelayedExpansion 
    :: Параметры скрипта: 
    :: SOURCE - путь к сетевому ресурсу или имя BKS-файла 
    :: FULLDEPTH - глубина отката в полных архивах 
    :: INCRDEPTH - инкрементных архивов на один полный 
    ::SET SOURCE=\\SERVER\$DIR1 
    SET SOURCE="@E:\backup\database\database.bks" 
    SET FULLDEPTH=3 
    SET INCRDEPTH=5 
     
    Call :CallEx GetState 
    Call :CallEx DelLogs 
    Call :CallEx StartCMD 
    If %ERRORLEVEL% EQU 0 ( 
    Call :CallEx NewState 
    Call :CallEx SetState 
    Call :CallEx DelBkf) 
    Exit 
    :: Запуск процесса NTBackup 
    :StartCMD 
    Set $CMD=C:\WINDOWS\system32\ntbackup.exe backup %SOURCE% /f "%~dpn0.0.bkf" /l:f /m incremental /a 
    If %INCREMENT% EQU 0 Set $CMD=C:\WINDOWS\system32\ntbackup.exe backup %SOURCE% /f "%~dpn0.bkf"  /m normal /l:f 
    Start /WAIT %$CMD% 
    If %ERRORLEVEL% NEQ 0 ( 
        Call :CallEx CopyLog 
        Echo При выполнении резервного копирования возникли ошибки, 
        Echo Смотрите журнал сообщений: "%~n0.log". 
        Exit /B 1) 
    Call :CallEx CopyLog 
    If Exist %~n0.bkf ( 
        If Exist %~n0.0.bkf Call :CallEx ShiftBkf 0 1 
        Ren %~n0.bkf %~n0.0.bkf 
        If %ERRORLEVEL% NEQ 0 Exit /B 1 
        If Exist %~n0.log Ren %~n0.log %~n0.0.log 
        If %ERRORLEVEL% NEQ 0 Exit /B 2) 
    GoTo :EOF 
    :: Чистка старых логов 
    :DelLogs 
    Set $BakData=%APPDATA:~0,-17%\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data 
    Del /Q /F "%$BakData%\backup*.log" >nul 
    If %ERRORLEVEL% NEQ 0 Exit /B 1 
    GoTo :EOF 
    :CopyLog 
    Set $BakData=%APPDATA:~0,-17%\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data 
    If %INCREMENT% EQU 0 ( 
        Copy "%$BakData%\backup*.log" %~n0.log >nul 
    ) Else ( 
        Copy /B %~n0.0.log+"%$BakData%\backup*.log" %~n0.0.log >nul 
    ) 
    If %ERRORLEVEL% NEQ 0 Exit /B 1 
    GoTo :EOF 
    :: Расчет нового состояния 
    :NewState 
    Set /A INCREMENT=%INCREMENT%+1 
    If %INCREMENT% GTR %INCRDEPTH% Set INCREMENT=0 
    GoTo :EOF 
    :: Чтение параметров 
    :GetState 
    For /f "Delims=" %%i in (%~n0.ini) Do Set /A %%i+0 
    If "%INCREMENT%"=="" ( 
        Echo INCREMENT=0 >%~n0.ini 
        For /f "Delims=" %%i in (%~n0.ini) Do Set /A %%i+0 
        If Not "!INCREMENT!"=="0" ( 
            Set INCREMENT=0 
            Exit /B 2 
        ) 
    ) 
    GoTo :EOF 
    :: Сохранение параметров 
    :SetState 
    Set $bak=%INCREMENT% 
    Echo INCREMENT=%INCREMENT% >%~n0.ini 
    For /f "Delims=" %%i in (%~n0.ini) Do Set /A %%i+0 
    If Not "%INCREMENT%"=="%$bak%" Exit /B 1 
    GoTo :EOF 
    :: Переименование архивов 
    :ShiftBkf 
    If Exist %~n0.%2.bkf ( 
        Set /A $idx=%2+1 
            Call :ShiftBkf %2 !$idx! 
        If !ERRORLEVEL! NEQ 0 Exit /B 1 ) 
    Ren %~n0.%1.bkf %~n0.%2.bkf 
    If %ERRORLEVEL% NEQ 0 Exit /B 1 
    If Exist %~n0.%2.log Del %~n0.%2.log 
    If %ERRORLEVEL% NEQ 0 Exit /B 2 
    If Exist %~n0.%1.log Ren %~n0.%1.log %~n0.%2.log 
    If %ERRORLEVEL% NEQ 0 Exit /B 2 
    GoTo :EOF 
    :: Удаление старых архивов 
    :DelBkf 
    For /f "tokens=1,2 delims=." %%i in ('Dir /B %~n0.?.bkf^|FindStr /REC:"\.[0-9]\.bkf"') Do ( 
        If %%j GEQ %FULLDEPTH% ( 
            Del /F/Q %%i.%%j.log 
            Del /F/Q %%i.%%j.bkf) 
        If !ERRORLEVEL! NEQ 0 Exit /B 1) 
    GoTo :EOF 
    :: Вызов процедур с контролем ошибок 
    :CallEx 
    Call :%* 
    If %ERRORLEVEL% EQU 1 ( 
        Echo. 
        Echo Модуль "%1" вызвал исключение, работа скрипта прервана! 
        Exit ) 
    If %ERRORLEVEL% EQU 2 Echo Модуль "%1" вызвал некритичную ошибку, работа скрипта продолжена. 
    GoTo :EOF 
     

    Файл сохранить с расширением cmd.

    В виде есть коментарии, надеюсь он вам поможет.

    Скрипт взят с сайтов и немного отредактирован

    http://forum.oszone.net/post-616207-2.html

    http://forum.ru-board.com/topic.cgi?forum=8&topic=38883

    Удачи 


    Я не волшебник, я только учусь MCTS Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции работодателя. Вся информация предоставляется как есть без каких-либо гарантий Мой Блог http://blogs.officeonline.su/

    9 сентября 2013 г. 12:20
    Модератор

Все ответы

  • NTBackup.exe backup systemstate c:\ /F "d:\ntbackup\%COMPUTERNAME%\(%DATE%).bkf" /l:s

    Как-то так.
    • Изменено Dmitriy Razbornov 9 сентября 2013 г. 5:58
    • Предложено в качестве ответа GemaGlass 9 сентября 2013 г. 6:23
    • Помечено в качестве ответа chellout 9 сентября 2013 г. 6:40
    • Снята пометка об ответе chellout 9 сентября 2013 г. 10:22
    9 сентября 2013 г. 5:57
  • NTBackup.exe backup systemstate c:\ /F "d:\ntbackup\%COMPUTERNAME%\(%DATE%).bkf" /l:s

    Как-то так.

    О боже!! Как оказывается все просто-СПАСИБО)))
    9 сентября 2013 г. 6:40
  • NTBackup.exe backup systemstate c:\ /F "d:\ntbackup\%COMPUTERNAME%\(%DATE%).bkf" /l:s

    Как-то так.

    Да чуть не забыл....А если делать бэкап нужно 2 раза в день...То новый перезатерает предъидущий(((Как оставлять бэкапы ,если они делаются в один день и имеют одинаковую дату?
    9 сентября 2013 г. 10:24
  • Есть переменная %TIME%.
    9 сентября 2013 г. 10:26
  • NTBackup.exe backup systemstate c:\ /F "d:\ntbackup\%COMPUTERNAME%\(%DATE%).bkf" /l:s

    Как-то так.


    Да чуть не забыл....А если делать бэкап нужно 2 раза в день...То новый перезатерает предъидущий(((Как оставлять бэкапы ,если они делаются в один день и имеют одинаковую дату?
    Попробуйте %Data%Time %

    Я не волшебник, я только учусь MCTS Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции работодателя. Вся информация предоставляется как есть без каких-либо гарантий Мой Блог http://blogs.officeonline.su/



    увы на выходе получилась вот аткая кака: SystemState(Times ((( Вот такой название бэкапа вышло
    9 сентября 2013 г. 11:35
  • Там просто чуть сложнее с обработкой, возьмите готовое решение.
    9 сентября 2013 г. 12:14
  • А, если попробовать так, смотрите скрипт.

     
    @echo off 
    SetLocal EnableDelayedExpansion 
    :: Параметры скрипта: 
    :: SOURCE - путь к сетевому ресурсу или имя BKS-файла 
    :: FULLDEPTH - глубина отката в полных архивах 
    :: INCRDEPTH - инкрементных архивов на один полный 
    ::SET SOURCE=\\SERVER\$DIR1 
    SET SOURCE="@E:\backup\database\database.bks" 
    SET FULLDEPTH=3 
    SET INCRDEPTH=5 
     
    Call :CallEx GetState 
    Call :CallEx DelLogs 
    Call :CallEx StartCMD 
    If %ERRORLEVEL% EQU 0 ( 
    Call :CallEx NewState 
    Call :CallEx SetState 
    Call :CallEx DelBkf) 
    Exit 
    :: Запуск процесса NTBackup 
    :StartCMD 
    Set $CMD=C:\WINDOWS\system32\ntbackup.exe backup %SOURCE% /f "%~dpn0.0.bkf" /l:f /m incremental /a 
    If %INCREMENT% EQU 0 Set $CMD=C:\WINDOWS\system32\ntbackup.exe backup %SOURCE% /f "%~dpn0.bkf"  /m normal /l:f 
    Start /WAIT %$CMD% 
    If %ERRORLEVEL% NEQ 0 ( 
        Call :CallEx CopyLog 
        Echo При выполнении резервного копирования возникли ошибки, 
        Echo Смотрите журнал сообщений: "%~n0.log". 
        Exit /B 1) 
    Call :CallEx CopyLog 
    If Exist %~n0.bkf ( 
        If Exist %~n0.0.bkf Call :CallEx ShiftBkf 0 1 
        Ren %~n0.bkf %~n0.0.bkf 
        If %ERRORLEVEL% NEQ 0 Exit /B 1 
        If Exist %~n0.log Ren %~n0.log %~n0.0.log 
        If %ERRORLEVEL% NEQ 0 Exit /B 2) 
    GoTo :EOF 
    :: Чистка старых логов 
    :DelLogs 
    Set $BakData=%APPDATA:~0,-17%\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data 
    Del /Q /F "%$BakData%\backup*.log" >nul 
    If %ERRORLEVEL% NEQ 0 Exit /B 1 
    GoTo :EOF 
    :CopyLog 
    Set $BakData=%APPDATA:~0,-17%\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data 
    If %INCREMENT% EQU 0 ( 
        Copy "%$BakData%\backup*.log" %~n0.log >nul 
    ) Else ( 
        Copy /B %~n0.0.log+"%$BakData%\backup*.log" %~n0.0.log >nul 
    ) 
    If %ERRORLEVEL% NEQ 0 Exit /B 1 
    GoTo :EOF 
    :: Расчет нового состояния 
    :NewState 
    Set /A INCREMENT=%INCREMENT%+1 
    If %INCREMENT% GTR %INCRDEPTH% Set INCREMENT=0 
    GoTo :EOF 
    :: Чтение параметров 
    :GetState 
    For /f "Delims=" %%i in (%~n0.ini) Do Set /A %%i+0 
    If "%INCREMENT%"=="" ( 
        Echo INCREMENT=0 >%~n0.ini 
        For /f "Delims=" %%i in (%~n0.ini) Do Set /A %%i+0 
        If Not "!INCREMENT!"=="0" ( 
            Set INCREMENT=0 
            Exit /B 2 
        ) 
    ) 
    GoTo :EOF 
    :: Сохранение параметров 
    :SetState 
    Set $bak=%INCREMENT% 
    Echo INCREMENT=%INCREMENT% >%~n0.ini 
    For /f "Delims=" %%i in (%~n0.ini) Do Set /A %%i+0 
    If Not "%INCREMENT%"=="%$bak%" Exit /B 1 
    GoTo :EOF 
    :: Переименование архивов 
    :ShiftBkf 
    If Exist %~n0.%2.bkf ( 
        Set /A $idx=%2+1 
            Call :ShiftBkf %2 !$idx! 
        If !ERRORLEVEL! NEQ 0 Exit /B 1 ) 
    Ren %~n0.%1.bkf %~n0.%2.bkf 
    If %ERRORLEVEL% NEQ 0 Exit /B 1 
    If Exist %~n0.%2.log Del %~n0.%2.log 
    If %ERRORLEVEL% NEQ 0 Exit /B 2 
    If Exist %~n0.%1.log Ren %~n0.%1.log %~n0.%2.log 
    If %ERRORLEVEL% NEQ 0 Exit /B 2 
    GoTo :EOF 
    :: Удаление старых архивов 
    :DelBkf 
    For /f "tokens=1,2 delims=." %%i in ('Dir /B %~n0.?.bkf^|FindStr /REC:"\.[0-9]\.bkf"') Do ( 
        If %%j GEQ %FULLDEPTH% ( 
            Del /F/Q %%i.%%j.log 
            Del /F/Q %%i.%%j.bkf) 
        If !ERRORLEVEL! NEQ 0 Exit /B 1) 
    GoTo :EOF 
    :: Вызов процедур с контролем ошибок 
    :CallEx 
    Call :%* 
    If %ERRORLEVEL% EQU 1 ( 
        Echo. 
        Echo Модуль "%1" вызвал исключение, работа скрипта прервана! 
        Exit ) 
    If %ERRORLEVEL% EQU 2 Echo Модуль "%1" вызвал некритичную ошибку, работа скрипта продолжена. 
    GoTo :EOF 
     

    Файл сохранить с расширением cmd.

    В виде есть коментарии, надеюсь он вам поможет.

    Скрипт взят с сайтов и немного отредактирован

    http://forum.oszone.net/post-616207-2.html

    http://forum.ru-board.com/topic.cgi?forum=8&topic=38883

    Удачи 


    Я не волшебник, я только учусь MCTS Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции работодателя. Вся информация предоставляется как есть без каких-либо гарантий Мой Блог http://blogs.officeonline.su/

    Спасибо большое-буду учиться))))
    12 сентября 2013 г. 3:28