Пакетный файл backup.bat для автоматического архивирования файловых баз 8.2 с помощью назначенных заданий Windows .


Архивирование баз  для  чайников и блондинок с помощью .bat файла.  Из массы имеющихся в инете разработок по этому вопросу отобрала и  составила по максимуму простой вариант.  Сама отношусь к категории блондинок, поэтому публикую для людей без опыта написания пакетных файлов.

Текст пакетного файла:

rem «путь к файлу архива базы»

SET PBACKUP=D:ackup1Cv8

rem «путь к базе»

SET SOURC=D:1Cdataasa

rem «пользователь»

SET USER=admin

rem «пароль»

SET PASSVD=123

 

tskill *1cv8* /a /v

if exist %PBACKUP%.dt copy %PBACKUP%.dt %PBACKUP%_old.dt

«C:Program Files (x86)1cv82common1cestart.exe» config /f %SOURC% /N %USER% /P %PASSVD% /DumpIB %PBACKUP%.dt

if %date:~0,2%%date:~3,2% == 0101 copy %PBACKUP%.dt %PBACKUP%%date:~0,2%%date:~3,2%%date:~6,4%.dt

if %date:~0,2%%date:~3,2% == 0107 copy %PBACKUP%.dt %PBACKUP%%date:~0,2%%date:~3,2%%date:~6,4%.dt

 

Для создания архива файловой базы 8.2 достаточно в принципе прописать одну строчку в пакетном файле:

«C:Program Files (x86)1cv82common1cestart.exe» config /f %SOURC% /N %USER% /P %PASSVD% /DumpIB %DIRNAME%\%FILENAME%.dt

Для базы клиент-серверной  вместо  ключа  /f  используем  ключ  /s

Такая строка открывает базу в режиме конфигуратор под определенным пользователем и создает архивную копию в указанный каталог. Использую для определения параметров запуска и путей переменные среды, которые определяются вначале пакетного файла. Но можно указать  конкретные значения параметров сразу в этой конструкции и запускать .bat файл с одной строкой. Но при этом есть угроза затереть создаваемый перезаписываемый архив при любом сбое.

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

Есть две особенности при задании переменных среды:

1.Пакетные файлы не дружат с кириллицей. Пути , пользователь и пароль должны быть прописаны с использованием только английского шрифта и цифр.

2.Между именем переменной среды, знаком равенства  и значением переменной не должно быть пробела: PBACKUP=D:ackup1Cv8

Строка  tskill *1cv8* /a /v  

—  очистка зависших терминальных сессий

Остальные три строки команд предназначены для резервирования архивных копий.

if exist %PBACKUP%.dt copy %PBACKUP%.dt  %PBACKUP%_old.dt

– копирует файл с именем 1Cv8.dt в файл с именем 1Cv8_old.dt  То есть, сохраняет(перезаписывает) предыдущий архив перед созданием нового.

if %date:~0,2%%date:~3,2% == 0101 copy %PBACKUP%.dt %PBACKUP%%date:~0,2%%date:~3,2%%date:~6,4%.dt

 — Если текущая дата равна дате начала года копирует созданный архив в файл с датой в имени файла , например 1Cv801012012.dt , чтобы он хранился в архивной папке и не затирался.

Аналогично конструкция

if %date:~0,2%%date:~3,2% == 0107 copy %PBACKUP%.dt %PBACKUP%%date:~0,2%%date:~3,2%%date:~6,4%.dt

— резервирует копию базы за дату 01.07. каждого года.

При использовании пакетного файла из публикации достаточно в переменных среды указать конкретные данные по вашей базе и каталогу сохранения архива и создать для него удобное для вашего сервера назначенное задание Windows.

13 Comments

  1. olegol
    1.Пакетные файлы не дружат с кириллицей.

    Пакетные файлы хорошо дружат с кириллицей. Только кодировку надо выбрать не 1251, а 866

    Reply
  2. AlenaSa

    (1) спасибо. однако дружба при определенных условиях 🙂

    тем более , что эти условия для меня , например, непонятны:

    я не могу выбрать при сохранении файла кодировку 866

    Зато могу выбрать ANSI, UTF-8, Юникод. 🙂 Какая из них 866, какая есть непременным условием дружбы?

    Reply
  3. andrewks

    (2)

    я не могу выбрать при сохранении файла кодировку 866

    зачастую её ещё называют OEM.

    а вообще — AkelPad Вам в помощь http://akelpad.sourceforge.net

    Reply
  4. VasMart

    А я бы порекомендовал ознакомиться с http://www.cobiansoft.com/index.htm

    Присутствует главная плюшка — теневое копирование + отсылка отчетов на почту и бесплатно.

    Reply
  5. vadimlp77

    Что делать с тонкими клиентами ?

    Reply
  6. denisk37

    (5) vadimlp77, добивать их тонких, клиентов!

    автору спасибо, взял на вооружение строчку:

    tskill *1cv8* /a /v

    WinXP, Win 7 заработала сходу!

    Reply
  7. AlenaSa

    Спасибо за оценку!

    Вопрос по тонким клиентам не поняла.

    Если ответ «добивать» подходит, то + 1 🙂

    Reply
  8. ssn5810

    все кто не получают зарплату в мелкософт идиоты и блондинки !!!!

    Reply
  9. scru22

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

    Reply
  10. Alex10166

    Друзья, подскажите по теме статьи:

    Пакетная обработка выполняется только если нет других интерактивных сеансов?

    У меня работает только если к базе ни один сеанс в этот момент времени не подключен. Если запущено клиентское приложение на этой базе, то пакетная обработка не срабатывает.

    Как это устроено?

    Reply
  11. AlenaSa

    (10) Строка tskill *1cv8* /a /v должна закрывать все открытые сеансы, но предполагаю что не срабатывает при открытых сеансах на тонких и WEb клиентах . Однако это с моей стороны лишь такое себе предположение. Ждите , возможно, что более грамотные разработчики ответят обоснованно и убежденно 🙂

    Reply
  12. Alex10166

    (11)

    tskill *1cv8* /a /v

    у меня это работает почему-то

    Reply
  13. M_Volkov

    (12)

    Строка tskill *1cv8* /a /v — очистка зависших терминальных сессий

    Только терминальных? Другие видимо не используются. Так вот почему здесь отсутствует команды блокировки и раз блокировки базы (/CЗавершитьРаботуПользователей и /CРазрешитьРаботуПользователей)!?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *