Authagonal.Backup
0.25.2
dotnet add package Authagonal.Backup --version 0.25.2
NuGet\Install-Package Authagonal.Backup -Version 0.25.2
<PackageReference Include="Authagonal.Backup" Version="0.25.2" />
<PackageVersion Include="Authagonal.Backup" Version="0.25.2" />
<PackageReference Include="Authagonal.Backup" />
paket add Authagonal.Backup --version 0.25.2
#r "nuget: Authagonal.Backup, 0.25.2"
#:package Authagonal.Backup@0.25.2
#addin nuget:?package=Authagonal.Backup&version=0.25.2
#tool nuget:?package=Authagonal.Backup&version=0.25.2
Authagonal.Backup
Programmatic backup, restore, merge, and rollup for Authagonal's Azure Table Storage data. This is the library that backs the Authagonal.Backup CLI, use it directly when you need the same operations from inside a host process (background services, custom orchestration).
Quick start
using Authagonal.Backup;
using Azure.Data.Tables;
var serviceClient = new TableServiceClient(connectionString);
// Backup
var backupOptions = new BackupOptions
{
Tables = BackupDefaults.Tables,
Incremental = false,
Gzip = true,
};
var target = new FileSystemBackupTarget("./backups");
var backup = new BackupService(serviceClient, target, backupOptions);
await backup.RunAsync(ct);
// Restore
var restoreOptions = new RestoreOptions { Mode = RestoreMode.Upsert, ManifestKey = manifestKey };
var source = new FileSystemBackupSource("./backups/20260426-120000");
var restore = new RestoreService(serviceClient, source, restoreOptions);
var result = await restore.RunAsync(ct);
Integrity
The manifest records a SHA-256 per file, and restore verifies each one from the same read it applies
the entities from. Those hashes establish that the archive matches the manifest — not that either is
authentic, because the manifest sits on the same target as the data: whoever can rewrite
Clients.jsonl.gz can rewrite the line recording its hash.
BackupOptions.ManifestKey (CLI: --manifest-key) closes that by HMAC-ing the manifest, and
RestoreOptions.ManifestKey verifies it. Keep the key outside the backup target — a MAC key
stored beside the archive reproduces exactly the circularity it exists to remove.
Restore fails closed: with no ManifestKey it refuses rather than warning, and
AllowUnauthenticatedManifest is the explicit opt-out for an archive written before manifest signing.
A file listed in the manifest but missing from the store aborts the restore, as does one present but
unlisted.
Surface
| Type | Purpose |
|---|---|
BackupService |
Reads tables, writes JSONL (optionally gzipped) plus a _manifest.json with per-file SHA-256 hashes |
RestoreService |
Verifies hashes, decompresses gzip, writes back into Table Storage in Upsert / Merge / Clean modes |
MergeService |
Combines multiple backup sets into one |
RollupService |
Folds incrementals into a fresh full backup |
IBackupSource / IBackupTarget |
Abstractions for plugging in non-filesystem stores |
FileSystemBackupSource / FileSystemBackupTarget |
Default filesystem implementations |
BackupManifest / TableBackupInfo |
The serialized manifest schema |
BackupDefaults |
Default table list, every persistent Authagonal table, transient ones excluded |
BackupOptions / RestoreOptions / RestoreMode |
Per-run configuration |
See also
- Backup & Restore docs, full CLI reference, scheduling, Docker images.
Packages
| Package | Description |
|---|---|
| Authagonal.Core | Core models, interfaces, and abstractions |
| Authagonal.AzureProvider | Azure Table Storage backend |
| Authagonal.Backup | Backup/restore/merge/rollup library and CLI |
| Authagonal.Server | Full auth server, endpoints, middleware, services, login UI |
Links
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Azure.Data.Tables (>= 12.11.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.25.2 | 47 | 8/12/2026 |
| 0.24.0 | 113 | 8/7/2026 |
| 0.23.0 | 96 | 8/5/2026 |
| 0.22.1 | 99 | 8/4/2026 |
| 0.22.0 | 96 | 8/3/2026 |
| 0.21.0 | 94 | 7/30/2026 |
| 0.20.0 | 161 | 7/27/2026 |
| 0.19.0 | 102 | 7/27/2026 |
| 0.18.0 | 114 | 7/27/2026 |
| 0.17.5 | 89 | 7/27/2026 |
| 0.17.4 | 101 | 7/27/2026 |
| 0.17.3 | 105 | 7/27/2026 |
| 0.17.2 | 89 | 7/27/2026 |
| 0.17.1 | 92 | 7/26/2026 |
| 0.17.0 | 88 | 7/26/2026 |
| 0.16.5 | 89 | 7/26/2026 |
| 0.16.4 | 97 | 7/26/2026 |
| 0.16.3 | 96 | 7/26/2026 |
| 0.16.2 | 93 | 7/25/2026 |
| 0.16.1 | 104 | 7/25/2026 |