gifts2017

Резервирование базы - Rar-архивирование и создание вторичной копии

Опубликовал Denis DenZzeR (mikelangello) в раздел Администрирование - Архивирование (backup)

Скрипт создает rar-архив, закрытый паролем, а также - копирует базу на второй сервер.
Делается проверка и восстановление базы.
Есть возможность выключения и/или перезагрузки копьютеров.

Резервирование базы - Rar-архивирование и создание вторичной копии

Скрипт создает rar-архив, закрытый паролем, а также - копирует базу на второй сервер.
Делается проверка и восстановление базы.
Есть (закоментирована) возможность заливки на FTP и выключения-перезагрузки копьютеров. 

Именно RAR и никакой другой: Поддрежка файлов больше 2Гб, большАя степень сжатия чем zip, мощнейшая защита паролем и т.п..


Второй сервер исспольльзуется теми, кому закрыт доступ в оперативную базу на основном сервере. Это, например, различные менеджеры и торговые представители.

Единственное ограничение, с которым им приходиться сталкиваться, но оно не столь критично именно для них - в базе нет документов за сегодняшний день (так как копия делается ночью).

Скрипты со всеми нужными файла лежат в архиве  

Созданный bat-файл запускается через "Назначенные задания". Для того что-бы у Вас н утро было что почитать, все пишется в log-файл. Для его создания просто перенаправляем вывод всех сообщений с экрана в нужный нам файл с помощью ператора >. Это показано на рисунке. 

Пояснения к главным моментам:

Вывод даты и времени
date
/t
time /t
Установка основных переменных (для удобства последющего их исспользования)
set base_name=NewConfig - Имя каталога, где база лежит... кхм.. хранится, лежать ей не нужно Wink
set base_path=d:\1C_Bases\ - каталог БД
set backup_path=d:\___APPSERVER\ -  каталог для хранения копий, можно и в сеть бросать
set second_path=\\Office-02\1c_Base\ -  каталог для вторичной базы
На всякий случай удаляем и снова создаем пустой каталог. 
Именно сюда база вначале копируется, а потом архивируется

rmdir %backup_path%tmp_backup_tnx  /s /q
mkdir %backup_path%tmp_backup_tnx\%base_name%

Этот блок добавлен недавно, он для 7.7. Для 8-ки наверное по-другому будет
del /q %base_path%%base_name\*.cdx -  убиваем все индексы. Добавлено пару дней тому назад. 
"C:\Program Files\1Cv77\BIN\1cv7.exe" CONFIG /M /D%base_path%%base_name% /NAdmin /Pq7a4z1 /@"d:\___APPSERVER\packet\1c_nightwork.param"
А вот это запускается конфигуратор 1С под пользователем с админ. правами и делается "Восстановление базы".
Параметры восстановления лежат в файле "1c_nightwork.param" в той же папке где и сам батник.

echo Создаем копию для основного архива
База копируется в отдельную папку, а потом уже над ней производятся все действия. Файлы, указанные в файле NoCopy.lst не копируются.
xcopy %base_path%%base_name% %backup_path%tmp_backup_tnx\%base_name%  /s /e /h /EXCLUDE:NoCopy.lst
date /t
time /t

echo Создаем основной архив
Параметры: (кому лень читать "rar /?")
- удаление файлов после архивации
- rr5p - 5% на восстановление
- id[c,d,p,q] Disable messages
- ieml[addr] восспользовавшись этим параметром видимо можно архив закинуть на мыло. На проверял.
- m5 ставим максимальный уровень сжатия
- можете поиграть с параметрами ер1, ер2 и ер3 - как Вам будет удобнее
ep1 Exclude base directory from names
ep2 Expand paths to full
ep3 Expand paths to full including the drive letter
- ag[format] имя архива содержит дату, по формату ддммггччмм

rar a -df -rr5p -ibck -hpq7a4z1w8s5x2e9d6c3 -m5 -ep1 -ag_ddmmyyhhmm  %backup_path%tnx1c %backup_path%tmp_backup_tnx\%base_name%
date /t
time /t

echo заливаем на секондари, для отчетчиков
rmdir %second_path%%base_name% /s /q
xcopy %backup_path%tmp_backup_tnx\%base_name% %second_path%%base_name%\  /s /e /h /z /y

Можно выключить второй комп после заливки на него копии.
rem - если не знаете этой команды, тогда лучше делайте все вручную, пока не разберетесь с командами доса
rem shutdown /s /t 600 /m \\office-02 /c "Отмена выключения - Пуск-Выполнить-[cmd]-[shutdown -a]"
date /t
time /t

Когда-то пробовал заливать на ftp. Может кому-то пригодиться (как отправная точка)
rem ftp -v -i -s:ftp.txt ftpupload1.depositfiles.com

