Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» backup базы 1С

Автор: leputain
Дата сообщения: 28.03.2004 14:57
привет.
для того, чтобы сбэкапить, во-первых надо просто скопировать резервируемый файл в другое место. а что если юзер работает в данный момент с базой, и даже не один, а несколько. я имею ввиду терминал-сервер с несколькими одновременно активными юзерами. будет ли бэкап рабочий, если скопирую базу в данный момент времени? сервер - 2000. вообще, интересно как nt-образный системы управляются с файлом, к которому идёт постороннее обращение (запись) при копировании.
как вообще решается проблема резервирования баз для 1С у админов?
--
p.s. конечно я собираюсь бэкапить в три часа ночи, когда обращения минимальны, но чем чёрт не шутит.
Автор: Sadok
Дата сообщения: 29.03.2004 09:30
Нет ясности. Я бекаплю в три часа ночи, предварительно тормознув весь сиквел.
Автор: yarasha
Дата сообщения: 29.03.2004 09:44

Цитата:
Нет ясности. Я бекаплю в три часа ночи, предварительно тормознув весь сиквел

Sql позволяет бекапить базы на лету. Даже когда юзера работают, так что останавливать SQl нет ни какой нужды. Если база DBF то при работающих юзерах это не возможно, так как файлы заняты пользовательскими процессами.
Автор: leputain
Дата сообщения: 29.03.2004 12:02
1С на DBF. видимо, придётся запрещать соединение, всех отсоединять, бэкапить и разрешать соединение, ну и предупредить юзеров, бллин..
Автор: locky
Дата сообщения: 10.08.2004 08:17
leputain
Автоматический бакап 1С скриптами через выргрузку-загрузку данных.
http://www.kochurov.narod.ru/ - автор.
http://v7backup.narod.ru/V7Backup.zip - последняя версия.
Проверено, всё работает.

yarasha
А приходилось ли Вам восстанавливать 1С из того, что SQL набакапил?
Мне пришлось дважды. Одного бакапа сделанного SQL'ем мне не хватило, посему - будте бдительны.

Добавлено
Сейчас провели несколько полевых экспериментов.
1С - НЕ ЕСТЬ полноценное SQL приложение. Смысл в том, что файл с метаданными (тот самый 1cv7.md) не находится внутри SQL базы. В этом файле содержаться сведения о структуре - т.е. все связи между всеми файлами (в случае файловой БД) или таблицами (в случае SQL БД). В процессе работы 1C регулярно происходят изменения структуры. Я не знаю почему, но это так. Поэтому, чтобы с гарантией 99% восстановить базу надо делать либо-либо:
- архив "каталог БД" + "SQL" BackUp, но это для настоящих героев.
- выгрузку данных в файл средствами 1С.
Во втором варианте никаких бакапов SQL "DB+TransactLog" не требуется. Можно просто прибить весь заглючивший мусор и создать эту базу заново. Для автоматизации этого момента и нужны ссылочки сверху. Лучше начать с сайта автора.
PS Открытым останется вопрос пользователей SQL и "Папок пользователей 1С", но это не проблема.
Автор: vworld
Дата сообщения: 10.08.2004 10:55
Я использую ApBackUp, только вот в последнее время что-то ошибка идет при копирование, причем базы зарплатные нормально а вот бух с ошибкой, и что самое интересное раньше все было ОК, но что то послужило для сбоя и причем опять же архивирование шло даже при открытых 1С процессах...
Автор: leputain
Дата сообщения: 10.08.2004 15:36
спасибо, приму к сведению, буду пробовать
Автор: SAshock
Дата сообщения: 10.08.2004 21:24
да можно бэкапить обычным rar'ом,

с ключом -dh
Автор: Looking
Дата сообщения: 10.08.2004 22:42
leputain
Ради интереса пробывал архивировать dbf-базу 1С открытую программой в монопольном режиме стандартным бэкапом WinXP, и он что-то заархивировал, снес базу, восстановил из бэкапа - все работает.
vworld
А относительно ApBackUp - там для 1С, если она не круглые сутки занята - используй "условное выполнение заданий" (существует файл *.lck для 1С)
Автор: PIL123
Дата сообщения: 27.05.2005 15:50
Для бэкапа 1С под SQL-сервером
У меня раньше было 3 скриптика, которые я запуксал шедулером ночью поочереди.
Первый убивал все процессы с именем 1cv7s.exe на всех компах в домене, второй убивал процессы со стороны SQL сервера, которые держали бэкап необходимых баз, ну а третий собственно проводил бэкап необходимых баз, запуская 1С: Предприятие в пакетном режиме. Всё работало, как часы.

Когда я уволился с работы, то забыл эти скриптики с собой взять. Может у кого есть такие - поделитесь, пожалуйста.
Автор: dg
Дата сообщения: 07.08.2005 10:39
[more=скрипты, о которых писал выше PIL123]
KillProcesses1C.vbs
Код: 'Скрипт демонстрирует возможность принудительного завершения процессов "1cv7s.exe" на всех компьютерах
'указанного домена. Данный код можно применять непосредственно перед пакетным запуском 1С:Предприятия,
'требующим монопольного входа в базу данных (например, при резервном копировании).

'ВНИМАНИЕ! Задайте нужное значение переменной "DomainName"!

'ВНИМАНИЕ! Для успешной работы скрипта его желательно запускать с правами администратора домена.

'ВНИМАНИЕ! Чтобы опробовать скрипт, не производя деструктивных действий, достаточно закомментировать
'оператор "Proc.Terminate".

Option Explicit
On Error Resume Next

Dim DomainName 'Имя домена
DomainName = "DomainName"

Dim StrResult 'строка результата работы всей программы
StrResult = StrResult & CStr(Now) & " начало работы скрипта" & VbCrLf

Dim ADSI
Set ADSI = GetObject("WinNT://" & DomainName)
ADSI.Filter = Array("computer")

Dim Comp 'компьютер
Dim WMI 'объект WMI
Dim Proc 'процесс

Dim CurrName 'имя текущего компьютера
CurrName = GetNameComp()

'Цикл по компьютерам домена
For Each Comp In ADSI
If Comp.Name <> CurrName Then
Set WMI = GetObject("winmgmts:{ImpersonationLevel=Impersonate}!\\" & Trim(Comp.Name) & "\Root\CIMV2")
If Err.Number=0 Then
'Цикл по процессам компьютера
For Each Proc In WMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '1cv7s.exe'")
StrResult = StrResult & _
CStr(Now) & " Computer=" & Comp.Name & " PID=" & Proc.ProcessId & _
VbCrLf
'Завершение процесса
Proc.Terminate
Next 'Цикл по процессам компьютера
Else 'Не удалось соединиться с компьютером
If Err.Number <> 462 Then 'The remote server machine does not exist or is unavailable
StrResult = StrResult & _
" " & CStr(Now) & " Computer=" & Comp.Name & " ERROR " & Err.Number & _
VbCrLf
End If
End If
Err.Clear
End If
Next 'Цикл по компьютерам домена

StrResult = StrResult & CStr(Now) & " конец работы скрипта" & VbCrLf

'Отображение результата
'ShowInNotepad("Процессы 1cv7s.exe:" & VbCrLf & VbCrLf & StrResult)
'==========================================================================
'Процедура отображает переданную строку в блокноте
'Sub ShowInNotepad(StrToFile)
' Dim FSO 'Объект файловой системы Scripting.FileSystemObject
' Dim TempPath 'Путь к временному файлу
' Dim TxtFile 'Поток текстового файла
'
' Set FSO = CreateObject("Scripting.FileSystemObject")
' TempPath = GetTempPath() & "\" & FSO.GetTempName
' Set TxtFile = FSO.CreateTextFile(TempPath)
' TxtFile.WriteLine(StrToFile)
' TxtFile.Close
' CreateObject("WScript.Shell").Run "notepad.exe " & TempPath
' WScript.Sleep 1000
' FSO.DeleteFile TempPath
'End Sub 'ShowInNotepad
'==========================================================================
'Функция возвращает путь к каталогу временных файлов текущего пользователя
Function GetTempPath()
GetTempPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%")
End Function 'GetTempPath
'==========================================================================
'Функция возвращает имя текущего компьютера
Function GetNameComp()
GetNameComp = CreateObject("WScript.Network").ComputerName
End Function 'GetNameComp
Автор: cr
Дата сообщения: 07.08.2005 11:58
locky
Грамотно надо просто бэкап настраивать и все будет OK - восстанавливали раз 5 по разным причинам - потеря данных составляет разницу между бекапами транзак-лога те в нашем случае 1 час.
Автор: locky
Дата сообщения: 08.08.2005 08:33
cr
1 - Вы внимательно прочитали то что я написал?
2 - У Вас есть 1С-программер который со средней регулярностью вносит изменения в структуру базы?
3 - Сколько откатов и на какой срок Вы можете сделать с таким бэкапом? Каково их общее кол-во и размеры?

Смоделируйте ситуацию с поврежденным MD-файлом, и расскажите о результатах. Если Вам "раз 5 по разным причинам" повезло, это не повод... Я сам несколько раз восстанавливал с SQL бэкапов, а потом два раза подряд оно не поднялось.
Автор: RQQT
Дата сообщения: 08.08.2005 10:04
Копирование с одного HDD на другой, на мой взгляд, дает достаточно сомнительный эффект от резервного копирования. Проще делать автоматическую выгрузку из 1С и потом закатывать на CDRW или DVD. Программа для этого - 1СD-Банк.
Автор: locky
Дата сообщения: 08.08.2005 15:29
... из переписки с людьми, которые настраивают 1С более 5 лет при кол-ве 1С-юзеров более 50.

Цитата:

Locky 08.08.2005 15:00:
вопросец про бэкап 1С под SQL.
Есть некоторый спор на эту тему...
Имеем SQL, 1С и бакап базы просто на сетевой диск средствами SQL. База+лог.
Вопрос - если взорвется сервер на котором 1С, то достаточно ли будет SQL-бэкапа для того, чтобы всё заработало обратно?


Цитата:

nickitus 08.08.2005 15:00: Смотря какая! Если семерка, то фиг... Если 8.0, то может и повезет %)
nickitus 08.08.2005 15:01: Для 7.7 нужен еще как минимум МД-шник
nickitus 08.08.2005 15:03: Ну как? Доступно? ;)


Цитата:

tucha 08.08.2005 15:03: Конфу тоже надо бекапить
tucha 08.08.2005 15:04: у нас я робота настроил, который ночью делает выгрузку базы средствами 1С. Мне кажется, после крушения, проще выгруку загрузить


Цитата:

tucha 08.08.2005 15:13: Ну в принципе есть плюс у SQL бекапа. Если делать регулярно через час бекап лога, то можно в случае краха данные восстановить с точностью до часа. И пользователей при бекапе не надо выгонять из базы


Цитата:

WildHare 08.08.2005 15:01: если где-то будет бэкап собственно конфигурации (то есть MD + DD) то должно заработать. если речь про 7.7 -- с 8.0 в prodaction я не работал


Цитата:

Locky 08.08.2005 15:06: речь про 7.7
если будет только то, что я сказал, то всё накроется медным тазОм. Так?
WildHare 08.08.2005 15:08: ну, если с момента снятия бэкапа SQL-базы не было изменений в MD -- база поднимается из бэкапа обратно и проблем быть не должно. хотя с 7.7 можно всякого ожидать :)
в моей старой конторе выгрузку средствами 1С делали раз в неделю или реже (до 20 часов занимала эта выгрузка), а вот бэкап SQL -- два раза в сутки

Итог - не хотите лишних заморочек - бэкапте всё. Выгрузка средствами 1С без SQL бэкапа работать будет 100%, а вот наоборот - не факт и это уже случалось. Можно неспешно нарисовать статью...
Автор: cthsq
Дата сообщения: 08.08.2005 16:34
У меня с базой DBF работают nnBackup + nnCron для этих целей, сбоев и жалоб не было.
Автор: Weihnachtsmann
Дата сообщения: 04.01.2006 19:37
Я бэкаплю раздел, где лежат базы DBF обычным бэкапом в три часа ночи. Восстанавливается тупым копированием. Вроде нормально пока...
Автор: arc
Дата сообщения: 28.03.2006 19:26

Цитата:
Я бэкаплю раздел, где лежат базы DBF обычным бэкапом в три часа ночи. Восстанавливается тупым копированием. Вроде нормально пока...

Тока файлы закрывать нужно и индексировать, а то и вправду, "пока".
Автор: Zexes
Дата сообщения: 28.03.2006 19:37
Я использую для этих целей Хранителя, чего и вам советую.
Если его нет, то настроить выгрузку из 1С каждую ночь + ежечасное копирование лога.
Автор: sashalig
Дата сообщения: 27.07.2007 07:52
Вот эта программа умеет быстро и четко бэкапить 1С http://www.handybackup.ru/backup-1c.shtml
Автор: tSirkul
Дата сообщения: 02.08.2007 09:10
у меня семерочные базы бэкапились (и кое-где до сих пор бэкапятся) подобной командой (в составе backup_1c.bat)

for %%I in (lst\*.lst) do "C:\Program Files\WinRAR\WinRAR.exe" a -agYYYYMMDD -dh -ep -ep1 -ibck -inul -k -rr -ts1 -m5 -md4096 %%~nI @%%I

а вот содержимое файла .lst

<путь к базе>\*.dbf
<путь к базе>\1cv7.md
<путь к базе>\1cv7.dd
<путь к базе>\usrdef\users.usr

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

к сожалению для оперативного бэкапа (типа каждые 30 мин) DBF базы решений не представляю, а к варианту 7.7+SQL отношусь скептически, на больших базах/нагрузках терминал рулит (не имею ввиду сверхбольшие - на сотни пользователей, это вообще отдельная тема).

сейчас основная база на восьмерке, там все красивее.
Автор: SPV_Ed
Дата сообщения: 02.08.2007 12:54
Терминальный сервер. 1С 7.7 + 1С 8. Бекаплю таким скриптом, который запускается каждый день кроме воскресенья после полуночи. Предусмотрено завершение терминальных сессий юзеров перед бекапом. Скрипт создает суточный, недельный и месячный архивы, хранится локально и на сетевом ресурсе. Любые замечания приветствуются.

Код: On Error Resume Next

Set WshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

strDateStart = Date ' Дата старта
strTimeStart = Time ' Время старта
aDate = split(strDateStart, ".")
nDays = 1 ' Количество дней для хранения суточных архивов
nWeeks = 1 ' Количество недель для хранения еженедельных архивов
nMonthes = 1 ' Количество месяцев для хранения ежемесячных архивов
' Путь к архивируемой БД
strDataPath = "C:\1с\"
' Шаблон имени создаваемого архивного файла
strDataDailyFileName = "1C_" & aDate(2) & "-" & aDate(1) & "-" & aDate(0) & "_" & WeekdayName(Weekday(Now), True)
' Локальный ресурс для хранения архивов
strPathArchiveLocal = "G:\Archive\1C\"
' Сетевой ресурс для хранения архивов
strPathArchiveRemote = "\\192.168.0.170\Archive$\1C\"
strDirDaily = "ArcDaily\" ' Cуточный
strDirWeekly = "ArcWeekly\" ' Недельный
strDirMonthly = "ArcMonthly\" ' Месячный
' Шаблон имени лог-файла
strLogFile = strPathArchiveLocal & strDataDailyFileName & ".log"
' Лог-файл ошибок архиватора
strArcErrLogFile = strPathArchiveLocal & "rarerr.log"
' Путь к директории архиватора
strPathToArchiver = "%ProgramFiles%\WinRar\"
' Файл-список исключений для архиватора
strExcFile = "ExcFile.txt"


If objFSO.FolderExists(strPathArchiveLocal) = False Then objFSO.CreateFolder(strPathArchiveLocal)
If objFSO.FolderExists(strPathArchiveRemote) = False Then objFSO.CreateFolder(strPathArchiveRemote)
If objFSO.FileExists(strLogFile) Then objFSO.DeleteFile(strLogFile)

WriteTextFiles Now & " Старт скрипта: " & WScript.ScriptFullName & VbCrLf, strLogFile


'================================================================================
' Завершение существующих терминальных сессий пользователей перед архивированием
'================================================================================
WriteTextFiles VbCrLf & Now & " Завершение cуществующих терминальных сессий" & VbCrLf, strLogFile
WshShell.Run "%comspec% /u /c chcp 1251 & quser >>" & strLogFile, 0, True
WriteTextFiles VbCrLf, strLogFile
WshShell.Run "%comspec% /u /c chcp 1251 & for /f ""eol=; tokens=1 skip=2"" %i in ('quser') do qprocess %i >>" & strLogFile, 0, True
WshShell.Run "%comspec% /u /c chcp 1251 & for /f ""eol=; tokens=2 skip=1"" %i in ('quser') do if /i not ""%i""==""console"" logoff %i /v >>" & strLogFile, 0, True

WriteTextFiles VbCrLf & Now & " Проверка наличия незавершившихся терминальных сессий" & VbCrLf, strLogFile
WshShell.Run "%comspec% /u /c chcp 1251 & quser >>" & strLogFile, 0, True
WriteTextFiles VbCrLf, strLogFile


'==================================
' Архивация баз за прошедшие сутки
'==================================
WriteTextFiles VbCrLf & Now & " Создание списка исключений для архиватора: " & strExcFile & VbCrLf, strLogFile
WriteTextFiles "*.cdx", strExcFile

WriteTextFiles VbCrLf & Now & " Cуточная архивация баз " & strSubject & strDataPath & " ===> " & strPathArchiveLocal & strDirDaily & VbCrLf, strLogFile

If objFSO.FolderExists(strPathArchiveLocal & strDirDaily) = False Then objFSO.CreateFolder(strPathArchiveLocal & strDirDaily)

' Вычисление размера архивируемой директории
Set objFolder = objFSO.GetFolder(strDataPath)
WriteTextFiles vbTab & "Размер архивируемой директории: " & strDataPath & " - " & Round(objFolder.Size / 1048576,2) & " Mb" & VbCrLf, strLogFile

' Запуск программы-архиватора
WshShell.Run chr(34) & strPathToArchiver & "Rar.exe" & chr(34) &_
" a -ep1 -r -se -rr10p -m5 -dh -x@" & strExcFile & " -ilog:" & strArcErrLogFile & " " &_
strPathArchiveLocal & strDirDaily & strDataDailyFileName & " " & strDataPath & "*", 0, True

' Вычисление размера созданного архива
If objFSO.FileExists(strPathArchiveLocal & strDirDaily & strDataDailyFileName & ".rar") = true Then
Set objTestFile = objFSO.GetFile(strPathArchiveLocal & strDirDaily & strDataDailyFileName & ".rar")
WriteTextFiles vbTab & "Размер созданного суточного архива: " & objTestFile & " - " & Round(objTestFile.Size / 1048576,2) & " Mb" & VbCrLf, strLogFile
Else
WriteTextFiles vbTab & "ОШИБКА: Файл: " & strPathArchiveLocal & strDirDaily & strDataDailyFileName & ".rar не создан" & VbCrLf, strLogFile
If objFSO.FileExists(strExcFile) Then objFSO.DeleteFile(strExcFile)
objFSO.MoveFile strLogFile, strLogFile & ".err"
WScript.Quit
End If
If objFSO.FileExists(strExcFile) Then objFSO.DeleteFile(strExcFile)


'=======================================
' Копирование архива за прошедшие сутки
'=======================================
' На сетевой ресурс
strReturn = CopyNewArcFiles (strPathArchiveLocal & strDirDaily, strPathArchiveRemote & strDirDaily)
WriteTextFiles strReturn, strLogFile

' Удаление неактуальных суточных архивов
WriteTextFiles VbCrLf & Now & " Удаление архивов старше " & nDays & " суток" & VbCrLf, strLogFile
' На локальном диске
strReturn = DeleteOldFiles (nDays, strPathArchiveLocal & strDirDaily, "d")
WriteTextFiles strReturn, strLogFile
' На сетевом ресурсе
strReturn = DeleteOldFiles (nDays, strPathArchiveRemote & strDirDaily, "d")
WriteTextFiles strReturn, strLogFile


'========================================
' Копирование архива за прошедшую неделю
'========================================
If WeekDay(strDateStart, 2) = 1 Then
' На локальный диск
strReturn = CopyNewArcFiles (strPathArchiveLocal & strDirDaily, strPathArchiveLocal & strDirWeekly)
WriteTextFiles strReturn, strLogFile
' На сетевой ресурс
strReturn = CopyNewArcFiles (strPathArchiveRemote & strDirDaily, strPathArchiveRemote & strDirWeekly)
WriteTextFiles strReturn, strLogFile

' Удаление неактуальных недельных архивов
WriteTextFiles VbCrLf & Now & " Удаление архивов старше " & nWeeks & " недель" & VbCrLf, strLogFile
' На локальном диске
strReturn = DeleteOldFiles (nWeeks, strPathArchiveLocal & strDirWeekly, "ww")
WriteTextFiles strReturn, strLogFile
' На сетевом ресурсе
strReturn = DeleteOldFiles (nWeeks, strPathArchiveRemote & strDirWeekly, "ww")
WriteTextFiles strReturn, strLogFile
End If


'=======================================
' Копирование архива за прошедший месяц
'=======================================
If Day(strDateStart) = 1 Or _
((Day(strDateStart) = 2 Or Day(strDateStart) = 3) And WeekDay(strDateStart, 2) = 1) Then
' На локальный диск
strReturn = CopyNewArcFiles (strPathArchiveLocal & strDirDaily, strPathArchiveLocal & strDirMonthly)
WriteTextFiles strReturn, strLogFile
' На сетевой ресурс
strReturn = CopyNewArcFiles (strPathArchiveRemote & strDirDaily, strPathArchiveRemote & strDirMonthly)
WriteTextFiles strReturn, strLogFile

' Удаление неактуальных месячных архивов
WriteTextFiles VbCrLf & Now & " Удаление архивов старше " & nMonthes & " месяцев" & VbCrLf, strLogFile
' На локальном диске
strReturn = DeleteOldFiles (nMonthes, strPathArchiveLocal & strDirMonthly, "m")
WriteTextFiles strReturn, strLogFile
' На сетевом ресурсе
strReturn = DeleteOldFiles (nMonthes, strPathArchiveRemote & strDirMonthly, "m")
WriteTextFiles strReturn, strLogFile
End If


'==============================================
' Функция копирования файлов созданных архивов
'==============================================
Function CopyNewArcFiles (strPathSrc, strPathDst)
WriteTextFiles VbCrLf & Now & " копирование созданного суточного архива" & VbCrLf, strLogFile
If objFSO.FolderExists(strPathDst) = False Then objFSO.CreateFolder(strPathDst)
objFSO.CopyFile strPathSrc & strDataDailyFileName & ".rar", strPathDst, True
If objFSO.FileExists(strPathDst & strDataDailyFileName & ".rar") = true Then
Set objTestFile = objFSO.GetFile(strPathDst & strDataDailyFileName & ".rar")
strCopyLog = strCopyLog + vbTab & "Файл: " & strDataDailyFileName & ".rar" & " скопирован в " & strPathDst & VbCrLf
Else
strCopyLog = strCopyLog + vbTab & "ОШИБКА: Файл: " & strDataDailyFileName & ".rar" & " не скопирован в " & strPathDst & VbCrLf
End If
CopyNewArcFiles = strCopyLog
End Function


'==============================================
' Функция удаления файлов неактуальных архивов
'==============================================
Function DeleteOldFiles (strPeriod, strPath, intrvl)
Set objFolder = objFSO.GetFolder(strPath)
Set objFiles = objFolder.Files
For Each File In objFiles
Result = Abs(DateDiff(intrvl, Now, File.DateCreated))
If Result > strPeriod-1 Then
strDeleteLog = strDeleteLog + vbTab & "Удален файл: " & File.Path & " от: " & File.DateCreated & VbCrLf
File.Delete
End If
Next
DeleteOldFiles = strDeleteLog
End Function

WriteTextFiles Now & " Архивация окончена. Время выполнения архивации: " & CDate(Time - strTimeStart), strLogFile


'=======================
' Копирование лог-файла
'=======================
' Ежедневный
If objFSO.FileExists(strLogFile) Then
objFSO.CopyFile strLogFile, strPathArchiveLocal & strDirDaily, True
objFSO.CopyFile strLogFile, strPathArchiveRemote & strDirDaily, True
' Еженедельный
If WeekDay(strDateStart, 2) = 1 Then
If objFSO.FileExists(strLogFile) Then
objFSO.CopyFile strLogFile, strPathArchiveLocal & strDirWeekly, True
objFSO.CopyFile strLogFile, strPathArchiveRemote & strDirWeekly, True
End If
End If
' Ежемесячный
If Day(strDateStart) = 1 Or _
((Day(strDateStart) = 2 Or Day(strDateStart) = 3) And WeekDay(strDateStart, 2) = 1) Then
If objFSO.FileExists(strLogFile) Then
objFSO.CopyFile strLogFile, strPathArchiveLocal & strDirMonthly, True
objFSO.CopyFile strLogFile, strPathArchiveRemote & strDirMonthly, True
End If
End If
' Удаление временного лога
objFSO.DeleteFile(strLogFile)
End If

Set WshShell = Nothing
Set objFSO = Nothing

WScript.Quit


'===================================
' Процедура записи текстового файла
'===================================
Sub WriteTextFiles (strText, strPath)
Set objFile = objFSO.OpenTextFile(strPath, 8, True)
objFile.WriteLine(strText)
objFile.Close
End Sub
Автор: wok
Дата сообщения: 26.08.2007 04:04
SPV_Ed:
Скрипт просто супер, полезность 100%!!! Спасибо!
Автор: gmarik
Дата сообщения: 30.08.2007 21:41
http://www.handybackup.ru/backup-1c.shtml ровно то, что надо
Автор: aChikatillo
Дата сообщения: 26.10.2007 16:51
Пользуюсь http://www.aqtech.com/ru/, старенькая прога , но работает стабильно..
На счет handybackup -Во время выполнения резервного копирования программа "1С" не должна использоваться пользователями.
В моем случае выполняется резервное копирование даже когда 1с используют пользователи.
Мот я че-то непонимаю обьясните?
Автор: aChikatillo
Дата сообщения: 19.11.2007 11:11

Цитата:
Завершение существующих терминальных сессий пользователей перед архивированием
'================================================================================
WriteTextFiles VbCrLf & Now & " Завершение cуществующих терминальных сессий" & VbCrLf, strLogFile
WshShell.Run "%comspec% /u /c chcp 1251 & quser >>" & strLogFile, 0, True
WriteTextFiles VbCrLf, strLogFile
WshShell.Run "%comspec% /u /c chcp 1251 & for /f ""eol=; tokens=1 skip=2"" %i in ('quser') do qprocess %i >>" & strLogFile, 0, True
WshShell.Run "%comspec% /u /c chcp 1251 & for /f ""eol=; tokens=2 skip=1"" %i in ('quser') do if /i not ""%i""==""console"" logoff %i /v >>" & strLogFile, 0, True

WriteTextFiles VbCrLf & Now & " Проверка наличия незавершившихся терминальных сессий" & VbCrLf, strLogFile
WshShell.Run "%comspec% /u /c chcp 1251 & quser >>" & strLogFile, 0, True
WriteTextFiles VbCrLf, strLogFile


Как зделать так что бы завершались все терминальные сессии кроме одной(определенного пользователя)?
Автор: tankistua
Дата сообщения: 25.11.2007 20:33
Так завершение сессии можно настроить в настройках конкретного пользователя.

