AegisGrid backs up files and block devices (images, LVM volumes, partitions, whole disks) and restores them. Every backup goes into a deduplicating store as a run: the agent cuts the source into pieces (chunks) whose boundaries follow the content, and stores only the chunks the store does not have yet. Every run is complete on its own and can be restored by itself. The data is compressed with zstd or lz4, encrypted on the client if wanted and sent to a backup server (bkp_target) over TLS.
This manual is written for administrators: they set up and run backups, the backup server and restores.
Readers who know version 1 with FULL, DIFF and INC backups find a comparison and a checklist for the update in Chapter 27 (“Switching from FULL/DIFF/INC”).
All examples work as printed; the output shown comes from real test runs. Where an example only works on a real LVM system, under Windows or with a hypervisor, it says so.
1.1 What AegisGrid can do#
- Deduplicated snapshots. Every backup is a complete point in time, but only what the store does not have yet is stored. There are no chains, no DIFF and no merging. Deduplication covers everything in the store, so also machines that share a store.
- Content-defined chunks (FastCDC). If something is inserted near the start of a source, the boundaries after it do not move; the following chunks stay the same and are recognized.
- A familiar view: the first run of a backup name is called Full, all later ones Incremental. This is only for orientation: every run can be restored on its own.
- Free space is skipped. On ext2/3/4 and NTFS the agent reads only the used space. Zero areas are recorded as holes, not stored.
- Consistent backups of running systems: LVM snapshots (Linux), VSS shadow copies (Windows) and freely configurable hooks.
- Files and folders: instead of whole disks, single paths can be backed up too, with permissions, ACLs and exclusions; single files, whole folders, earlier versions or a ZIP archive come back, and a run can be viewed as a folder. A ransomware warning protects the older states (Chapter 9).
- Network backup: the agent streams straight to
bkp_target, fully TLS-encrypted (the server certificate is pinned), with sign-in by API keys that are bound to directories. Only what the store on the server is missing is sent. - Encryption on the client (AES-256-GCM or ChaCha20-Poly1305, per store): the server sees neither content nor keys.
- Several destinations in one run (sinks): up to 8 stores, local and on servers; the source is read only once.
- Parallel and fast: reader, chunker and several workers (hash and compression) work as a pipeline; SHA-256 uses SHA-NI/AVX2 where available; with
--hash blake3the CPU load of hashing drops markedly. - Protecting the data: retention per run, scrub (checking all data), repair from a second copy, partial restore of damaged backups, mirroring whole stores, also into S3 object storage, export of single runs as an archive (tape, USB) and WORM locks.
- Signed updates:
bkp_updaterinstalls updates atomically, tests them first and rolls back by itself if something goes wrong.
1.2 The programs#
| Program | Task | Platform |
|---|---|---|
bkp_agent | Backs up a block device, an image file or files and folders into one or more stores: local (--out), onto a server (--target) or through named sinks | Linux, Windows |
bkp_restore | Restores a run to a file or a block device: from a local store, straight from the server, from the sinks of a profile or from an archive; from file backups single files and folders, also as a ZIP or as a folder to look at | Linux, Windows |
bkp_target | Backup server: receives backups over TLS into its stores, API key ACL, optionally its own scheduler | Linux |
bkp_maintenance | Retention (prune, set-retention), deleting runs, scrub, repair, mirroring, export/import, store-info; creating API keys, certificates and keys | Linux |
bkp_monitor | Live view of the progress of running agents and restores (ncurses) | Linux |
bkp_dump | Shows a store, its runs and the manifest of a run (segments, chunks, holes) | Linux, Windows |
bkp_restore_legacy | Reads backups in the old FULL/DIFF/INC format of version 1 (list, restore, prune, delete) | Linux, Windows |
bkp_sched | Job scheduler: starts jobs on a schedule, once or after other jobs; mail notification, HTTPS API for conf clients. On Windows as the service aegisgrid-sched, only backups with bkp_agent and Hyper-V | Linux, Windows |
bkp_console | Management console: shows and controls the job schedulers (bkp_sched) of one or more machines through their HTTPS API, with a window | Windows |
bkp_target_console | Target console: manages and watches one or more backup servers (bkp_target) through the Target API, with a window | Windows |
bkp_updater | Checks an HTTPS server for signed updates and installs them | Linux, Windows |
bkp_sitesrv | Site server: keeps the own targets and the schedulers released for consoles of an account in step, hosted by AegisGrid, in your own network or at a partner (chapter “Site server”) | Linux, Windows |
bkp_license | Activation of the installation with an activation code or by file, license status, renewal, freeing a seat (Chapter 23) | Linux, Windows |
bkp_setup | Installer: downloads the chosen components from the update server, installs and sets them up (text wizard on Linux, window on Windows, --silent) | Linux, Windows |
bkp_m365 | Backs up Microsoft 365 (mail, calendars, contacts, tasks, OneDrive, SharePoint) of an account or tenant | Linux |
bkp_m365_restore | Lists, searches and exports M365 backups and writes them back into Microsoft 365 | Linux |
bkp_hyperV | Backs up a Hyper-V VM through a recovery checkpoint as one VM run, after the first backup only the changes (RCT) | Windows |
bkp_hyperV_restore | Restores a VM run of bkp_hyperV as a new VM or single disks as VHDX files | Windows |
Every program has --help.
1.3 Basic terms#
| Term | Meaning |
|---|---|
| Store | Directory <store>.cbs (name with --store, default default) that holds the backups: below the --out directory or on the server below <storage>/<directory>/. Deduplication covers everything in the store. |
| Run | One backup: backup name, point in time, sizes, retention and the reference to its data. A run only comes into being once all data is safely in the store, and it can be restored on its own. |
| Name | Free name of the backup (--name), for example per machine or volume. All runs of a name form its timeline. |
| Chunk | A piece of the source (256 KiB on average) whose boundaries FastCDC sets by the content. Every chunk is recognized by its content hash (the ID) and stored only once. |
| Full / Incremental | Shown in lists and mails: the first run of a name in a generation is called Full, every later one Incremental. Both are equally complete. |
| Generation | A new, independent store <store>.g<YYYYMMDD>.cbs next to the old one that shares no data with it (physically independent base). Starts with --type full or automatically after --store-generation. |
| Sink | A destination of a run: a store, local or on a server. A run can write into several sinks at once; each one gets its own run. |
| Archive | A single run as one file (.cba, bkp_maintenance export), readable without a store; for tape, a USB disk or auditors. |
| Snapshot | A frozen point in time of a volume (LVM) or a shadow copy (VSS), so that the image matches one point in time. |
| API key | Secret key with which an agent signs in to bkp_target. In the ACL a key is bound to one or more directories. |
| Manifest | Signed list of the updates available on the update server. |
1.4 Overview of the flows#
Data flow
Source (volume/file) Destination
┌──────────────┐ snapshot ┌───────────┐ local ─────────► directory (--out)
│ /dev/vg0/data├────────────►│ bkp_agent │
└──────────────┘ (LVM/VSS) └─────┬─────┘ TLS ┌────────────┐ ┌─────────────┐
└───────────────►│ bkp_target ├──►│ /srv/backups│
└─────▲──────┘ └──────┬──────┘
│ TLS │ local
┌──────┴──────┐ ┌──────▼──────┐
target volume ◄───────────────────────────────── │ bkp_restore │◄──┤ store (.cbs)│
└─────────────┘ └─────────────┘