дата последнего изменения: 28.08.2009
метки: резервное копирование, VBScript, Windows
Необходимо организовать ежедневное резервное копирование большого объема данных. При этом должна быть возможность восстановить данные или отдельный файл по состоянию на любую дату за определенный срок. Также необходимо обеспечить ежемесячное архивирование данных на DVD для длительного хранения.
Будем считать, что ленточного накопителя нет, и его покупка невозможна из-за ограниченного бюджета. Для хранения резервных копий будет использоваться отдельный каталог на файловом сервере. Для надежности можно этот каталог каждую ночь зеркалировать на другой сервер или (в небольших организациях) даже на рабочий компьютер администратора.
Из-за большого объема данных создание полного архива каждый день нежелательно. Полную резервную копию имеет смысл делать 1 раз в неделю, в выходные, когда сервер и сеть менее всего загружены. В остальные дни достаточно копировать только файлы, измененные со времени создания полной копии.
В известном бесплатном архиваторе 7-Zip есть малоизвестная возможность создания разностных архивов. Учитывая простоту извлечения данных из такого архива, решено использовать описанный далее способ резервного копирования.
Один раз в неделю (в выходные) создавать полный архив каталога:
7z a "D:\Backup\full.7z" -r "C:\Data"
Ежедневно (по рабочим дням) создавать разностный архив:
7z u "D:\Backup\full.7z" -r -u- -up0q3x2z0!"D:\Backup\diff-DD.MM.YY.7z" "C:\Data"
При этом:
-u-;q3;x2.Для разовой упаковки данных достаточно указанных выше двух команд архиватора. Для организации непрерывного резервного копирования необходима автоматизация. Сценарий VBScript применяется для решения множества вспомогательных задач:
Скрипт для ежедневного разностного резервного копирования данных, формат VBS, упакован ZIP: backup_diff.zip
Установка:
7z.exe и поместить рядом со скриптом.full, рядом будет создан полный архив. Если нет — проверить настройки еще раз.diff, рядом будет создан разностный архив. Если нет — проверить настройки еще раз.full для создания полного архива, по рабочим дням ночью — с параметром diff для создания разностного архива.И полное, и разностное копирование делается одним сценарием. Так сделано для удобства настройки, да и отличий немного и дублировать команды нет смысла. Когда какой способ копирования — полный или разностный использовать — решается вне скрипта, скорее всего для этого назначается задание в планировщике.
Сценарию необходимо передать параметр командной строки, один из двух вариантов:
full — создание полного архиваdiff — создание разностного архиваЕсли параметр не указан, будет выдано сообщение с подсказкой. Заодно отображается копируемый каталог и файл журнала, где можно увидеть результаты и ошибки.
Предполагается, что копирование будет запускаться в нерабочее время через планировщик, без присмотра оператора. Поэтому сообщения об ошибках и отчет о результатах пишется в файл, который администратор сможет посмотреть на следующее утро. Формат файла — простой текст, по одному событию в каждой строке. В начале строки — дата и время, затем имя файла к которому относится сообщение, затем само сообщение. Для удобства просмотра ключевые слова выделены верхним регистром.
Пример:
22.08.2009 01:00:03 backup-22.08.2009-full.7z: Ok 22.08.2009 02:18:32 backup-01.08.2009-full.7z: устарел, должен быть УДАЛЕН 22.08.2009 02:18:32 backup-01.08.2009-04.08.2009.7z: устарел, должен быть УДАЛЕН 22.08.2009 02:18:32 backup-01.08.2009-05.08.2009.7z: устарел, должен быть УДАЛЕН 24.08.2009 01:00:02 backup-22.08.2009-24.08.2009.7z: Ok 24.08.2009 08:43:28 backup-22.08.2009-24.08.2009.7z: создан РАНЕЕ и не будет перезаписан
В архивах 7-Zip нет возможности добавить комментарий, поэтому необходимую информацию надо включать в имя архива. Предлагается такая схема:
ПРЕФИКС-ДД.ММ.ГГГГ-full.7z ПРЕФИКС-ДД.ММ.ГГГГ-ДД.ММ.ГГГГ.7z
ПРЕФИКС — условное обозначение архивируемого ресурса, например buhg, project, ivanov. Чтобы избежать путаницы, логично то же имя использовать и для названия каталога с архивами, и для именования сетевого ресурса, если данные доступны по сети, и для маркировки DVD, на котором будут храниться архивы.ДД.ММ.ГГГГ — дата создания архива. Для разностного архива указывается две даты — сначала дата соответствующего полного архива, затем дата создания разностного архива.full — специальная метка полных архивов, именно по ней скрипт отбирает файлы при создании разностных копий и удалении устаревших архивов.Принятая система именования архивов позволяет быстро находить необходимые для восстановления данных файлы. Порядок действий такой:
full, то достаточно только одного этого полного архива. Иначе нужно искать соответствующий полный архив, имя которого вычисляется из имени найденного разностного.Применяется для предупреждения полного заполнения диска, когда невозможно будет создавать новые архивы. Благодаря этому архивация может длительное время выполняться вообще без участия администратора. Хотя, конечно, проверять журнал следует ежедневно и опасность нехватки места для создания архива не исключается по другим причинам, например — при резком увеличении объема архивируемых ресурсов или более частом, чем обычно, их изменении.
В настройках задается максимальное количество полных архивов. После создания нового полного архива самый старый (по дате файла) полный архив будет удален. Вместе с ним будут удалены и все разностные архивы, созданные на его основе.
Const HISTORY = 3 'количество полных архивов в истории
Для длительного хранения целесообразно периодически (раз в месяц или раз в неделю) записывать архивы на DVD и переносить в надежное место за пределами офиса для длительного хранения.
Архивы, записываемые на DVD, следует разбивать на тома размером 4,7 * 109 / 10242 = 4480 Мб. В 7-Zip для этого служит опция командной строки:
-v4480m
При записи диска желательно использовать наряду с файловой системой UDF еще и ISO9660. Иначе данные будут недоступны в Windows XP, хотя для Windows 2003/Vista достаточно одной только файловой системы UDF. Кроме того, в ISO9660 есть трудности с поддержкой файлов более 4,2 Гб, поэтому имеет смысл разбивать архивы на тома по пол-диска DVD, т.е. 0,5 * 4480 = 2240 Мб. В скрипте это указывается в значении константы OPTIONS:
Const OPTIONS = "-r -mx5 -x@exclude.txt -v2240m" 'опции архиватора
При использовании материалов сайта не забудьте добавить ссылку на первоисточник!
Есть замечания, предложения или пожелания? → Сообщите автору!
Павел Железнов
ИТ-специалист
Метки:
1С:Предприятие DOS J2ME JavaScript Thunderbird VBScript WMI Web-программирование Windows восстановление достижения железо загрузка инвентаризация разное резервное копирование
Страницы: