Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Программное обеспечение Windows » [решено] Как организовать архивацию данных?

Ответить
Настройки темы
[решено] Как организовать архивацию данных?

Дикий


Сообщения: 543
Благодарности: 4

Профиль | Отправить PM | Цитировать


Необходимо организовать сложную систему архивации штатными или бесплатными средствами.

Что нужно:
Есть ряд ресурсов которые нужно архивировать ежедневно или по другому расписанию, желательно чтоб в архивах применялся инкрементальный метод копирования с заданой "глубиной" (количество дней хранения).

Как это реализовано сейчас
На каждый день недели есть командный файл который архивирует каждый ресурс в отдельный файл с использованием внешнего архиватора. В имени создаваемого файла указывается номер дня недели. В командном файле есть строка удаляющая все файлы предыдущей архивации.

[c]Минусы данного подхода[/c]
1) Очень сложно организовать систему инкрементального копирования, хотя уже хочется, т.к. данных большие объёмы(свыше 100Гб)
2) Нет возможности отказаться от привязки к 7 дневной структуре из-за ограничений планировщика Windows
3) Нет возможности организовать контроль выполнения задания по архивации
4) В случае применения инкрементального копирования, приходится всё восстанавливать ручками начиная с первого архива, т.е. нет GUI интерйейса

Раньше работал с Veritas NetBackUP, но ввиду перехода к чистому софту отказались от него.
Если будут предложения использовать ntbackup, сразу же попрошу приводить свои реально рабочие конфигурации, если можно с примерами скриптов.

-------
Невероятное мы совершаем мгновенно, невозможное чуть дольше.


Отправлено: 02:09, 19-07-2007

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Bugs:
Минусы данного подхода
1. ничего сложного, главное чтобы архиватор понимал архивный атрибут (к примеру WinRAR)
2. планировщик может и ограничен, а скрипт нет
3. не совсем так, как минимум - переменная ERRORLEVEL плюс "If Exist"
4. можно тоже скриптом... от GUI NTBackup Имхо тоже мало толку.
Цитата Bugs:
Если будут предложения использовать ntbackup, сразу же попрошу приводить свои реально рабочие конфигурации, если можно с примерами скриптов.
к сожалению, NTBackup не жмет данные в отличе от архиваторов , зато файлов создает меньше... CMD-вариант без привязки к шедулеру, все инкрементные архивы создаются в файле полного архива, любая критика приветствуется:
Код: Выделить весь код
@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
Благодарности: 4

Профиль | Отправить PM | Цитировать


amel27
Хороший скрипт!
А можно еще скрипт восстановления нужной информации из конкретного полного архива?
А почему именно такой шаг создания инкрементальных архивов и полных?
Если я правильно понял, то просто запуская скрипт 5 раз, я создам один полный архив и 4 инкрементальных? Если запущу скрит 6 раз, то появится второй полный архив?

-------
Невероятное мы совершаем мгновенно, невозможное чуть дольше.


Отправлено: 04:02, 21-07-2007 | #3


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Bugs
Цитата Bugs:
А можно еще скрипт восстановления нужной информации из конкретного полного архива?
К сожалению, NTBackup не поддерживает восстановление из командной строки... зато у него куча других преимуществ, например очень детальный лог. Можно автоматизировать восстановление при использовании обычных архиваторов (типа WinRAR, хотя он вроде небесплатный).
Цитата Bugs:
Если я правильно понял, то просто запуская скрипт 5 раз, я создам один полный архив и 4 инкрементальных? Если запущу скрит 6 раз, то появится второй полный архив?
Нет, на 1 полный будет 6 инкрементальных... причем количество хранимых полных архивов будет не больше 5 - старые будут автоматически удаляться... Все эти параметры можно настроить под себя.
Цитата Bugs:
А почему именно такой шаг создания инкрементальных архивов и полных?
Скажем, в воскресенье - полный архив, а в остальные (6 дней) инкрементальные.
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:55, 21-07-2007 | #4


Дикий


Сообщения: 543
Благодарности: 4

Профиль | Отправить PM | Цитировать


amel27
Цитата:
К сожалению, NTBackup не поддерживает восстановление из командной строки... зато у него куча других преимуществ, например очень детальный лог. Можно автоматизировать восстановление при использовании обычных архиваторов (типа WinRAR, хотя он вроде небесплатный).
Т.е. восстановление будет происходить через GUI интерфейс?

Цитата:
Нет, на 1 полный будет 6 инкрементальных... причем количество хранимых полных архивов будет не больше 5 - старые будут автоматически удаляться... Все эти параметры можно настроить под себя.
Каждый полный это отдельный файл, да?
Я прошу прощения но сейчас есть под руками только КПК, на нём сложно проверить как работает этот скрипт, а решение очень понравилось!

-------
Невероятное мы совершаем мгновенно, невозможное чуть дольше.


Отправлено: 10:01, 21-07-2007 | #5


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Bugs
Цитата Bugs:
Т.е. восстановление будет происходить через GUI интерфейс?
как заказывал
Цитата Bugs:
Каждый полный это отдельный файл, да?
да, в этот же файл добавляются все инкрементные (до следующего полного)

Отправлено: 14:36, 21-07-2007 | #6


Дикий


Сообщения: 543
Благодарности: 4

Профиль | Отправить PM | Цитировать


amel27
А почему Вы не используете внешний архиватор для сжатия уже готовых полных архивов?
Т.е. архив в который уже не добавляются инкрементальные бэкапы.
Или у Вас совсем нет проблем с местом?

-------
Невероятное мы совершаем мгновенно, невозможное чуть дольше.


Отправлено: 05:28, 23-07-2007 | #7


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Bugs
использую NTFS-сжатие тома, сильно сжимать тоже чревато - можно не уложиться в отведенное время

Отправлено: 12:17, 23-07-2007 | #8


Дикий


Сообщения: 543
Благодарности: 4

Профиль | Отправить PM | Цитировать


amel27
Хорошо, про NTFS сжатие я и не подумал :-)
Спасибо большое, за хорошую консультацию!

-------
Невероятное мы совершаем мгновенно, невозможное чуть дольше.


Отправлено: 04:10, 24-07-2007 | #9



Компьютерный форум OSzone.net » Сфера Microsoft » Программное обеспечение Windows » [решено] Как организовать архивацию данных?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход