Имя: Пароль:
1C
Админ
Старая избита тема по бэкапу баз, но хочется новых ответов и взглядов...
0 nikitos123
 
10.11.11
09:52
Очень интересно знать, какими способами можно делать резервные копии баз 1С7.7 ??? В частности интересует резервное копирование не выгоняя пользователей (потомучто плотный график работы, последним я выходить с работы не могу т. к. не дают ключей, а никто ждать не собирается пока я сделаю копию). База состоит из DBF файлов. Желательно использовать только средства виндовс ( на сервере стоит 2003 ), можно еще что-нибудь на подобие программы acronis. Прошу выложить как можно больше информации. Спасибо)!
1 Mikeware
 
10.11.11
09:53
увольняйся...
2 aleks-id
 
10.11.11
09:54
ну так и используй резервное копирование самой винды
3 Черт
 
10.11.11
09:55
можно использовать и сторонние программы, которые в указанное время, будут создавать архив.
таких прог просто море
(1) +1
4 ДенисЧ
 
10.11.11
09:56
Если делать архив дбф, не выгоняя пользователей, то вероятность получить битый архив стремится к 1...
5 aleks-id
 
10.11.11
09:57
(4) не к 1 а к бесконечности )
6 Mikeware
 
10.11.11
09:58
(4) судя по Какой должна быть дисперсия случайной величины? , следующий вопрос может быть - "стремится к единице - это много или мало?"
7 GreyK
 
10.11.11
09:58
(0) Если не выгоняя пользователей, тогда УРБД + планировщик.
8 Lexxxxx
 
10.11.11
10:01
(4) Это почему еще?!
9 Mikeware
 
10.11.11
10:03
(8) по определению!
10 Lexxxxx
 
10.11.11
10:04
(9) Несколько лет используем винрар из под самой 1С и ни разу не получали битого архива!
11 Lexxxxx
 
10.11.11
10:06
Как-то так:
12 Lexxxxx
 
10.11.11
10:06
Процедура РезервноеКопирование()
   // Константа.ВыполнятьАрхивирование:
   // 0 - не выполнять
   // 1 - выполнять, если на сегодняшнюю дату нет архива
   // 2 - выполнять всегда
   ВыпАрхивирование=Константа.ВыполнятьАрхивирование;
   Если (ВыпАрхивирование=0) или (МонопольныйРежим()= 1) Тогда
       //Сообщить("В монопольном режиме архивирование не проводится");
       Возврат;
   КонецЕсли;  
   Сообщить ("Проверяется необходимость автоматического архивирования");
   Путь = СокрЛП(Константа.ПутьКАрхиву);
   Если Лев(Путь,1) = "." Тогда
       // относительный путь
       Путь = КаталогИБ() + Сред(Путь,3);
   КонецЕсли;
   
   // проверим наличие каталога для архивирования
   Если ФС.СуществуетФайл(Путь) = 0 Тогда
       Сообщить("Не найден путь для архивирования!","!!!");
       Возврат;
   КонецЕсли;
   Путь=Путь+Метаданные.Идентификатор+ВРЕГ(Сред(ТекущаяИБНаименование(),1,1));
   // проверим наличие сегодняшнего архива
   Файл = ФС.НайтиПервыйФайл(Путь+Строка(Формат(РабочаяДата(),"ДГГГГММДД"))+"_*.rar");
   Если Файл <> "" Тогда
       Если ВыпАрхивирование=1 Тогда
           ОчиститьОкноСообщений();
           Возврат;
       КонецЕсли;
   КонецЕсли;
   Если ПустаяСтрока(ФС.НайтиПервыйФайл(Путь+"*.rar"))=0 Тогда
       РД=РабочаяДата(); СписСтарых=СоздатьОбъект("СписокЗначений");
       Файл = Путь+ФС.НайтиПервыйФайл(Путь+"*.rar");
       РазмерФайла=""; АтрибутыФайла=""; ВремяСоздания=""; Г=""; Д=""; Е="";
       ФС.АтрибутыФайла(Файл,РазмерФайла,АтрибутыФайла,ВремяСоздания,Г,Д,Е);
       ДатаФайла=Дата(Число(Сред(ВремяСоздания,1,4)),Число(Сред(ВремяСоздания,6,2)),Число(Сред(ВремяСоздания,9,2)));
       Возраст=РД-ДатаФайла;
       Если Возраст>=10 Тогда
           СписСтарых.ДобавитьЗначение(Файл);
       КонецЕсли;
       Файл = ФС.НайтиСледующийФайл();
       Пока Файл<>"" Цикл
           ФС.АтрибутыФайла(Путь+Файл,РазмерФайла,АтрибутыФайла,ВремяСоздания,Г,Д,Е);
           ДатаФайла=Дата(Число(Сред(ВремяСоздания,1,4)),Число(Сред(ВремяСоздания,6,2)),Число(Сред(ВремяСоздания,9,2)));
           Возраст=РД-ДатаФайла;
           Если Возраст>=10 Тогда
               СписСтарых.ДобавитьЗначение(Путь+Файл);
           КонецЕсли;
           Файл = ФС.НайтиСледующийФайл();
       КонецЦикла;    
       Для н=1 По СписСтарых.РазмерСписка() Цикл
           ИмяФайла=СписСтарых.ПолучитьЗначение(н);
           ФС.УдалитьФайл(ИмяФайла);
       КонецЦикла;
   КонецЕсли;
   
   Сообщить ("Выполняется архивирование");
   ФС.УстТекКаталог(КаталогИБ());
   Попытка
       КомандаСистемы("rar a -agYYYYMMDD_HHMM -av- -dh -ed -ep1 -idp -m5 -r -x*.cdx -x*.zip -x*.rar -x*.lck -xNEW_STRU -xUSER_S -xatc -xExtForms -xmd -xSYSLOG "+Путь+" *");
   //    КомандаСистемы(КаталогИБ()+"rar a -agYYYYMMDD -av- -dh -ed -ep1 -idp -m5 -r -x*.cdx -x*.zip -x*.rar -x*.lck -xNEW_STRU -xUSER_S -xatc -xExtForms -xmd -xSYSLOG "+Путь+" "+КаталогИБ()+"ExtForms\Отчеты\*.*");
       // -agYYYYMMDD_HHMM    - добавить к имени архива текущие дату и время
       // -av-          - не проверять электронную подпись
       // -dh          - открывать совместно используемые файлы
       // -ed            - не добавлять пустые каталоги
       // -ep1        - исключить базовый каталог из имени
       // -idp        - не отображать процентный индикатор работы
       // -m5            - метод сжатия (0-без сжатия... 3-обычный... 5-максимальный)
       // -r            - рекурсивно с подкаталогами
       // -x*.cdx        - не обрабатывать указанный файл/шаблон
       // -x*.zip
       // -x*.rar
       // -xNEW_STRU
       // -xUSER_S
       // -xatc
       // -xExtForms
       // -xmd
       // -xSYSLOG\* "+Путь+" *"
   Исключение
       КомандаСистемы("winrar a -agYYYYMMDD_HHMM -av- -dh -ep1 -idp -r -x*.cdx -x*.zip -x*.rar -xNEW_STRU -xUSER_S -xatc -xExtForms -xmd -xSYSLOG\* "+Путь+" *");
   КонецПопытки;
   Предупреждение ("Архивирование завершено",5);
