Автоматическое сохранение базы штатными средствами

30.12.16

База данных - Архивирование (backup)

Всё началось с того, что я лентяй. Когда пришел на работу в первый раз, мне сообщили, что уже лет 10 делают сохранение  базы каждый день в конце рабочего дня. Из этого вытекает, что  если кто-то решит подтянуть свои хвосты, то мне приходится сидеть на работе тоже. Честно, мягко говоря, меня это не особо радовало... Порывшись на просторах инета, было принято решение сделать "автосохранялку". Как уже говорилось, "Я ЛЕНИВЫЙ", поэтому мне было попросту лень ставить всякие утилиты и программки, реализовал все штатными средствами.

Скачать исходный код

Наименование Файл Версия Размер
файлы
.zip 1,70Kb
5
.zip 1,70Kb 5 Скачать

Прилагаю два файла

1. save.cmd

а) завершает все процессы 1С у всех пользователей терминала, запускает конфигуратор 1С 7.7 в пакетном режиме с параметрами

б) определяет текущую дату

в) копирует сохраненный архив (Arh.zip) в нужную мне папку (в ней у меня хранятся все дампы), это D:\Arhiv\2016

г) перейменовывает файл архива с "Arh.zip" в  чтото вроде этого "2016-11-30-AS_2016.zip"

д) удаляет "Arh.zip" с текущей папки

Содержимое файла:

taskkill /im 1cv7.exe* /f
start /W /D "C:\Program Files\1Cv77\BIN\" 1cv7.exe config /D "D:\1s\2016" /NUser  /PPassword /@D:\Autosave\arc.prm

@echo off
:: Code by Herbert Kleebauer
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>d_t.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>d_t.com
echo LisqMz`wGH@wKuur`G@w?ogBgGG}G?j_egoNOG?w?`gBLksqgG`w?WgBgG>>d_t.com
echo G}G?R_MgoNMy?wSx@W?s?W?@zAB`LrFuBLyt~vuco{@LuKooD?BFHqrIcP>>d_t.com
echo _sdDxb1T??=?rILO_sdDqx1T??=?rILO_sdDnl1T??=?rILO_sdD`c1T??>>d_t.com
echo =?rILO_sdDgg1T??=?rILO_sdDll1T??=?rILO_sdDrr1T??=??IL?0xxx>>d_t.com

FOR /F "delims=" %%i IN ('d_t.com') DO %%i
del d_t.com

echo century: %_cy%
echo    year: %_yr%
echo   month: %_mo%
echo     day: %_da%
echo    hour: %_hh%
echo  minute: %_mm%
echo  second: %_ss%
echo     all: %_cy%%_yr%-%_mo%-%_da% %_hh%:%_mm%:%_ss%
echo.
echo         %DATE% %TIME%
copy D:\Autosave\arc.zip D:\Arhiv\2016\arc.zip
del D:\Autosave\arc.zip 
rename "D:\Arhiv\2016\arc.zip" %_cy%%_yr%-%_mo%-%_da%-AS_2016.zip

2. arc.prm - файл параметров конфигуратора в пакетном режиме. Там указано, что нужно сделать сохранение базы, сделать переиндексацию и закрыть конфигуратор, можно добавить любые пункты из меню "Тестирование и исправление БД". также в этом файле прописано в какую папку сохранится файл архива и как он будет называться (у меня это D:\Autosave\Arc.zip), собственно в этой же папке хранится и первый файл.

Содержимое файла:

; - Комментарий т.е. любой текст не обрабатывается программой 1С
;заглавные общие параметры
[General]
     ;Имя файла с отчетом
Output= D:\Autosave\Arc.txt
Quit=1                    ; Закрывать 1С после выполнения задания
CheckAndRepair=1          ; Выполнять тестирование и исправление БД
UnloadData=0             ; Делать выгрузку данных (НЕ автообмен, а первую выгрузку!!!)
SaveData= 1            ; Делать архив БД
AutoExchange=0         ; Делать автообмен

;параметры тестирования и восстановления
[CheckAndRepair]

Repair=0              ; соответствуют галочкам в диалоговом окне при выборе
PhysicalIntegrity=0   ; в конфигураторе "Тестирования и исправления БД
Reindex=1
Logicalintegrity=0
RecalcSecondaries=0
RecalcTotals=0
Pack=0
;SkipUnresolved=
;CreatForUnresolved=
;Reconstruct=

;параметры выгрузки данных
;[UnloadData]   ; Рекомендую не использовать

;UnloadToFile=
;IncludeUserDef=
;Password=

;параметры сохранения данных в архиве
[SaveData] ; Имя файла для сохранения архива БД
; Имя файла архива
SaveToFile= D:\Autosave\Arc.zip    
;FileList=                   ; Имя файла со списком файлов для архивации

;описание параметров для работы с РИБ
[AutoExchange]

SharedMode=1 ; Выполнять автообмен в случае, если в БД кто-то сидит
;ReceiveFrom=* ; В случае автообмена посредством e-mail - адрес отправителя
ReadFrom=* ; Оставить путь к файлу для загрузки по умолчанию. Иначе - вписать нужный путь
WriteTo=*  ; Аналогично для выгрузки
;SendTo=*

P.S. запускать первый файл желательно от имени администратора в нужное время. Можно кинуть в назначение заданий сервера.

Все замечания и предложения по функционалу приветствуются. 

См. также

Архивирование базы 7.7

Архивирование (backup) Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Программа, написанная на Delphi7 для автоматизации сохранения БД.

1 стартмани

02.01.2017    15388    12    mt111    21    

0

Простые вещи: Делаем архив базы 1С за 30 секунд

Архивирование (backup) Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Абонемент ($m)

Архив файловой базы 1С можно сделать за 30 секунд. Делаем предварительные настройки.

1 стартмани

09.12.2014    39003    12    denisk37    72    

27

Бэкапер-1С: резервные копии бухгалтерии (1С 7.7 - 8.3)

Архивирование (backup) Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Абонемент ($m)

Бэкапер-1С: версия 1.5.0. Появилась гибкая система удаления старых копий! А также: автоматический поиск баз, архивация документов, встроенный архиватор 7-Zip, целостность создаваемых копий, шифрование, отправка отчетов на почту и каталогизация. Ещё никогда резервное копирование не делалось так просто.

1 стартмани

16.05.2013    74457    638    alexey.karmanov    181    

84

Архивация баз средствами командной строки Windows и архиватора Izarc, также скрипт для Linux.

Архивирование (backup) Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Архивация баз данных 1С 7.7 (при небольшом редактировании и версий 1С 8.х) средствами командной строки и архиватора Izarc Архивация каталога базы данных при размещении на Linux (smb-сервере к примеру) средствами linux.

1 стартмани

11.05.2012    13951    16    slava81    5    

3

Архивация 1сv7

Архивирование (backup) OpenConf Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Обработка при помощи WinRar архивирует каталог с БД.

1 стартмани

06.04.2012    12849    34    l2d808    20    

5

Архивация списка баз 1С:Предприятие 7.7

Архивирование (backup) Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Быстрая архивация списка баз 1С:Предприятие 7.7 в файл реестра.

1 стартмани

19.02.2012    12615    26    alexkrv    4    

3

Простой архиватор базы 1С, с удалением старых архивов

Архивирование (backup) Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Россия Абонемент ($m)

Простой архиватор базы 1С, с удалением старых архивов (настраивается через батник).

1 стартмани

16.02.2012    15687    46    gortrex    4    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. MadDAD 152 15.12.16 16:45 Сейчас в теме
Есть нюанс. d_t.com который создается при выполнении скрипта является 16-разрядным приложением и не сможет работать на х64 ОС.
2. mt111 3 21.12.16 18:03 Сейчас в теме
(1) %date%тебе в помощь, возвращает тек.дату в cmd
4. MadDAD 152 22.12.16 08:28 Сейчас в теме
(2) Так мне и не надо, это у тебя же в батнике начиная отсюда ":: Code by Herbert Kleebauer" создается com-файл. Только работать будет не везде. Поэтому нужно в описании разработки предупредить что "не работает на X64"
3. 1qazxsw21QAZXSW2 4 21.12.16 18:24 Сейчас в теме
Перебори свою лень 1 раз и настрой все нормально
6. mt111 3 22.12.16 11:57 Сейчас в теме
(3) для нашего сервачка-старичка этого вполне хватает.
А вообще вариантов бекапов масса, и каждый выбирает для себя и под свои нужды, материал выставлен в ознакомительных целях, Архивирование проходит без проблем и на х32 и на х64, а уж что делать с архивом это уже личное дело каждого, как его назвать, куда его положить и что с ним делать дальше
7. v3rter 22.12.16 12:48 Сейчас в теме
(6)
Согласен. По нынешним меркам объемы баз 7.7 настолько невелики, что на выбор архиватора и способа архивации стоит тратить время только при количестве баз от 10.

Думаю, вместо
start /W /D "C:\Program Files\1Cv77\BIN\" 1cv7.exe
лучше будет
start /W /D "" "C:\Program Files\1Cv77\BIN\1cv7.exe"
или
start /W /D "" "%programfiles%\1Cv77\BIN\1cv7.exe"

В своей практике в начале батника обычно прописываю все пути и некоторые параметры в переменные через SET. Это чтобы не искать их потом по всему коду и не тратить время на "найти-заменить".
8. mt111 3 23.12.16 09:21 Сейчас в теме
(7) по поводу переменных - дельное предложение, весьма упростит некоторые моменты
5. v3rter 22.12.16 09:51 Сейчас в теме
Нагуглил другой способ извлечения даты-времени http://stackoverflow.com/questions/203090/how-to-get-current-datetime-on-windows-command-line-in-a-suitable-format-for-us
и переделал

for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldt=%ldt:~0,14%
echo Local date is [%ldt%]

На выходе будет Local date is [20161222094850]

Переделать исходный скрипт можно, например, так:
rename "D:\Arhiv\2016\arc.zip" %ldt%-AS.zip

Для 1C 7.7 эффективнее будут разностные архивы 7zip, так как 80% архива - пакеты регламентной отчетности прошлых годов.
http://dkrichun.blogspot.ru/2012/07/7-zip.html
Один раз в неделю (в выходные) создавать полный архив каталога:
7z a "D:\Backup\full.7z" -r "C:\Data"

Ежедневно (по рабочим дням) создавать разностный архив:
7z u "D:\Backup\full.7z" -r -u- -up0q3x2z0!"D:\Backup\diff-%date%.7z" "C:\Data"

При этом:
Полный архив изменяться не будет, благодаря опции -u-.
Если файл попал в полный архив, но к моменту создания разностного архива был удален из исходного каталога, он будет удален при распаковке разностного архива поверх полного, за это отвечает опция q3.
Если файл в исходном каталоге старее чем файл в полном архиве (не важно, по какой причине), он будет добавлен в разностный архив и при его распаковке поверх полного архива заменит более новый, за это отвечает опция x2.

7z a -mx0 "C:\Backup\dimas\docs.7z" -r "D:\Users\dimas\Documents"
7z a -mx0 "C:\Backup\dimas\pics.7z" -r "D:\Users\dimas\Pictures"
7z a -mx0 "D:\Backup\dimas\gdisk.7z" -r "C:\Users\dimas\Google Диск"

7z u -mx0 "C:\Backup\dimas\docs.7z" -r -u- -up0q3x2z0!"C:\Backup\dimas\docs-%date%.7z" "D:\Users\dimas\Documents"
7z u -mx0 "C:\Backup\dimas\pics.7z" -r -u- -up0q3x2z0!"C:\Backup\dimas\pics-%date%.7z" "D:\Users\dimas\Pictures"
7z u -mx0 "D:\Backup\dimas\gdisk.7z" -r -u- -up0q3x2z0!"D:\Backup\dimas\gdisk-%date%.7z" "C:\Users\dimas\Google Диск"
Показать
Кстати, тот же случай, когда вместо %date% удобнее будет использовать %ldt% из примера выше.

Можно еще попробовать Cobian Backup. По личному опыту для кобиана на диске с базами надо включать теневое копирование (защиту системы).
9. v3rter 27.12.16 11:54 Сейчас в теме
Собственно, сейчас у большинства архиваторов есть ключи типа "добавить дату к имени архива", но было интересно решить задачу получения даты-времени средствами bat-языка.
Оставьте свое сообщение