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

30.12.16

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
файлы
.zip 1,70Kb
5
5 Скачать (1 SM) Купить за 1 850 руб.

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

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. запускать первый файл желательно от имени администратора в нужное время. Можно кинуть в назначение заданий сервера.

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

См. также

Архивирование (backup) Системный администратор Платформа 1С v7.7 Абонемент ($m)

Эти далекие 2000е... мы архивировали как могли. Пример командного файла для windows -- архивациия базы SQL 1С:Предприятие 7.7 средствами платформы.

1 стартмани

30.08.2024    290    0    kot1c    0    

0

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

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

1 стартмани

02.01.2017    15570    12    mt111    21    

0

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

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

1 стартмани

09.12.2014    39660    12    denisk37    72    

27

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

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

1 стартмани

16.05.2013    75124    638    alexey.karmanov    181    

84

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

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

1 стартмани

11.05.2012    14119    16    slava81    5    

3

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

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

1 стартмани

06.04.2012    12979    34    l2d808    20    

5

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

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

1 стартмани

19.02.2012    12728    26    alexkrv    4    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. MadDAD 136 15.12.16 16:45 Сейчас в теме
Есть нюанс. d_t.com который создается при выполнении скрипта является 16-разрядным приложением и не сможет работать на х64 ОС.
2. mt111 3 21.12.16 18:03 Сейчас в теме
(1) %date%тебе в помощь, возвращает тек.дату в cmd
4. MadDAD 136 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-языка.
Оставьте свое сообщение