rem del /q %backup_path%tnx1c_ftp.rar

Можно и сервак потушить. просто убираем rem
rem shutdown /s /t 60 /c "Отключение для зарядки батарей"
 

Скачать файлы

Наименование Файл Версия Размер
Архив с скриптами 132
.rar 144,11Kb
01.07.10
132
.rar 144,11Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алекс Ю (AlexO) 30.06.10 23:13
Так это 7.7 только.
Для 8-ки надо первую часть через функцию "выгрузка базы".
2. Denis DenZzeR (mikelangello) 01.07.10 10:18
В принципе, все что здесь может быть интересно, это копирование каталогов + архивирование. Просто немножко параметры коммандной строки почитал.
Можно такой вариант исспользовать для копирования каких-то либо других папок.
Сейчас у нас стоит именно 7.7 дбф-ка. Планирую с нового года перевести SQL - вот там точно другие скрипты будут :)
3. Роман (roskmv) 14.07.10 23:08
По мне так лучше средствами самой 1С.
Вот здесь ссылка на подобный материал применимо к 1С 7.7, 8.1 и 8.2
Архивация баз данных 1С 8.2, 8.1 и 7.7
4. Анатолий (Yasen) 22.07.10 18:23
Именно RAR и никакой другой: Поддрежка файлов больше 2Гб, большАя степень сжатия чем zip, мощнейшая защита паролем и т.п..


дело вкуса, конечно, но:

The main features of 7z format:
Open architecture
High compression ratio
Strong AES-256 encryption
Ability of using any compression, conversion or encryption method
Supporting files with sizes up to 16000000000 GB
Unicode file names
Solid compressing
Archive headers compressing
5. Dmitry The Wing (wing) 08.11.10 09:04
(4) У рара есть одно несомненное преимущество, которого я не встречал больше ни в каком другом - он умеет восстанавливать поврежденные архивы, что еще в досовое время много раз спасало. В остальном - он просто удобнее.
6. Nadin_.ka (SotNick) 07.02.11 19:49
Уважаемые спецы! У меня другая проблема, везде пишут про пакетное архивирование баз данных. А вот как сделать пакетное восстановление ИБ - не могу найти. Именно восстановлени ИБ из архива, а не тестирование и исправление ИБ / реиндексация. Может кто сталкивался?
7. Denis DenZzeR (mikelangello) 17.02.11 10:52
Nadin_.ka пишет:
... как сделать пакетное восстановление ИБ - не могу найти. Именно восстановлени ИБ из архива, а не тестирование и исправление ИБ / реиндексация. Может кто сталкивался?

Тоесть, нужно файлики из архива вытащить?
Тогда просто поменять некоторые ключи в команде rar:
rem Удаляем папку, куда будет распакован архив (со всемя подпапками и файлами, в тихом режиме без вопросов)
rmdir d:\1c_Base\NewConfig\ /s /q
rem X - извлечь файлы с полными путями
rar x tnx1c.rar
rem удаляем исходный архив (если нужно. Мне - нужно. Потому что ночью на его место ляжет новый)
del tnx1c.rar /q


Вроде как в команде "rar x base.rar" просто нельзя подставить маску типа base*2010.rar, что-бы розархивировать все архивы 2011 года, но можно вместо имени архива указать имя текстового файла, в котором будут (в столбик) перечисленны архивы, которые нужно распаковать.

У меня была такая проблемка:
- Каждую ночь делается архив. Благодаря ключу rar "-ag_ddmmyyhhmm" я получаю в папке с архивами файлы вида: "base_010120112330;base_020120112330;base_030120112330;.." (03-число,01-месяц,2011-год, 2330- 23:30)
Удобно, сразу видно кто когда создан, файлы не перезатираются (если бы просто писать в base.rar - то будет только он 1, но обновленный) Кстати, есть ключи, позволяющие не пересоздавать весь архив, а только внести измененные файлы.
- Дальше нужно взять самый свежий архив и скопировать его на другую машину. Там эту базу восстановить - для работы тех, кому не нужны оперативные данные, а только отчеты по "вчера", а также - для обучения стажеров, тестирования.
Из 20-30 файлов выбрать последний по времени еще можно (где-то в сети накопал как это сделать). Но вот потом на той машине ну совсем никак не получалось заставить Rar розархивировать этот архив, так как нужно было указать точное имя архива, а оно у меня каждую ночь другое.
Поэтому, после основной архивации, я делаю еще один такой-же архив (но в имени не использую отметку дата-время, просто "base.rar") и копирую его на тот комп.
Потом уже не на сервере, а на той машине запускаю батник:


rem Перетягиваем с сервера архив на диск Д...
rem Y - без вопросов перезаписать, если такой файл уже есть (не удалился вдруг после прошлого востановления)
rem Z - копирование по сети с восстановлением в случае обрыва
xcopy \\Server\Exchange\tnx1c.rar d:\1c_Base\ /z /y

rem Этот блок нашел в сети и чуток под свою задачу настроил
rem Проверяет, если архива в нашей папке нет (не выполнился батник на сервере или из-за чего-то он не скопировался к нам) - СТОП

if not exist d:\1c_Base\tnx1c.rar (
echo Can't copyes any files... Something wrong with network or AppServer!
exit
) ELSE (
echo Archive copied. Executing...
)

rem Если дошли сюда - значит архив скопирован с сервера успешно
rem Без этого блока rar попытается розархивировать несуществующий архив - это не страшно, выдст ошибку и батник перейдет к следующим файлам...
rem Хотя, батник мог-бы просто приостановиться или повиснуть...
rem Хуже то, что дальше запускается восстановление базы. НО ведь каталог базы мы сами перед
rem распаковкой очищаем - результат: 1С запустит конфигуратор и надежно повиснет с ошибкой "Каталог ИБ не обнаружен"
rem В результате - зависший монопольно конфигуратор и пустой каталог с базой

rem Ощищаем папку от прошлодневной базы, распаковываем туда свежую, удаляем архив
rmdir d:\1c_Base\NewConfig\ /s /q
rar x tnx1c.rar
del tnx1c.rar /q

rem Запускаем конфигуратор и восстанавливаем (при архивировании в архив я не включаю файлы CDX)
rem Или хотя бы для того, что-бы утром юзера не прибегали с просьбами зайти в безе монопольно а то их не пускает
"C:\Program Files\1Cv77\BIN\1cv7.exe" CONFIG /M /Dd:\1c_Base\NewConfig\ /NAdmin2 /PAdmin2Pass /@"d:\1c_Base\1c_reindex.param"


Фалй "1c_reindex.param" указывает какие именно операции по восстановлению делать (это именно те "галочки" в диалоге "Администрирование->Тестирование и исправление ИБ")

[General]
Output="c:\___APPSERVER\packet\1c_reindex.log"
Quit=Y - выйти из конфигуратора по завершению
CheckAndRepair=Y - тестирование и исправление, N - только тестирование
[CheckAndRepair]
Repair=Y - исправление
PhysicalIntegrity=N - проверка физической целостности
Reindex=Y - реиндексация
LogicalIntegrity=N - проверка логической целостности
RecalcSecondaries=N - проверка
RecalcTotals=N - проверка
Pack=N - упаковывать таблицы, сжимать DBF
SkipUnresolved=Y
CreateForUnresolved=N
Reconstruct=N
8. Сергей Белоус (seakuban) 17.02.11 11:06
Автор а зачем эти шаманские действия с копированием базы в другой каталог? Задай ключ архиватору чтобы он открывал файлы только на чтение и он сможет архивировать базу "на лету", т.е. даже когда в ней работают пользователи и некоторые файлы открыты на запись.
---
Не знаю есть ли такой ключ в винраре, я его не использую, ибо платный. В 7zip есть
9. Denis DenZzeR (mikelangello) 17.02.11 11:24
10. Denis DenZzeR (mikelangello) 17.02.11 11:33
Зачем копирую в другой каталог? - при копировании сразу отсекаю "лишние" файлы.
Хотя, Вы seakuban правы - можно и не копировать перед архивированием все базу в отдельную папку, а сразу делать архив основной папки.
При создании архива, rar может также архивировать файлы используя список фильтров из масок. Например, архивировать все файлы, кроме cdx. Вначале не знал про эту возможность, поэтому и фильтровал файлы не раром и при копировании.

Привык простоя к rar...
А насчет платности - у меня старенький консольный архиватор ище какого-то там года...

Ага, вот:
RAR 3.50 beta 4   Copyright © 1993-2005 Alexander Roshal   10 May 2005
Shareware version         Type RAR -? for help


Ну, когда задачу поставили - делал на том, что под рукой было :)
А сейчас - работает стабильно, вот я и не лезу менять...

Это ведь только как вариант...
Есть на ИТС какая-то утилитка (когда-то точно была и сам пользовался), которая 1С 7 в zip по расписанию сжимала, и так-же востанавливать могла.. или вручную... в трее висела..
11. Дмитрий (pdimas) 25.01.12 13:19
Спасибо, всё отлично работает
12. Denis DenZzeR (mikelangello) 07.03.12 11:40
А эти батники до сих пор у меня так и работают...
Видимо срабатывает принцип: "чем проще - тем надежнее"
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа