SemanticBackup is a .NET 8 backup service for SQL Server, MySQL, and MariaDB with a web dashboard, background workers, automatic scheduling, compression, and optional delivery targets (FTP, SMTP, Dropbox, Object Storage, and download links).
SemanticBackup continuously runs background jobs that:
- Read configured resources and databases from
Configs/appsettings*.json. - Generate backup schedules from each database
BackupEveryHrsvalue. - Queue and execute backups.
- Compress backup files to
.zip(if enabled). - Dispatch uploads/deliveries to enabled targets.
- Track status in real time for the dashboard.
- Send notification emails when backup or upload failures occur (if enabled).
All runtime configuration is loaded from:
SemanticBackup/Configs/appsettings.jsonSemanticBackup/Configs/appsettings.Development.jsonSemanticBackup/Configs/appsettings.Docker.json
Controls dashboard login accounts.
- Identity key is
EmailAddress. - At least one admin user should be configured.
Array of backup resources.
Each item defines:
Name: friendly resource nameType:SQLSERVER,MYSQL, orMARIADBConnectionString: database server connectionDatabases: list of database backup rulesNameBackupEveryHrsFullBackup
UploadTo: enabled delivery types for this resource
Global settings for each upload channel:
DownloadLinkFtpSmtpObjectStorageDropbox
These values are used when a resource enables the matching upload type in UploadTo.
Global failure alert settings:
NotifyOnBackupFailureNotifyOnUploadFailureNotifyEmailDestinations(array of email addresses)
Core runtime options:
DefaultBackupDirectoryBackupFileSaveFormatMaxWorkersAutoCompressToZipBackupExpiryAgeInDaysExecutionTimeoutInMinutesInDepthBackupRecordDeleteEnabled- SMTP system mail options used by notification service
{
"AdminUsers": [
{
"FullName": "Administrator",
"EmailAddress": "admin@example.com",
"Password": "change-me",
"Timezone": "Africa/Nairobi",
"TimezoneOffset": "+03:00"
}
],
"BackupConfigurations": [
{
"Name": "Main SQL Server",
"Type": "SQLSERVER",
"ConnectionString": "Server=127.0.0.1,1433;User ID=sa;Password=StrongPassword;TrustServerCertificate=True;",
"Databases": [
{
"Name": "test-db",
"BackupEveryHrs": 3,
"FullBackup": true
}
],
"UploadTo": [ "downloadLink", "ftp", "smtp" ]
}
],
"UploadConfigurations": {
"DownloadLink": {
"UseShortDownloadLink": true
},
"Ftp": {
"Server": "ftp.example.com",
"Username": "ftp-user",
"Password": "ftp-password",
"Directory": "/backups/"
},
"Smtp": {
"SMTPEnableSSL": true,
"SMTPHost": "mail.smtp.domain.com",
"SMTPPort": 587,
"SMTPEmailAddress": "your.smtp@email-here.com",
"SMTPEmailCredentials": "#your.smtp.password#",
"SMTPDefaultSMTPFromName": "SEMANTIC SYSTEM BACKUP",
"SMTPDestinations": "ops@example.com"
}
},
"NotificationConfigs": {
"NotifyOnBackupFailure": false,
"NotifyOnUploadFailure": false,
"NotifyEmailDestinations": [ "ops@example.com" ]
},
"SystemConfigOptions": {
"DefaultBackupDirectory": "c:\\backups\\",
"BackupFileSaveFormat": "{{database}}\\{{database}}-{{datetime}}.{{databasetype}}.bak",
"MaxWorkers": 2,
"AutoCompressToZip": true,
"BackupExpiryAgeInDays": 7,
"ExecutionTimeoutInMinutes": 10,
"InDepthBackupRecordDeleteEnabled": true
}
}docker pull ghcr.io/swagfin/semantic-backup:latest
docker run -d -p 8080:8080 ghcr.io/swagfin/semantic-backup:latestUse the web dashboard to:
- Monitor resources and database backup activity
- Inspect backup and delivery status
- View real-time updates from SignalR streams
Dashboard with backup metrics and status visualization.
Database backup execution and tracking.
SemanticBackup is released under the MIT License.