Как то когда в очередной раз что-то произошло - я озаботился усовершенствованием системы резервного копирования. Хотелось сделать так чтобы все работало на полном автомате: архивировалось, удалялись старые копии архивов (диски не резиновые), чтобы по почте присылались уведомления, когда что-то пошло не так. Так же не хотелось использовать что-то нелицензионное и именно по-этому отпал rar.
Имеющаяся у меня система несколько шире описанной. Лично я стараюсь чтобы работало так: все живет на рабочих серверах (базы), копия делается или на выделенный сервер или перекрестно (с одного сервера на другой) и выжимка (в данном случае полные архивы) сбрасывается на внешний диск. Информация хранится в 3 (!трех) независимых местах и шанс потери невелик. Я бы еще раскидал это все территориально, но … Вот такая вот паранойя J
Данная система предназначена для ежедневного резервного копирования. Подходит для фирм имеющих выделенный сервер, который не выключается на ночь. Может использоваться для 1С 7.7 файловый вариант, различных клиент-банков, относительно небольших файлопомоек и чего-то похожего. Для простоты будет рассматриваться архивация баз 1c, но под базой можно понимать каталог с любым содержимым. Все рассчитано на несколько баз. Если у вас одна база, то не стоит и огород городить – все можно делать руками.
Используемые понятия:
Путь к базе – место где она расположена относительно компьютера на котором запускается резервное копирование (e:\1c\db1\ или \\server1\1c\зуп\)
Имя базы (префикс) – содержательное имя базы, которое будет использовано в системе резервного копирования (7-buh-firma1, zik-firma2 и т.д.).
Каталог резервного копирования – каталог в который будут складываться все архивы.
В каталоге архивов создаются подкаталоги с именами - префиксами баз. В каждом подкаталоге должен присутствовать файл Префикс.flg – флаг наличия каталога и его готовности к копировании. Файл пустой – нулевой длины. Обязательно каталог резервного копирования должен быть на другом физическом диске сервера, еще лучше – на другом сервере, иначе теряется 90% смысла резервного копирования!!!
Технология работы:
Периодически (у меня раз в неделю в ночь с субботы на воскресенье) делается полный архив. Во все остальные дни делается разностный архив. Если изменений не много, то полные архивы можно делать реже. Если по какой-то причине полный архив вовремя не был создан, то разностные будут делаться относительно предыдущего.
При запуске резервного копирования, создается лог работы и этот лог пересылается администратору. В теме письма присутствует OK или ERROR, т.е. анализировать можно только письма с ошибками, все остальные существуют чисто для информации (у меня скидываются в отдельную папку и помечаются как прочитанные – соответственно не привлекают внимания, но всегда можно посмотреть, что там и как произошло). Программка отправки почты простенькая и если связи нет, то и почта не дойдет, повторная отправка не предусмотрена, но сам лог все равно сохранится. Настройки отправки почты в основном скрипте – надо поправить ручками
Файлы системы хранятся в отдельном каталоге (мне кажется, что так удобнее). В нем присутствует подкаталог Daily.log куда складываются ежедневные логи для каждой базы. Имя логфайла состоит из префикса архива и даты, т.е. если архивация запускается в течении суток несколько раз (например при отладке), то лог будет дописываться.
Пример:
\\server1\1c\база1\ - путь к базе
7-BUH – префикс базы(какое-то удобное и понятное обозначение)
\\server2\backup\ - каталог для архивов
\\server2\backup\7-BUH\ - каталог, в который складываются архивы базы. В данном каталоге должен присутствовать файл 7-buh.flg
Скрипт считает количество полных архивов и слишком старые удаляет вместе со всем комплектом соответствующих разностных.
Я еще копирую полные архивы в специальный каталог (внешний диск), который чищу уже руками, в нем хранится архив за неопределенно долгое время.
Состав системы.
Файлы системы резервного копирования:
backup_f.vbs - скрипт, который осуществляет запуск архиватора.
rc-full.cmd - командный файл полного резервирования
rc-diff.cmd - командный файл разностного резервирования
exclude-1c.txt – файл исключений
Необходимые файлы из дистрибутива 7zip:
7-zip.dll
7z.dll
7z.exe
Программка, отправляющая протокол на почту админу:
blat.dll
blat.exe
blat.lib
Пример командной строки из rc-diff.cmd :
backup_f.vbs diff 7-BUH 6 \\server\1c\base1\ e:\backup\1c\ exclude-1c.txt
возможен последовательный запуск заданий (см выше) либо параллельный:
start /low backup_f.vbs full 7-BUH 6 \\server\1c\base1\ e:\backup\1c\ exclude-1c.txt
1. Вид архивации – full или diff, т.е. полная или разностная
2. Префикс архива
3. Количество архивов - количество полных архивов
4. Путь к базе
5. Путь к каталогу для архивов
6. Файл исключений – файлы не включаемые в архив.
PS Скрипт найден на просторах интернета, автор указан в начале в комментариях.
Программа отправки почты найдена там же, авторов можно узнать, запустив ее без параметров.
7zip – известный архиватор.
Все ПО свободное.
PPS Естественно предполагается что вы обладаете минимальной квалификацией и не будете сразу все прописывать на реальных базах. Это не на 100% готовая система, а «рыба» для индивидуальной настройки.