Лучше скажите как можно килять сессии в MS SQL-ю :)

Нашел скрипт:
http://script-coding.info/KillProcessesSQLServer.zip

Сессию убивает, но данные все равно из MS SQL-я выгрузить не получается - пишет ошибка блокировки. Возможно это потому, что 1C-ка запущена с сервера.

Добавлено:
сорри - я имел ввиду, что не выгружается из конфигуратора 1С-вского
Автор: andrejvb
Дата сообщения: 25.11.2007 23:59
tankistua

Цитата:
сорри - я имел ввиду, что не выгружается из конфигуратора 1С-вского

Странно. У меня работает такой [more=скрипт]@echo off
rem
rem Для закрытия всех терминальных сессий на сервере
query session | find /v ">" | find "rdpwd" | find /v "6553" > session.txt
type session.txt |find "rdp-tcp#" > active.txt
type session.txt |find /v "rdp-tcp#" > noactive.txt

for /f "tokens=1,2,3" %%i in (active.txt) do reset session %%k
for /f "tokens=1,2,3" %%i in (noactive.txt) do reset session %%j
del noactive.txt
del active.txt
del session.txt


rem Запретить вход клиентов RDP
change logon /disable

rem Прибить все 1С-ки
taskkill /f /im 1cv7* /t

"C:\Program Files\1Cv77\BIN\1cv7s.exe" CONFIG /D"C:\1c_base\оп_2007" /NАдминистратор /P**** /@"C:\backup\Backup.txt"

if exist C:\backup\save_02007_%date%.zip del /q C:\backup\save_02007_%date%.zip
ren C:\backup\save.zip save_02007_%date%.zip

"C:\Program Files\1Cv77\BIN\1cv7s.exe" CONFIG /D"C:\1c_base\nalog_new_sql" /NАдминистратор /P**** /@"C:\backup\Backup_n.txt"

if exist C:\backup\unload_nalog_%date%.zip del /q C:\backup\unload_nalog_%date%.zip
ren C:\backup\unload.zip unload_nalog_%date%.zip

rem Разрешить вход клиентов RDP
change logon /enable
set %ERRORLEVEL% = 0

rem Вся эта фигня должна быть в CP866, если есть хоть один русский символ в путях или имени администратора.
[/more]. Выгружает всё и из дбф, и из скуля. Скорее всего, у тебя остались отвалившиеся сессии с запущенными 1С-ками. [more=Backup.txt][General]
Output = log.txt
Quit = Y
CheckAndRepair = Y
UnloadData = N
SaveData = Y

[CheckAndRepair]
Repair = N
PhisicalIntegrity = N
Reindex = Y
LogicalIntegrity = N
RecacSecondaries = N
RecalcTotals = N
Pack = N

[UnloadData]
UnloadToFile = unload
IncludeUserDef = Y

[SaveData]
SaveToFile = save

[/more](для dbf) и [more=Backup_n.txt][General]
Output = log.txt
Quit = Y
CheckAndRepair = N
UnloadData = Y
SaveData = N

[CheckAndRepair]
Repair = N
PhisicalIntegrity = N
Reindex = Y
LogicalIntegrity = N
RecacSecondaries = N
RecalcTotals = N
Pack = N

[UnloadData]
UnloadToFile = unload
IncludeUserDef = Y

[SaveData]
SaveToFile = save

[/more](для sql)
Автор: aChikatillo
Дата сообщения: 26.11.2007 11:23

Цитата:
Так завершение сессии можно настроить в настройках конкретного пользователя

Поподробней можно? где а настройках пользователя можно настроить что бы канкретного пользователя сессия не завершалась?
Автор: Fejerverk
Дата сообщения: 27.06.2008 13:53
Через SQL Манагер отлично бэкапит ....
Даж если пользователь там что то шерудят ...
Потом все красиво восстанавливается, хотя народ конечно лучше выгать - а то пищат потом о потере документов ....=)

Страницы: 123456

Предыдущая тема: Объединить диски разных компов в сети в один виртуальный


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.