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

  1. Спасибо большое за статью. Как раз сейчас стоит такая задача. Но файлы архивных копий нужно сохранять на ftp ресурсе. Подойдут ли эти скрипты для такой задачи или какие изменения нужно внести в скрипт, чтобы сохранение бэкапов (архивов) производилось на ftp ресур? Скорость записи на ресурс весьма низкая и результат не всегда предсказуем — бывают срыв сеанса записи. Возможно даже лучше сохранять сначала на локальный диск, а потом перемещать на ресурс с возможностью повторного копирования, при сбое.

      1. Здравствуйте, Богдан.
        Спасибо за совет.

        6 октября 2017 г., 10:38 пользователь Disqus написал:

  2. chcp 1251
    @echo off
    set day=%DATE:~0,2%
    set month=%DATE:~3,2%
    set year=%DATE:~6,4%
    if exist G:timearhProgi_01*.rar del G:timearhProgi_01*.rar
    «E:ProgProbWinRarWinRAR.exe» a -r -m5 G:timearhProgi_01_%year%-%month%-%day%.rar E:Progi
    if exist G:arhivProgi_03*.rar del G:arhivProgi_03*.rar
    if exist G:arhivProgi_02*.rar ren G:arhivProgi_02*.rar Progi_03.rar
    if exist G:arhivProgi_01*.rar ren G:arhivProgi_01*.rar Progi_02.rar
    xcopy G:timearhProgi_01_*.rar G:arhiv

    Батник закинуть в планировщик, для запуска по расписанию
    Создает в папке «arhiv» — архив нужного файла.
    Хранит последние 3 архива. ( **_01, **_02, **_03)
    При создании четвертого, удаляет самый старый (***_03).
    (Можно настроить на хранение сколько угодно архивов.)

    Создает копию, в папке «timearh» крайнего по времени создания архива (**_01)

    E:ProgProbWinRarWinRAR.exe — путь к архиватору
    E:Progi — папка. которую архивируем.
    G:arhiv — папка на нужном диске для хранения архивов
    G:timearh — папка для хранения копии крайне созданного архива.
    Progi_ — имя под которым создаем архив.
    Все пути (папки) англ буквы!

  3. Не знаю как тут относятся, но для работы с базами, особенно что касается бэкапов и обновления, втч облачных — не видел пока ничего лучше «Обновлятора 1с». Может быть автор сайта пропустил этот продукт, может сознательно игнорирует. Но простому человекупрограммистуразработчику, можно поставить обновлятор и забыть Handy или другие утилиты + кучи скриптов как страшный сон.

    1. Джонни, я рекомендую программу Handy так как ее использую уже очень давно (работает замечательно).Но Вы вправе рекомендовать то что Вам больше по душе.

      1. Я сам когда то пытался использовать бесплатную (с поддержкой Я.Диска) и платную версию Handy, но столкнулся с несколькими глюками при работе программы в режиме службы + когда администратор не один а двое. Также недостаточно гибкие возможности настроить глубину хранения ( количество дневных, недельных, месячных, квартальных, годовых) копий, отдельно настроить глубину для облачного хранения. Ну и естественно, не умеет автоматически бэкапить базы перед обновлениями, опасными операциями и тд. Но как я понял, вы для вышеперечисленного используете свой продукт в связке с Handy. Наверное, тоже вполне рабочее решение.

        1. Основных возможностей Handy хватит большинству пользователей. Один администратор должен отвечать за бэкапы (в основном). Создаете учетку с нужными правами, под ней и работает Handy. Обновлениями в 1С в первую очередь должен заниматься программист 1С (админ редко). Обновлятор вещь больше для разработчика. Handy бэкапит не только 1С (Часто бэкапить нужно много всего вместе — например те же базы MySQL). Универсальное решение.

    2. Обновлятор прекрасен. Кроме шуток, очень хорошо сделан и каждая настройка разжёвана прям в контекстной справке.
      Мне кроме архивации баз нужно было ещё кое-что делать, поэтому я продолжаю использовать скрипты на PowerShell.
      Но для большинства людей Обновлятор — лучшее решение. Разумеется, если купить полную версию (за совершенно условные деньги, надо сказать).

  4. Еженощно:
    #Подгрузим переменные
    . C:UsersАдминистраторDocumentsScriptsПеременные.ps1

    #Остановим службу Сбербанк Бизнес Онл@йн
    #Stop-Service -Name SberBank_BO

    #Очистим очередь печати
    Stop-Service -Name Spooler -Force
    Remove-Item c:WindowsSystem32spoolPRINTERS*
    Start-Service -Name Spooler

    #Удаляем старые файлы в рабочих папках
    #Создадим список путей, где нужно удалить файлы
    [string[]]$TempDir = $(resolve-path C:Users*AppDataLocalTemp) + «C:UsersPublicDocumentsScanfiles»
    #Удалим все файлы старше семи дней
    foreach ($elm in $TempDir) { Get-ChildItem $elm -recurse | Where-Object { $_.LastWriteTime -lt $(Get-Date).AddDays(-7) } | Remove-Item -recurse -force}

    #Удаляем архивы старше одного месяца
    $include = @(‘1CBases-*.7z’,’Docs-*.7z’,’CommonDocs-*.7z’)
    Get-ChildItem «$BackUp*» -recurse -Include $include | Where-Object { $_.LastWriteTime -lt $(Get-Date).AddDays(-30) } | Remove-Item

    #Перемещаем архивы SPU_ORB
    #move-item -path «C:Program Files (x86)Spu_orbARHIV*» -destination $BackUp

    #Архивируем базы 1С, за исключением файлов, указаных в exclud_1C.txt
    $ArchName = «1CBases-$(get-date -uformat %d-%m-%Y).7z»
    &7Zip a «$BackUp$ArchName» $Param `-xr@`»c:Program Files7-Zipexclud_1C.txt`» `-p$Password «$1CBases*»

    #Архивируем файлы находящиеся в личных документах и на рабочих столах пользователей
    #Создадим список файлов, изменённых за последние сутки
    $AddArch = foreach ($element in $(resolve-path «C:Users*Documents», «C:Users*Desktop»)) {Get-ChildItem $element* -recurse -include $Filetype | Where-Object {$_.LastWriteTime -gt $(Get-Date).AddDays(-1)}}
    Out-File -FilePath $SourcePath -encoding UTF8 -InputObject $(foreach ($element in $AddArch) {$element.fullname -replace «C:\Users\»})
    #Задаём команды архиватору
    $ArchName = «Docs-$(get-date -uformat %d-%m-%Y).7z»
    Set-Location C:Users
    &7Zip a «$BackUp$ArchName» -mx9 -mhe `-p$Password `@$SourcePath
    Remove-Item $SourcePath

    #Архивируем общие документы
    #Создадим список файлов, изменённых за последние сутки
    $AddArch = $(Get-ChildItem $CommonDocs* -recurse -include $Filetype | Where-Object {$_.LastWriteTime -gt $(Get-Date).AddDays(-1)})
    Out-File -FilePath $SourcePath -encoding UTF8 -InputObject $(foreach ($element in $AddArch) {$element.fullname -replace «C:\Users\Public\Documents\»})
    #Задаём команды архиватору
    $ArchName = «CommonDocs-$(get-date -uformat %d-%m-%Y).7z»
    Set-Location $CommonDocs
    &7Zip a «$BackUp$ArchName» -mx9 -mhe `-p$Password `@$SourcePath
    Remove-Item $SourcePath

  5. Файл «Еженощно.ps1»

    #Подгрузим переменные
    . C:UsersАдминистраторDocumentsScriptsПеременные.ps1

    #Архивируем базы 1С, за исключением файлов, указаных в exclud_1Cm.txt
    $ArchName = «1CBasesFull-$(get-date -uformat %d-%m-%Y).7z»
    &7Zip a «$BackUp$ArchName» $Param `-xr@`»c:Program Files7-Zipexclud_1Cm.txt`» `-p$Password «$1CBases*»

    #Архивируем все файлы пользователей
    $AddArch = foreach ($element in $(resolve-path «C:Users*Documents», «C:Users*Desktop»)) {Get-ChildItem $element* -recurse -include $Filetype}
    Out-File -FilePath $SourcePath -encoding UTF8 -InputObject $(foreach ($element in $AddArch) {$element.fullname -replace «C:\Users\»})
    #Задаём команды архиватору
    $ArchName = «DocsFull-$(get-date -uformat %d-%m-%Y).7z»
    Set-Location C:Users
    &7Zip a «$BackUp$ArchName» $Param `-p$Password `@$SourcePath
    Remove-Item $SourcePath

    #Архивируем все общие документы
    $AddArch = $(Get-ChildItem $CommonDocs* -recurse -include $Filetype)
    Out-File -FilePath $SourcePath -encoding UTF8 -InputObject $(foreach ($element in $AddArch) {$element.fullname -replace «C:\Users\Public\Documents\»})
    #Задаём команды архиватору
    $ArchName = «CommonDocsFull-$(get-date -uformat %d-%m-%Y).7z»
    Set-Location $CommonDocs
    &7Zip a «$BackUp$ArchName» $Param `-p$Password `@$SourcePath
    Remove-Item $SourcePath

    #Архивируем ключи подписей
    $ArchName = «KeyDisk-$(get-date -uformat %d-%m-%Y).7z»
    Set-Location Z:
    &7Zip a «$BackUp$ArchName» $Param `-p$Password * -r

  6. Файл «Переменные.ps1»

    #Задаём сквозные переменные
    set-alias 7Zip «$env:ProgramFiles7-Zip7z.exe»
    $Password = «Мой невероятный пароль» #Этот пароль используем для всех архивов
    $Filetype = «*.xls*»,»*.doc*»,»*.od*»,»*.rtf»,»*.txt»,»*.xml»,»*.jpg»,»*.tif*»,»*.pdf»,»*.png»,»*.lnk»
    $Param = «-slp»,»-ms=2g»,»-mx=9″,»-mhe»,»-m0=LZMA2:d=64m:fb=64″,»-mmt=8″,»-v9g» #Параметры архиватора для больших объёмов
    $BackUp = «C:UsersАдминистратор.WIN-AUTKLLF494MYandexDiskFirmaNameСервер»
    $CommonDocs = «C:UsersPublicDocuments»
    $1CBases = «C:UsersPublic1CBases»
    $SourcePath = «C:UsersАдминистраторDocumentsaddarch.txt»

  7. Раньше я отправлял файлы в хранилку по FTP. Сейчас (как видно из остальных скриптов) сохраняю в папку Яндрес.Диска — они сами улетают в облако. Гораздо удобней и надёжнее.
    Тем не менее кому-то может пригодиться:

    Файл «FTP.ps1»
    #Отправляем файлы по FTP в укромное место
    #Создаём список файлов, подлежащих отправке
    $CopyList = Get-ChildItem E:BackUp* | Where-Object { $_.LastWriteTime -gt $(Get-Date).AddHours(-12) } | foreach {Write-Output «send $_»}
    #Готовим коммандный файл для FTP
    $FTPCommand = «open 77.55.55.55», «name», «password», «binary»
    $FTPTrans = $FTPCommand + $CopyList + «bye»
    Out-File -FilePath C:TempFTPTrans.txt -encoding ASCII -InputObject $FTPTrans
    #Запусткаем ftp с указанием коммандного файла
    &c:WindowsSystem32ftp.exe -s:C:TempFTPTrans.txt
    Remove-Item C:TempFTPTrans.txt

  8. Файлы exclud_*.txt поместить в каталог «c:Program Files7-Zip»

    exclud_1C.txt
    *.cdx
    *.zip
    *.rar
    *ExtDb*
    *ExtForms*
    *NewStructure*
    *SYSLOG*

    exclud_1Cm.txt
    *.cdx
    *.zip
    *.rar
    *ExtDb*

    exclud_CommonDrv.txt
    *.mp3
    *.wav
    *.avi
    *.mpg
    *.mpeg

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

  9. @echo off
    set Today=%DATE%
    Set cfg=C:Program Files (x86)1cv8common1cestart.exe
    set baseway=D:1CR_WORK_JTI_ACC
    set keyway=F
    set user=
    set pass=
    set archivname=D:1Carchiv
    set basename=
    «%cfg%» CONFIG /%keyway%»%baseway%»/N %user% /P %pass% /DumpIB «%archivname%/%basename%_%Today%.dt»

  10. Архивирование на ubuntu сервере в облако на yandex.disk.
    Предварительно устанавливаем клиента yandex.disk на ubuntu c дистрибутива https://yandex.ru/support/disk/cli-clients.html

    Далее собственно скрипт, который запускается через cron ночью, получая циклический недельный архив.

    #архивируем файл *.1CD в имя пишем номер дня недели в отдельный каталог на сервере.
    tar -czPf /backup/buh/`date ‘+%u’`_buh_1Cv8.1CD.tgz /database/buh/1Cv8.1CD
    #копируем в каталог синхронизации яндекс диска
    cp /logs/backup/buh/`date ‘+%u’`_buh_1Cv8.1CD.tgz /data/backup_on_yandex
    #запускаем процесс синхронизации
    yandex-disk sync

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *