|
Компьютерный форум OSzone.net » Сфера Microsoft » Программное обеспечение Windows » [решено] Как организовать архивацию данных? |
|
[решено] Как организовать архивацию данных?
|
Дикий Сообщения: 543 |
Профиль | Отправить PM | Цитировать Необходимо организовать сложную систему архивации штатными или бесплатными средствами.
Что нужно: Есть ряд ресурсов которые нужно архивировать ежедневно или по другому расписанию, желательно чтоб в архивах применялся инкрементальный метод копирования с заданой "глубиной" (количество дней хранения). Как это реализовано сейчас На каждый день недели есть командный файл который архивирует каждый ресурс в отдельный файл с использованием внешнего архиватора. В имени создаваемого файла указывается номер дня недели. В командном файле есть строка удаляющая все файлы предыдущей архивации. [c]Минусы данного подхода[/c] 1) Очень сложно организовать систему инкрементального копирования, хотя уже хочется, т.к. данных большие объёмы(свыше 100Гб) 2) Нет возможности отказаться от привязки к 7 дневной структуре из-за ограничений планировщика Windows 3) Нет возможности организовать контроль выполнения задания по архивации 4) В случае применения инкрементального копирования, приходится всё восстанавливать ручками начиная с первого архива, т.е. нет GUI интерйейса Раньше работал с Veritas NetBackUP, но ввиду перехода к чистому софту отказались от него. Если будут предложения использовать ntbackup, сразу же попрошу приводить свои реально рабочие конфигурации, если можно с примерами скриптов. |
|
------- Отправлено: 02:09, 19-07-2007 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Bugs:
2. планировщик может и ограничен, а скрипт нет 3. не совсем так, как минимум - переменная ERRORLEVEL плюс "If Exist" 4. можно тоже скриптом... от GUI NTBackup Имхо тоже мало толку. Цитата Bugs:
@echo off SetLocal EnableDelayedExpansion :: Параметры скрипта: :: SOURCE - путь к сетевому ресурсу или имя BKS-файла :: FULLDEPTH - глубина отката в полных архивах :: INCRDEPTH - инкрементных архивов на один полный SET SOURCE=\\SERVER\$DIR1 SET FULLDEPTH=5 SET INCRDEPTH=6 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=ntbackup backup %SOURCE% /f "%~dpn0.0.bkf" /l:f /m incremental /a If %INCREMENT% EQU 0 Set $CMD=ntbackup backup %SOURCE% /f "%~dpn0.bkf" /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 |
||
Отправлено: 10:00, 20-07-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Дикий Сообщения: 543
|
Профиль | Отправить PM | Цитировать amel27
Хороший скрипт! А можно еще скрипт восстановления нужной информации из конкретного полного архива? А почему именно такой шаг создания инкрементальных архивов и полных? Если я правильно понял, то просто запуская скрипт 5 раз, я создам один полный архив и 4 инкрементальных? Если запущу скрит 6 раз, то появится второй полный архив? |
------- Отправлено: 04:02, 21-07-2007 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Bugs
Цитата Bugs:
Цитата Bugs:
Цитата Bugs:
|
|||
Отправлено: 06:55, 21-07-2007 | #4 |
Дикий Сообщения: 543
|
Профиль | Отправить PM | Цитировать amel27
Цитата:
Цитата:
Я прошу прощения но сейчас есть под руками только КПК, на нём сложно проверить как работает этот скрипт, а решение очень понравилось! |
|||
------- Отправлено: 10:01, 21-07-2007 | #5 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Bugs
Цитата Bugs:
Цитата Bugs:
|
||
Отправлено: 14:36, 21-07-2007 | #6 |
Дикий Сообщения: 543
|
Профиль | Отправить PM | Цитировать amel27
А почему Вы не используете внешний архиватор для сжатия уже готовых полных архивов? Т.е. архив в который уже не добавляются инкрементальные бэкапы. Или у Вас совсем нет проблем с местом? |
------- Отправлено: 05:28, 23-07-2007 | #7 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Bugs
использую NTFS-сжатие тома, сильно сжимать тоже чревато - можно не уложиться в отведенное время |
Отправлено: 12:17, 23-07-2007 | #8 |
Дикий Сообщения: 543
|
Профиль | Отправить PM | Цитировать amel27
Хорошо, про NTFS сжатие я и не подумал :-) Спасибо большое, за хорошую консультацию! |
------- Отправлено: 04:10, 24-07-2007 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
http/web - [решено] Как организовать доступ к локальной станции из вне? | moonis | Сетевые технологии | 7 | 18-03-2010 17:49 | |
CMD/BAT - [решено] Как организовать поиск нужного диска и запуск с него приложения? | Nun-Nun | Скриптовые языки администрирования Windows | 16 | 28-05-2009 22:12 | |
[решено] Как организовать связь компьютеров?(через модем, для игр) | dimon-lexus | Сетевые технологии | 2 | 04-07-2006 20:57 | |
[решено] Как и чем организовать наблюдение за файловым сервером server 2003? | evsino | Microsoft Windows NT/2000/2003 | 6 | 11-10-2005 12:05 | |
[решено] Как организовать работу бездисковых терминальных станций | NIKoVITus | Microsoft Windows NT/2000/2003 | 3 | 30-09-2005 10:01 |
|