КонецПроцедуры // РезервноеКопирование
13 ado
 
10.11.11
10:07
(10) Вам пока везло.
14 Lexxxxx
 
10.11.11
10:08
Я уверен и будет везти!
Приведенная процедура требует доработки так как я привел старый вариант. Ее можно сильно сократить.
15 vinogradъ
 
10.11.11
10:08
ТС хочет делать бэкап не выгоняя пользователей ибо не знает о существовании планировщика.
а для файловой мне нравится nnbackup
16 ado
 
10.11.11
10:11
(14) Ну-ну. Посмотрим, что будет, если процедура сработает посередь транзакции.
17 Lexxxxx
 
10.11.11
10:11
(15) "мне нравится nnbackup"
Пользовали когда-то. Почему-то некоторые копии получались битыми. Да и размерчик копий совсем не маленький.
18 Lexxxxx
 
10.11.11
10:13
(16) Четыре года уже смотрим! И все нормально. Единственное что бесит, так это то, что некоторые грамотеи приловчились закрывать окно винрара посреди архивации. Интересно, можно его как-то запустить невидимым?!
19 ilkoder
 
10.11.11
10:16
(18) - можно из командной строки и не платным винраром, а бесплатным 7z.
20 vinogradъ
 
10.11.11
10:17
(15) Почему-то некоторые копии получались битыми. - не было ни разу
Да и размерчик копий совсем не маленький. - настраивается сжатие
21 Lexxxxx
 
10.11.11
10:17
(19) Он и так в режиме командной строки запускается. Можно и 7-зипом, но на сервере есть уже купленный винрар.
22 ilkoder
 
10.11.11
10:20
(21) я имею в виду консольную версию
23 Lexxxxx
 
10.11.11
12:02
(22) А версия для командной строки и консольная версия это разные версии?! Я говорю про ту, которая в черном окошечке запускается.
24 nikitos123
 
10.11.11
12:55
Товарищи, а можно как-то все это подитожить??? Если делать на лету копию или архив, то может получится битая копия! Это она вся такой будет или не будут работать отдельные dbf файлы или некотрые части в dbf файле????
25 ДенисЧ
 
10.11.11
12:56
(24) от некоррктных данных до незапускаемой базы
26 ЧеловекДуши
 
10.11.11
12:59
(2)Читай (1) :)... Тебе подходит.
27 ado
 
10.11.11
13:13
(24) Делай копирование скриптом по расписанию ночью. Даже если кто-то забыл выйти из базы, пока в неё гарантированно никто не пишет, такое копирование будет безопасным.
28 Скользящий
 
10.11.11
13:17
Есть хороший бэкапер от Гэндальфа.
29 ptiz
 
10.11.11
13:19
(18) Архив не "битый" только на первый взгляд. Но косяки в данных очень вероятны, если кто-то вводил данные во время архивации.
30 ДенисЧ
 
10.11.11
13:20
(28) Даже лучший бекапер не сделает нормального архива в дбф во время длительной транзакции...
31 miki
 
10.11.11
13:21
Ну чё, велик ещё не изобрели?
32 Скользящий
 
10.11.11
13:21
Как вариант удаленное подключение, и бэкапить вечером вручную пока никого нет )
33 ptiz
 
10.11.11
13:22
(30) Дело даже не в одной транзакции.

Сделали так:
1) DBFка с товаром заархивировалась
2) ввели товар
3) ввели документ прихода этого товара
4) DBFка с документом заархивировалась

что имеем в архиве?
34 ado
 
10.11.11
13:24
(32) Блин, да написать батник и засунуть в расписание ... ну что проще то может быть?
35 Скользящий
 
10.11.11
13:28
(34) Батник написать можно. Как контролировать, что в базе никого нет?
36 ЧеловекДуши
 
10.11.11
13:35
(35)Дописать конфу так что что бы из Базы всех выбрасывало.
По достижению определенного времени.
Если не смогло выкинуть, не беда... попробует завтра.
37 ЧеловекДуши
 
10.11.11
13:35
+(35)Максимум потеряет неделю.
38 Скользящий
 
10.11.11
13:37
я на одной из предыдущих работ делал очень зло. Тупо перезагружал сервак ннкроном. А потом бэкапил.
39 Скользящий
 
10.11.11
13:37
но так делать не советую, это не кошерно. )
40 Сияющий Асинхраль
 
10.11.11
13:45
Вообще при работе в DBF базах обычное копирование базы без выгона пользователей великолепно работает, а вот с этой скопированной базой можно делать далее, что угодно - сносить индексы, архивировать и т.д.
41 ado
 
10.11.11
14:03
(35) Ну, контролировать, если надо, очень просто. Но я так понял, что у автора ночью все равно никто не работает ("последним я выходить с работы не могу т. к. не дают ключей, а никто ждать не собирается пока я сделаю копию").
В это случае, даже если кто-то остался в базе -- ничего страшного. Главное, чтобы в неё ничего не писали.
42 nikitos123
 
10.11.11
14:59
Да, ночью никто не работает и компьютер (сервер) выключен в целях безопасности, а то сигнализация может не включится (так мне объяснили)!!! Выключен не мной, а человеком, который остаеться, чтобы сделать индексацию...
ууу... вообще бред какой-то - заманался...
43 andrewks
 
10.11.11
15:21
(5) вероятность не может стремиться к бесконечности, учи матчасть :)
44 Vladal
 
10.11.11
15:25
А ночером бэкапиться по расписанию?
Выгонять всех пользователей программно, кто не понял - рубить процессы.
45 Скользящий
 
10.11.11
15:32
Сервер! Выключен! В целях безопасности?! Голову пусть лечат. Сервер вообще выключаться не должен.
46 Vladal
 
10.11.11
15:34
(42) Специально обученный Человек сделал индексацию и сделал бэкап. Всё.
47 Мулька
 
10.11.11
15:37
(42) В качестве сервера обычный пень?
ПС: Сервера очень не рекомендуется вкл/выключать.
(40) +1. Можно, конечно и выгнать пользователей перед бэкапом. Но дбф при бездействии в базе отлично копируются (максимум переиндексацию сделать придется)
48 nikitos123
 
10.11.11
15:53
Мулька, да сервер в данном случае простая машинка с хорошими параметрами, а не сервер в полном его смысле... Сеть вообще относительно не большая - 23 машины.
А почему не рекомендуется выключать сервера?
49 Скользящий
 
10.11.11
15:57
если простая машинка с хорошими параметрами, то пофиг, выключать или нет. Но по хорошему выключать не надо на ночь все равно.
50 Ёпрст
 
10.11.11
15:57
51 Оболтус
 
10.11.11
16:02
(50)А это точно работает?
52 Pasha
 
10.11.11
16:03
(0) А не проще SQL поставить?
53 Оболтус
 
10.11.11
16:04
(52)Это дорого.
54 Ёпрст
 
10.11.11
16:05
(51) даже не сумневайся.
55 Скользящий
 
10.11.11
16:06
Из за этого кодебазе сервер ставить?
56 nikitos123
 
10.11.11
16:08
Pasha, а можно будет имеющиеся данные перенести на SQL?
57 andrewks
 
10.11.11
16:09
(52) скуль из-за бэкапов? оригинально-с
58 Lionee
 
10.11.11
16:12
(48)сервер вкл и выкл один раз, все на то  он и сервер
59 Ёпрст
 
10.11.11
16:12
(55) когда же вы все читать то будете ?
ЗЫ: нет, не обязательно.
60 Ёпрст
 
10.11.11
16:13
+59 +DBEng32 (8.0.0.9, Share) вот это ставишь и привет, тем более, это ужо работает не один год для выполненния фоксового запроса в монопольном режиме.
61 Aleksey
 
10.11.11
16:17
(36) Так это разве через АД и политики нельзя сделать?
62 Lionee
 
10.11.11
16:19