Формат DT — это встроенный механизм 1С для выгрузки/загрузки баз данных. Файл .dt содержит полную копию базы данных в сжатом виде.
rem Выгрузка базы в DT через командную строку 1С
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER ^
/S "server01\accounting" ^
/N "Администратор" /P "password" ^
/DumpIB "E:\Backups\DT\accounting_%date:~6,4%%date:~3,2%%date:~0,2%.dt" ^
/Out "E:\Backups\DT\dump.log"
rem Проверка результата
if %errorlevel% neq 0 (
echo ERROR: DT dump failed! >> E:\Backups\DT\dump.log
exit /b 1
)
Важно: выгрузка DT блокирует базу — пользователи не смогут работать во время выгрузки. Для крупных баз (более 50 ГБ) выгрузка может занимать часы. Используйте этот метод для:
- Еженедельного полного бэкапа в нерабочее время
- Переноса базы между серверами
- Бэкапа перед обновлением конфигурации
Полный скрипт бэкапа с выгрузкой DT, ротацией и уведомлениями:
# backup-1c-dt.ps1
param(
[string]$Server = "server01",
[string]$Database = "accounting",
[string]$User = "Администратор",
[string]$Password = "password",
[string]$BackupDir = "E:\Backups\DT",
[int]$RetainDays = 14
)
$1CExe = "C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe"
$date = Get-Date -Format "yyyyMMdd_HHmm"
$dtFile = "$BackupDir\${Database}_${date}.dt"
$logFile = "$BackupDir\${Database}_${date}.log"
# Выгрузка
$proc = Start-Process -FilePath $1CExe -ArgumentList @(
"DESIGNER",
"/S `"$Server\$Database`"",
"/N `"$User`"", "/P `"$Password`"",
"/DumpIB `"$dtFile`"",
"/Out `"$logFile`""
) -Wait -PassThru -NoNewWindow
if ($proc.ExitCode -ne 0 -or -not (Test-Path $dtFile)) {
Write-Error "DT dump failed! See $logFile"
# Отправка уведомления
Send-MailMessage -To "admin@corp.local" -From "backup@corp.local" `
-Subject "FAIL: 1C Backup $Database" -Body (Get-Content $logFile -Raw) `
-SmtpServer "mail.corp.local"
exit 1
}
# Размер файла
$size = [math]::Round((Get-Item $dtFile).Length / 1GB, 2)
Write-Host "Backup OK: $dtFile ($size GB)"
# Ротация
Get-ChildItem $BackupDir -Filter "${Database}_*.dt" |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$RetainDays) } |
Remove-Item -Force
Write-Host "Old backups cleaned (retain $RetainDays days)"
Оставить комментарий