Всем добрый день. Озадачился бэкапом контроллеров домена. Почитал и погуглил, скачал скриптик. Всё более менее просто. Исходная задача: делать systemstate бэкап на шести серверах и лить это всё на фтп через батник. Теория: Quote Ntbackup Архивация может выполняться из командной строки или пакетного файла с помощью команды ntbackup и различных параметров командной строки. Синтаксис ntbackup backup [systemstate] "@имя_файла_bks" /J {"имя_задания"} [/P {"имя_пула"}] [/G {"идентификатор_guid"}] [/T { "имя_ленты"}] [/N {"носитель"}] [/F {"имя_файла"}] [/D {"описание"}] [/DS {"имя_сервера"}] [/IS {"имя_сервера"}] [/A] [/V:{yes|no}] [/R:{yes|no}] [/L:{f|s|n}] [/M {тип_архива}] [/RS:{yes|no}] [/HC:{on|off}] [/SNAP:{on|off}] Параметры systemstate Указывает, что следует выполнить архивацию данных о состоянии системы. При выборе данного параметра будет установлен обычный или копирующий тип архивации. @имя_ bks_файла Указывает имя файла (с расширением bks) со списком файлов для архивации в данном задании архивации. Перед именем файла должен стоять символ @. Этот файл содержит сведения о файлах и папках, подлежащих архивации. Этот файл должен быть создан с помощью программы архивации с графическим интерфейсом. /J {"имя_задания"} Указывает имя задания, которое будет упоминаться в файле журнала. Обычно имя задания описывает файлы и папки, подлежащие архивации в данном задании архивации, а также содержит дату и время архивации. /P {"название_пула"} Указывает пул носителей, носитель из которого будет использован. Обычно это подпул пула носителей архивации, такой как 4-мм DDS. Если этот подпул был выбран, невозможно использовать параметры командной строки /A, /G, /F или /T. /G {"идентификатор_guid"} Добавляет или заменяет данные на ленте. Не следует использовать этот параметр совместно с параметром /P. /T {"имя_ленты"} Добавляет или заменяет данные на ленте. Не следует использовать этот параметр совместно с параметром /P. /N {"носитель"} Указывает новое имя ленты. Не следует использовать параметр /A совместно с этим параметром. /F {"имя_файла"} Путь и имя файла на логическом диске. Совместно с этим параметром не следует использовать следующие параметры: /P /G /T. /D {"описание"} Указывает метку для каждого архива. /DS {"имя_сервера"} Производит архивацию файла службы каталогов указанного сервера Microsoft Exchange. /IS {"имя_сервера"} Производит архивацию файла банка сообщений указанного сервера Microsoft Exchange. /A Производит архивацию с добавлением в архив. Совместно с этим параметром следует использовать параметр /G или /T. Не следует использовать этот параметр совместно с параметром /P. /V:{yes|no} Проверяет данные после архивации. /R:{yes|no} Ограничивает доступ к этой ленте одним владельцем или членами группы «Администраторы». /L:{f|s|n} Указывает тип файла журнала: f=полный, s=сокращенный, n=нет (файл журнала не создается). /M {тип_архива} Указывает тип архива. Этот параметр должен иметь одно из следующих значений: normal, copy, differential, incremental или daily. /RS:{yes|no} Производит архивацию перемещенных данных на съемных носителях. Параметр командной строки /RS не требуется для архивации локальной базы данных съемных носителей (эта база данных содержит заместители мест файлов удаленного хранилища). При архивации папки %systemroot% программа архивации автоматически архивирует и базу данных съемных носителей. /HC:{on|off} Использует при возможности аппаратное сжатие. /SNAP:{on|off} Указывает, является (on) или не является (off) архив снимком состояния тома. /M {тип_архива} Указывает тип архива. Этот параметр должен иметь одно из следующих значений: normal, copy, differential, incremental или daily. /? Отображает справку в командной строке. Замечания • Восстановление файлов из командной строки с помощью команды ntbackup невозможно. • Если следующие параметры командной строки не заданы, будут использованы соответствующие настройки программы архивации с графическим интерфейсом: /V /R /L /M /RS /HC. Например, если в диалоговом окне Параметры программы архивации включено сжатие при архивации, при отсутствии параметра /HC в командной строке данные будут сжиматься. Но если в командной строке задан параметр /HC:off, он заменяет значение параметра диалогового окна Параметры, и сжатие не используется. • Если на данном компьютере запущены службы мультимедиа Windows и требуется выполнить архивацию файлов этих служб, ознакомьтесь с разделом о выполнении архивации служб Windows Media электронной документации по службам Windows Media. Для архивации или восстановления файлов служб Windows Media следуйте инструкциям, приведенным в электронной документации по службам Windows Media. • Архивация данных о состоянии системы возможна только для локального компьютера. Нельзя архивировать данные о состоянии системы для удаленного компьютера. • Если управление носителями осуществляется службой «Съемные ЗУ» или для сохранения данных используется внешнее хранилище, следует регулярно архивировать файлы, находящиеся в следующих папках: системный_корневой_каталог\System32\Ntmsdata системный_корневой_каталог\System32\Remotestorage Это будет гарантировать возможность восстановления всех данных, сохраненных во внешнем хранилище и на съемном ЗУ. Решение: определимся с форматом названия бэкапа: Делаю так: bckp-[YYYYMMDD]-[SERVERID]-systemstate.bkf YYYYMMDD - год, месяц и число SERVERID - название сервера (или идентификатор) systemstate - вид бэкапа Подготовка: Выполнение date /T на двух различных серверах дало мне два разных результата: 19.11.2009 и Thu 11/19/2009 . Копаться в региональных настройках не буду, поэтому искомое YYYYMMDD получу следующим образом: Для случая с форматом 19.11.2009: Code set yyyy=%date:~-4% set mm=%date:~3,-5% set dd=%date:~0,-8% set fd=%date:~-4%%date:~3,-5%%date:~0,-8% где yyyy - год, mm - месяц, dd - день и fd = полная дата в нужном формате. Для второго случая Thu 11/19/2009 делаем так: Code set yyyy=%date:~-4% set mm=%date:~4,-8% set dd=%date:~7,-5% set fd=%date:~-4%%date:~4,-8%%date:~7,-5% В обоих случая echo %fd% даст нам дату в формате YYYYMMDD. Можно пойти другим путём и привести даты к единообразию по другому, но, в принципе, я им не интересовался. Далее сам скрипт бэкапа: Code @echo off
rem File : bckp-systemstate.bat rem Computer : dcont1 rem Use : systemstate backup and upload rem Date : 19.11.2009 rem Author : J.Richter rem Changes : None
REM ------------------- REM SET VARIABLES REM ------------------- set serverid=dcont1 set dstdir=d:\backupss set fd=%date:~-4%%date:~4,-8%%date:~7,-5%
REM ------------------- REM SYSTEM BACKUP START REM ------------------- с:\WINDOWS\system32\ntbackup.exe backup systemstate /v:yes /r:no /rs:no /hc:off /m normal /j "%serverid% system state backup" /l:f /f "%dstdir%\bckp-%fd%-%serverid%-systemstate.bkf"
REM ------------------- REM FTP UPLOADING REM ------------------- ftp -i -s:putonftp.ini 192.168.1.188 Итак, здесь меняется только переменные в разделе SET VARIABLES и адрес фтп-сервера в последней строчке. Чета я его не вынес в переменные, да бог с ним. Также потребуется файл putonftp.ini (смотри последнюю строчку). В этот файл будут писаться команды, которые выполняются при подключении к фтп-серверу: Code skbackup_systemstate skbackup_systemstate
bin cd SYSTEMSTATES lcd d:\backupss mput *.bkf bye здесь "skbackup_systemstate" и вторая строчка с "skbackup_systemstate" - это логин и пароль. Далее все стандартные команды для сервера фтп. Замечания. В качестве фтп-сервера под винды у меня стоит GuildFTPd. Файлики старше семи дней будем удалять скриптом. Допишу про скрипт по удалению файлов старше 7 дней Допишу про восстановление systemstate. Скрипт по удалению файлов старше 7 дней: http://rm-rf.ucoz.ru/publ....-1-0-26
|