Резервное копирование базы 1С средствами PowerShell
Резервное копирование базы 1С средствами PowerShell объединяет проверяемый сценарий, расписание и журнал результатов в одном управляемом процессе. Такой подход подходит как администраторам небольших компаний, так и инженерам, обслуживающим несколько серверов и конфигураций.
Для файловой базы копируется каталог после остановки сервера 1С, а для серверной используется штатная команда SQL Server. Важно заранее определить допустимое окно, глубину архива, место хранения и порядок проверки восстановления.
Скрипт должен не только создавать копию, но и сообщать об ошибке, проверять размер результата и сохранять признак успешного завершения. PowerShell особенно удобен интеграцией с планировщиком Windows, сетевыми хранилищами и корпоративными средствами мониторинга.
Подготовка среды и выбор стратегии
Сначала определите режим работы информационной базы, путь к данным, версию платформы и учётную запись службы 1С. Для файлового режима проверьте каталог с файлом 1Cv8.1CD, для клиент-серверного — базу и экземпляр SQL Server. Не переносите файлы MDF и LDF вручную: их согласованность обеспечивает механизм резервного копирования SQL Server.
Выберите частоту копий по требуемой потере данных. Ежедневное локальное сохранение полезно для быстрого восстановления, но не заменяет хранение копий на другом сервере или в облачном хранилище. Проверьте свободное место, права доступа, срок хранения и возможность шифрования.
Перед запуском автоматизации выполните несколько ручных копий и проверьте их восстановление. Полезные материалы по автоматизации 1С помогут собрать единый регламент обслуживания без разрозненных инструкций.
Скрипт для файловой базы 1С
Для файловой базы сначала завершите работу пользователей и остановите службу 1С либо запускайте копирование только после подтверждения, что серверный процесс не использует файлы. Затем перенесите содержимое каталога во временную папку, упакуйте архив и удалите временные данные.
$ErrorActionPreference = 'Stop'
$Source = 'D:\1C\Bases\Company'
$Root = 'E:\Backup\1C'
$Stamp = Get-Date -Format 'yyyyMMdd_HHmmss'
$Stage = Join-Path $Root "stage_$Stamp"
$Archive = Join-Path $Root "Company_$Stamp.zip"
New-Item -ItemType Directory -Path $Stage -Force | Out-Null
Get-ChildItem -LiteralPath $Source -Force |
Copy-Item -Destination $Stage -Recurse -Force
Compress-Archive -Path "$Stage\*" -DestinationPath $Archive
Remove-Item $Stage -Recurse -Force
if (-not (Test-Path $Archive)) {
throw 'Архив резервной копии не создан'
}
Проверьте наличие архива и его размер; при сбое удалите незавершённый файл, чтобы планировщик не принял его за рабочую копию. Для крупных баз замените Compress-Archive на 7-Zip, поскольку встроенное сжатие имеет ограничения по размеру файлов. Храните архивы на отдельном диске и удаляйте их по возрасту и числу копий.
Резервная копия серверной базы SQL Server
В клиент-серверном режиме PowerShell вызывает BACKUP DATABASE. Путь в команде указывается на SQL Server, а не на компьютере, где запущен сценарий. Учётной записи процесса нужны права на создание копии, а целевой каталог должен существовать и быть доступен службе SQL Server.
$ErrorActionPreference = 'Stop'
$Server = 'SQL01'
$Database = 'Company'
$Folder = 'D:\SQLBackups'
$Stamp = Get-Date -Format 'yyyyMMdd_HHmmss'
$Path = (Join-Path $Folder "$Database_$Stamp.bak").Replace("'", "''")
$Query = "BACKUP DATABASE [$Database] TO DISK = N'$Path' WITH INIT, COMPRESSION, CHECKSUM, STATS = 10"
Invoke-Sqlcmd -ServerInstance $Server -Database master -Query $Query
Для автономного запуска используйте отдельную службу Windows и проверьте наличие модуля SqlServer. Если редакция SQL Server не поддерживает COMPRESSION, удалите этот параметр. После копирования выполните RESTORE VERIFYONLY, а затем регулярно восстанавливайте базу в тестовую среду.
Проверка архивов и журналирование
Полезная копия подтверждает не только существование файла. Скрипт должен записывать время запуска, режим работы базы, путь, размер, длительность и итоговый статус. Ошибки сохраняйте в отдельном журнале и отправляйте в систему мониторинга, а не оставляйте только в выводе консоли.
Для файловых архивов вычисляйте контрольную сумму SHA-256. Для SQL Server используйте RESTORE VERIFYONLY, проверяющий целостность резервной копии без полного восстановления. Регулярное пробное восстановление в отдельную среду выявляет проблемы с правами, повреждением файлов и несовместимыми версиями платформы.
Планировщик Windows и контроль задач
Задачу удобно регистрировать через диспетчер задач Windows: задайте ежедневный запуск, интервал завершения, повтор после сбоя и запрет параллельных экземпляров. Сценарий запускайте от отдельной доменной учётной записи, которой доступны только необходимые каталоги.
После создания задачи проверьте журнал диспетчера и код возврата PowerShell. Обратите внимание на обсуждения сообщества 1С: там можно сопоставить ошибку с опытом других администраторов и проверить редкие сценарии запуска. Резервная копия без подтверждения задачи и проверки архива считается незавершённым циклом.
Рекомендации для надёжной схемы копирования
Ниже — базовый набор требований, который стоит закрепить в регламенте эксплуатации. Он помогает связать создание копии с проверкой результата и восстановлением.
- Выбирайте частоту копий по реальным требованиям к потере данных и времени восстановления.
- Храните копии на изолированном носителе и шифруйте их при передаче или долгом хранении.
- Проверяйте архив после создания и выполняйте пробное восстановление не реже одного раза в месяц.
- Сохраняйте журнал запусков и отправляйте оповещение об ошибке ответственному администратору.
- Удаляйте старые копии по заданному правилу, не допуская заполнения диска.
При изменении структуры базы, пути хранения или параметров обновляйте сценарий и регламент вместе. Версионируйте файлы PowerShell в системе контроля версий, чтобы можно было вернуться к рабочей конфигурации и увидеть историю изменений.
Масштабирование и переход к автоматизации
Для нескольких баз соберите параметры в конфигурационный файл, а общую логику вынесите в функции: подключение, копирование, проверка, журналирование и очистка. Это уменьшит дублирование и позволит единообразно обрабатывать файловый и серверный режимы. Если данные из 1С поступают в KUBiK, включите обмен в отдельный контур проверки и восстановления.
Добавьте контроль свободного места, времени выполнения и числа успешных копий. При росте объёма переходите к потоковой передаче архива в сетевое хранилище и распределённому запуску задач, сохраняя те же проверки качества.
Назначьте ответственных и начните с пробного запуска на одной некритичной базе. После проверки восстановления закрепите расписание и переводите схему на остальные информационные базы.