Для автоматизации резервного копирования данных архиватором 7-Zip предлагается использовать сценарий VBScript. Способ подходит для архивирования пользовательских данных небольшого и среднего объема — каталога с рабочими документами, профиля браузера или почтового клиента.

Особенности предлагаемого решения

  1. Простота восстановления данных из архива, в том числе для неопытных пользователей. Достаточно найти подходящий архив (дата создания отображается прямо в имени файла), открыть его двойным щелчком и перетащить нужный файл на новое место.
  2. Простота установки и использования — все настройки делаются в самом скрипте, любым текстовым редактором. Настроек немного, рядом есть пояснения и примеры.
  3. Данные хранятся в сжатом виде и занимают меньше места, чем архивы, созданные встроенной в Windows утилитой ntbackup.
  4. Устаревшие архивы удаляются автоматически, хранится не более заданного числа архивов, что уменьшает опасность переполнения диска.
  5. Бесплатность и легальность — используется архиватор 7-Zip, бесплатный в том числе и для коммерческого использования.

Для удобства настройки резервного копирования, а также для простоты восстановления принято правило — каждому ресурсу (исходному каталогу) соответствует один каталог с архивами и одно задание архивации. Скрипт располагается в том же каталоге, где и создаваемые им архивы. Удобство состоит в том, что для перенастройки (перемещения на другой сервер, удаления) одного задания архивации достаточно изменить (переместить, удалить) только один соответствующий ему скрипт и содержащий его каталог.

Зачем нужна история архивов за несколько дней

Простого «зеркалирования» данных не всегда достаточно. Ошибка в резервируемых данных может быть обнаружена не сразу, а через несколько дней, когда «вчерашняя» копия уже бесполезна. Вывод — надо делать и хранить ежедневные архивы. В то же время, необходимо периодически удалять совсем старые архивы, иначе они заполнят весь диск и свободного места не останется.

После создания нового архива предлагаемый скрипт отбирает заданное количество наиболее свежих архивов, а остальные удаляет. Количество архивов в истории задается в самом скрипте:

Const HISTORY = 5  'количество архивов в истории

Загрузка и установка скрипта

Скрипт для ежедневного резервного копирования каталога с историей за несколько дней, формат VBS, упакован ZIP: backup_history.zip

Установка:

  1. Выбрать место для хранения резервных копий, создать отдельный каталог и поместить туда скрипт.
  2. Установить архиватор 7-Zip на том компьютере, где будет выполняться скрипт. Если это невозможно или нежелательно, взять откуда-нибудь файл 7z.exe и поместить рядом со скриптом.
  3. Открыть скрипт в текстовом редакторе, проверить настройки (см. далее), при необходимости изменить.
  4. Запустить скрипт, рядом будет создан архив. Если нет — проверить настройки еще раз.
  5. Добавить ежедневный запуск скрипта — по расписанию (см. «Назначенные задания») или при входе в систему, через ярлык в папке «Автозагрузка».

Настройка скрипта

Настройки хранятся в самом скрипте, в виде констант. Обязательно нужно указать архивируемый ресурс — значение константы SRC. В качестве подсказки предложено несколько вариантов, только один из них нужно оставить «активным», а все остальные — закомментировать, т.е. поставить кавычку в начале строки:

'что копировать?
Const SRC = """D:\Work\*"""  'каталог и маска для резервирования
'Const SRC = """%AppData%\Opera\Opera\*"""  'допускаются переменные окружения
'Const SRC = "@files.txt"  'взять список каталогов из текстового файла

Скрипт не проверяет наличие архивируемого ресурса или файла со списком каталогов, поэтому если источник указан неверно, архив все равно будет создан, хотя и будет выдано предупреждение.

Желательно указать подходящий префикс имени архива (условное название архивируемого ресурса) так, чтобы было понятно его назначение:

'куда копировать?
Const PREFIX = "backup"  'префикс имени архива, условное название архивируемого ресурса

Можно отключить вывод сообщений:

'выводить сообщения?
'Const NOTIFY = True  'True = выдавать сообщения
Const NOTIFY = False  'False = без сообщений

Объединение нескольких каталогов в один архив

Для помещения в один архив данных из нескольких каталогов необходимо их список поместить в текстовый файл files.txt рядом со скриптом, а в настройках скрипта указать имя этого файла через знак @ (это функция самого архиватора 7-Zip):

Const SRC = "@files.txt"  'взять список каталогов из текстового файла

Например, для копирования настроек программ Opera, Mozilla Thunderbird, Mozilla Firefox и GnuPG следует составить примерно такой список:

"C:\Documents and Settings\pavel\Application Data\Opera"
"C:\Documents and Settings\pavel\Application Data\Thunderbird"
"C:\Documents and Settings\pavel\Application Data\Mozilla\Firefox"
"C:\Documents and Settings\pavel\Application Data\gnupg"

К сожалению, 7-Zip не понимает переменных окружения в списке и написать %UserProfile% вместо C:\Documents and Settings\pavel не получится.

Исключение некоторых подкаталогов

Рядом со скриптом находится текстовый файл exclude.txt, в котором можно указать подкаталоги, которые не должны попасть в архив, по одному в каждой строке. Этот файл обрабатывается архиватором 7-Zip благодаря опции командной строки -x@exclude.txt.

Например, при архивации профиля Mozilla Thunderbird можно исключить почтовую папку «Temp» (путь указан относительно корня профиля):

"Mail\Local Folders\Temp"

Отладка скрипта

Чтобы не смущать пользователя непонятными надписями, в скрипте отключен вывод сообщений об ошибках во время выполнения. Но если что-то не работает, на время отладки эти сообщения лучше включить:

'не завершать скрипт аварийно
'On Error Resume Next