Архивация баз данных 1С в среде Windows

Версия для печатиВерсия для печати

Backup 1C

Как говорится, сисадмины делятся на две категории: те - кто делает бэкапы, и те - кто будет делать бэкапы.

Будем использовать вездесущий и древний, как сам мир архиватор winrar. Кроме всех своих обширных возможностей архиватор умеет работать в консольном режиме, то есть в режиме командной строки. Соответственно, дабы выполнить операцию архивации базы данных 1С, можно написать пакетный bat-файл, запихнуть его в планировщик заданий windows и установить желаемое расписание.

Для примера, все базы данных находятся в директории C:\db, а архивные копии мы будем держать на диске D в директории :a", путь такой D:\a

Справку по командной строке можете получить в cmd таким образом:

rar.exe /?

Пишем в блокноте сам пакетник, расшифровка команд ниже

@echo off
start /B c:\progra~1\winrar.exe -a u -ag -y -r -ibck d:\a\0001_14.rar c:\db\77\0001_14
exit

Сохраним файл с именем базы данных "0001_14.txt", данный файл не при каких обстоятельствах не будет выполнен, так как он является обычным текстовым файлом. Для того, чтобы ОС могла выполнять строки команд в этом файле он должен быть нами переименован в файл с расширением ".bat".

@echo off - команда запрещает вывод исполняемых строк на экран
start /B запускает приложение, в данном случае winrar, без создания нового окна (сайлент режим)
c:\progra~1\winrar.exe полный путь к программе winrar. Тильда обязательна, так как 8.3 никто в командной строке не отменял. Если укажете полный путь с пробелами, программа просто не будет найдена.

С ключами winrar все просто

-a добавить файлы в архив (ибо....)
u именно без тире, обновить файлы в архиве
-ag добавить к имени файла архива дату и время. Удобство очевидно. В данном случае будет добавлена информация год, месяц, число, час, минута, секунда создания архива. С вариантами можно играться.
-y Отвечать "Да" на все вопросы. Девушкам не нравится этот префикс.
-r Соответственно, рекурсивно обходить все подкаталоги в базе, если таковые имеются (решайте сами)
-ibck Ключ архиватора, сворачивающий процесс в трей, дабы не мозолил глаза

d:\a\0001_14.rar директория и имя архива, который будет создан в результате наших действий. Не забудте, что к концу имени архива прибавится дата и время.
c:\db\77\0001_14 Собственно директория базы данных, которую требуется упаковать и сохранить

Команда exit завершает работу пакетного файла по выполнению всех операций.

Ок, получилось целых три строчки. Для удобства и контроля, можно создать по одному пакетному файлу для каждой базы данных, и, соответсвенно, назначить для них отдельные задания на выполнение в свое время. Как добавить задание в среде ОС Windows, объяснять не буду. Копайте сами.

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

*

ОК. Надеюсь. все вышло и работает. Поехали дальше. Жесткий диск на компьютере не резиновый и с течением времени место на нем просто закончится и писать архивы будет некуда.

Логика простая, нужно удалять архивные файлы, старше 30 дней. Это к примеру, интервал на любителя. Для автоматизации процесса снова воспользуемся пакетными файлами.

Пример такой:
goto start
_____________________________________________
Ищем rar-файлы старше 30 дней и удаляем их
_____________________________________________

:start
Forfiles -p d:\a -m *.rar -d 30 -c "cmd /c del /q @path"
exit

goto start - команда отправляет для выполнения программы после якоря "start", между goto и якорем может быть заключен комментарий к файлу (хороший тон для программиста), который программа не будет читать и выводить на экран
:start - сам якорь
Программа Forfiles имеет много ключей, как правило, хэлп к программе выглядит так

Forfiles /?

-p Путь, с которого начинается поиск, если его нет, то по умолчанию, поиск начинается из текущего каталога, где лежит батник.
-m Маска для поиска файлов. Мы будем искать только файлы, с расширением *.rar.
-d 30 выбор файлов, у которых дата изменения меньше или равна указанному количеству дней. В нашем случае это 30 дней.
-c Команда, которая будет выполнена forfiles во всех подпапках
cmd /c Выполнение указанной команды (строки) с последующим завершением
cmd /q Отключение режима вывода на экран команд
@path определить путь к файлами
exit - Соответсвенно завершение операции

Гуд. Таким образом, назначаем выполнение задания ежедневно (по вкусу) после завершения выполнения всех заданий архивации. Желаете, значит делаете до выполнения архивации. Все зависит от объема конкретного HDD и соотношения: количество баз данных/размер готовых (aka) хранимых архивов.

*

Хранить все яйца в одной корзине - плохой тон. Будем сливать свежесозданные архивы на другой сервер.

Не поверите, снова пакетный файл. Имя придумайте сами.

@echo off
start /B xcopy d:\a\*.rar \\ip-адрес_сервера\d$\a /D /H /Y
exit

Задавать желательно ip-адрес удаленного компьютера, надеюсь, он у сервера статичный, а не его сетевое имя.

Ключи xcopy

/D копирует только новые файлы, которых нет на удаленке.
/H копирует скрытые и системные файлы (для некоторых ситуаций)
/Y Подавляет запросы на перезапись (по желанию).

Логично выполнять операцию после завершения всех заданий архивации и до момента удаления старых архивов.