Как настроить автоматическую архивацию   

Часто в форумах можно слышать такой вопрос: «Помогите, натворил что-то с базой, что делать?», и в ответ на вопрос: «А резервную копию делал?» отвечают: «Нет».

Я не буду рассуждать на тему, что надо всегда перед внесением изменений в базу (любых) обязательно делать резервную копию, зачем и для кого это нужно и т.д. Очевидна и необходимость выполнения текущего резервного копирования (а не только тогда, когда что-то меняется). Иногда программист может не суметь объяснить руководителю необходимость ежедневного (а то и по нескольку раз в день) резервного копирования, зато руководитель всегда сможет обяснить, что во всех бедах и сбоях виноват программист. «До тебя все спокойно было, раз при тебе сломалось - ты и виноват», - это стандартная фраза в таких случаях.

Случиться может разное. Как варианты:

  • Выходит из строя винчестер с базой данных.
  • База данных повреждается.
  • В базу данных пользователем заносится некорректная запись или выполняется какая-то обработка, приводящая к серьезным изменениям базы данных.
  • Загрузка неудачной конфигурации, приводящей к порче данных, либо к другим неприятным последствиям.
  • Необходимость отследить, когда были внесены изменения в базу данных. Их может не быть в логе (или лог может быть удален).
  • Загрузка неправильных данных при обмене с распределенными базами.
  • И великое множество других причин, приводить которые здесь не имеет смысла ввиду их большого количества.

В любом случае - участвовать в восстановлении будет программист. А значит ему, или системному администратору (часто это одно и то же лицо - его еще называют «компьютерщик») необходимо настроить автоматическую архвиацию базы данных хотя бы раз в сутки.

Могу порекомендовать воспользоваться способом с использованием команды «AT» и внешнего архиватора. Я использую WinRar 2.71 или выше.

Принцип работы - очень простой. С помощью команды «AT», которая предназначена для запуска команд по расписанию, ставим, скажем, на час ночи ежедневно выполнять командный файл, в котором запишем все необходимые процедуры.

Синтаксис команды «AT»:

Команда «AT» предназначена для запуска команд и программ в указанное время по определенным дням. Для использования команды «AT» необходимо, чтобы была запущена служба расписаний.
AT [имя_компьютера] [ [код] [/DELETE] | /DELETE [/YES]]
AT [имя_компьютера] время [/INTERACTIVE]
[ /EVERY:день[,...] | /NEXT:день[,...]] "команда"
имя_компьютера - Имя удаленного компьютера. Если этот параметр опущен, используется локальный компьютер.
код - Порядковый номер запланированной задачи.
/delete - Отмена запланированной задачи. Если код задачи опущен, отменяются все задачи, запланированные для указанного компьютера.
/yes - Отмена запроса на подтверждение при отмене всех запланированных задач.
время - Время запуска команды.
/interactive - Разрешение взаимодействия задачи с пользователем, работающим на компьютере во время запуска задачи.
/every:день[,...] - Запуск задачи осуществляется по указанным дням недели или месяца. Если дата опущена, используется текущий день месяца.
/next:день[,...] - Задача будет запущена в следующий указанный день недели (например в следующий четверг). Если дата опущена, используется текущий день месяца.
"команда" - Команда Windows NT или имя пакетного файла.

Предположим, у нас есть база, которая имеет путь D:BasesMain, сам Winrar находится у нас в E:Arh, а архив мы хотим поместить сюда: E:ArhMain. Вот пример коммандного файла для такого случая (для удобства рассмотрения строки файла подсвечены):

@Echo Off
Тут все понятно - просто отключаю вывод сообщений на консоль.
tskill *1c* /a /v
У меня работает служба терминалов. И иногда пользователи уходят домой, оставляя свои сеансы либо открытыми, либо отключенными. Для того, чтобы закрыть эти сеансы (точнее не сеансы - а саму программу 1С-Предприятие), используется команда tskill. Синтаксис ее такой (наберите tskill /? для того, чтобы прочитать справку):
TSKILL processid | processname [/SERVER:servername] [/ID:sessionid | /A] [/V]
processid - ID прекращаемого процесса.
processname - Имя прекращаемого процесса.
/SERVER:servername - Сервер для этого процесса (по умолчанию текущий). Должны быть указаны /ID или /A при использовании имени процесса и параметра /SERVER.
/ID:sessionid - Прекратить процесс, выполняемый в указанном сеансе.
/A - Прекратить процесс, выполняемый во ВСЕХ (ALL) сеансах.
/V - Отображает информацию о выполненных действиях.
Ладно, идем дальше.
e:
cdArh
Тут все понятно - переключение на диск E и переход в каталог, где лежит архиватор.
winrar a -dh -ep1 -ibck -m3 -md1024 -s -r -y -x@not.lst -agYYYY-MM-DD-HHMMSS E:ArhMainMain D:BasesMain*.*
Рассмотрим эту строчку подробно:
a - это собственно и есть команда архивации.
-dh - совместное открытие общих файлов.
-ep1 - исключить базовую папку из пути.
-ibck - запустить как фоновый процесс в системном трее.
-m3 - выбрать метод сжатия. 1-минимальный, 5-максимальный. В моем случае 3-средний.
-md1024 - выбрать размер словаря 1024 килобайт.
-s - создать непрерывный архив.
-r - обойти рекурсивно вложенные папки.
-y - отвечать «Да» на все вопросы (ну, типа: «За пивом сбегать?»).
-x@not.lst - не обрабатывать файлы, указанные в файле-списке. Файл-список должен находится в том же каталоге, что и архиватор. В моем случае имя файла списка not.lst. В моем случае там написано: *.cdx *.lck *.tmp.
-agYYYY-MM-DD-HHMMSS - добавить к имени архива текущую дату и время. Строка YYYY-MM-DD-HHMMSS выбирает формат.
E:ArhMainMain - Путь к архивному файлу и имя файла.
D:BasesMain*.* - Путь к архивируемым файлам.

В результате выполнения мы получим архивный файл такого типа Main2002-03-28-010000.rar

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

 

 

Перепечатка, воспроизведение в любой форме, распространение, в том числе в переводе, любых материалов с сайта www.softpoint.ru возможны только с письменного разрешения компании "СофтПоинт". Это правило действует для всех без исключения случаев, кроме тех, когда в материале прямо указано разрешение на копирование (основание: Закон Российской Федерации "Об авторском праве и смежных правах").