Скрипты для бэкапа файловой 1С

Скрипты для бэкапа файловой базы 1С Предприятия

Для ежедневных работ по архивации баз данных 1С Предприятия в файловом варианте я использую программу Handy Backup.

Программка конечно удобная, но это все же сторонний софт, который приходится ставить на сервер. И такое решение конечно подходит, к сожалению не всем и не всегда.

Альтернативой всегда были батники (скрипты), которые пользователи в основном запускают либо руками, когда требуется создать резервную копию базы, или, зарядив скрипт в «планировщик заданий windows», который по расписанию запускает уже эти скрипты. Фирма 1С рекомендует создавать резервную копию файловой базы путем копирования файлов базы.

И хоть на практике бэкап сделанный выгрузкой в *dt (на малых файловых базах) меня еще не подводил, но тем не менее существует небольшой риск что Вы из такого бэкапа можете не восстановить потом базу 1С. (Так пишет 1С).

Что ж, игнорировать это предупреждение нет смысла, так как есть, конечно, простые способы правильно «забэкапить» файловую базу, как программой, так и скриптом. Собственно в этой статье я расскажу и поделюсь скриптами, что делают бэкапы путем копирования файлов.

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

О скриптах…

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

И так первый скрипт это VBS.

Visual Basic

Option Explicit
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim MySource, MyTarget, MyZipName, MyHex, MyBinary, i
Dim oShell, oApp, oFolder, oCTF, oFile
Dim oFileSys
MySource = "C:\Users\AdminKuhar\Documents\1C\DemoTrade\"
MyTarget = "E:\DemoTrade.zip"
MyHex = Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
For i = 0 To UBound(MyHex)
MyBinary = MyBinary & Chr(MyHex(i))
Next
Set oShell = CreateObject("WScript.Shell")
Set oFileSys = CreateObject("Scripting.FileSystemObject")
Set oCTF = oFileSys.CreateTextFile(MyTarget, True)
oCTF.Write MyBinary oCTF.Close Set oCTF = Nothing
Set oApp = CreateObject("Shell.Application")
Set oFolder = oApp.NameSpace(MySource)
If Not oFolder Is Nothing Then
oApp.NameSpace(MyTarget).CopyHere oFolder.Items End If
wScript.Sleep(5000)
Set oFile = Nothing
On Error Resume Next
Do While (oFile Is Nothing)
Set oFile = oFileSys.OpenTextFile(MyTarget, ForAppending, False)
If Err.number <> 0 then Err.Clear wScript.Sleep 3000
End If Loop
Set oFile=Nothing
Set oFileSys=Nothing

Он быстро упакует Вашу файловую базу 1С в *zip архив и создаст его на диске, что Вы укажете.

Работает быстро и просто.

Из настроек, что нужно сделать:

MySource = “C:\Users\AdminKuhar\Documents\1C\DemoTrade\” -Каталог с базой 1С.

MyTarget = “E:\DemoTrade.zip” -Куда поместить «бэкап».

Во втором варианте мы используем *bat файл который выполнит «бэкап» нашей базы в нужное место и упакует его в *rar архив.

@echo off REM chcp 1251
copy C:\Users\AdminKuhar\Documents\1C\DemoTradeEntr\1Cv8.1CD C:\1Cv8.1CD set hour=%time:~0,2%
if %hour% lss 10 set hour=0%time:~1,1%
set namefiles=%date:~8,2%%date:~3,2%%date:~0,2%%hour%%time:~3,2%%time:~6,2% C:\Progra~1\WinRAR\RAR.exe m -m5 E:\Arhiv\%namefiles%.rar C:\1Cv8.1CD copy E:\Arhiv\%namefiles%.rar \\freenas\backup\%namefiles%.rar

Особенность скрипта в том что во первых он копирует только сам файл 1Cv8.1CD (без логов и прочего, другими словами делает «бэкап» довольно быстро и с отображением прогресса выполнения работы + дает понятное имя архиву в виде текущий даты).

Конечно, здесь требуется архиватор WinRAR.

Настройки также предельно простые, нужно лишь указать, что и куда копируем.

И вот еще один вариант бэкапа.

Этот способ нравиться мне больше всего, так как работает очень быстро и что главное безопасно! (очень надежный).

"C:\Program Files\7-Zip\7z.exe" u -ssw -mx0 -mmt2 -ms=off -r E:\Arhiv\m_backup.7z
@"E:\Arhiv\listbackup.txt" >> E:\Arhiv\m_backup_%date%.log

Им можно «забэкапить» сразу все нужные базы.

Вместе с «бэкапом» создается подробный лог файл,

Так Вы точно будете знать, если что-то пошло не так при его создании!

Чтоб скрипт заработал у Вас:

  1. В том месте откуда Вы будете его запускать нужно создать файлик простой текстовый (listbackup.txt), и в него поместить адреса (указать пути к папкам с базами 1С).

  1. Нужно установить архиватор 7Zip.

Кстати вот расшифровка параметров:

u — Обновление файлов в архиве. Если файла нет, создает новый.

-ssw — Включить файл в архив, даже если он в данный момент используется. Для резервного копирования очень полезный ключ.

-mx0 —Не используем сжатие (Для скорости создания бэкапа!).

-mmt2 — использовать два потока (пригодится при обновлении архива).

-ms=off — по дефолту создаются solid-архивы. отключаем ибо они работают медленнее. возможно, для mx0 — некритично, но для mx1 и т.д. — оптимальнее.

-r — рекурсивно обрабатывать поддиректории. e:\Backup_Base1S.7z — результирующий файл архива.

@«e:\listbackup.txt» — (файл в UTF8 нужно сохранить) с папками, которые следует “забэкапить”.

>> e:\m_backup_%date%.log — все (удачные и неудачные) результаты пишем в лог с датой.

Абсолютно все скрипты можно модернизировать, например написать команду для “выгона” пользователей из базы 1С. (Тот же TASKKILL и другие.)

Внимание!

Последний скрипт для “бэкапа” баз 1С, может создавать резервную копию даже если в базе 1С работают пользователи, НО это не значит что такой “бэкап” считается хорошим.

Всегда нужно предварительно завершить работу пользователей и только потом делать копию!

Last updated