73. Backup Manager¶
The net.solarnetwork.node.backup.BackupManager
API provides SolarNode with a
modular backup system composed of Backup Services that provide storage for backup
data and Backup Resource Providers that contribute data to be backed up
and support restoring backed up data.
The Backup Manager coordinates the creation and restoration of backups, delegating most of its functionality to the active Backup Service. The active Backup Service can be controlled through configuration.
The Backup Manager also supports exporting and importing Backup Archives,
which are just .zip
archives using a defined folder structure to preserve all backup resources
within a single backup.
This design of the SolarNode backup system makes it easy for SolarNode plugins to contribute resources to backups, without needing to know where or how the backup data is ultimately stored.
What goes in a Backup?
In SolarNode a Backup will contain all the critical settings that are unique to that node, such as:
- The node's security certificate
- SolarNetwork association details
- User accounts
- Settings
- and more
73.1 Configuration¶
The Backup Manager can be configured under the net.solarnetwork.node.backup.DefaultBackupManager
configuration namespace:
Key | Default | Description |
---|---|---|
backupRestoreDelaySeconds |
15 | A number of seconds to delay the attempt of restoring a backup, when a backup has been previously marked for restoration. This delay gives the platform time to boot up and register the backup resource providers and other services required to perform the restore. |
preferredBackupServiceKey |
net.solarnetwork.node.backup.FileSystemBackupService | The key of the preferred (active) Backup Service to use. |
73.2 Backup¶
The net.solarnetwork.node.backup.Backup
API defines a unique backup, created by a
Backup Service. Backups are uniquely identified with a unique key assigned by
the Backup Service that creates them.
A Backup
does not itself provide access to any of the resources associated with the backup.
Instead, the getBackupResources()
method of BackupService
returns them.
73.3 Backup Archive¶
The Backup Manager supports exporting and importing specially formed .zip
archives that contain a complete Backup. These archives are a convenient way to transfer
settings from one node to another, and can be used to restore SolarNode on a new device.
73.4 Backup Resource¶
The net.solarnetwork.node.backup.BackupResource
API defines a unique item
within a Backup. A Backup Resource could be a file, a database table, or anything that
can be serialized to a stream of bytes. Backup Resources are both provided by, and restored with,
Backup Resource Providers so it is up to the Provider implementation to
know how to generate and then restore the Resources it manages.
73.5 Backup Resource Provider¶
The net.solarnetwork.node.backup.BackupResourceProvider
API defines a
service that can both generate and restore Backup Resources. Each implementation
is identified by a unique key, typically the fully-qualified Java class name of the
implementation.
When a Backup is created, all Backup Resource Provider services registered in SolarNode will be
asked to contribute their Backup Resources, using the getBackupResources()
method.
When a Backup is restored, Backup Resources will be passed to their associated Provider with the
restoreBackupResource(BackupResource)
method.
73.6 Backup Service¶
The net.solarnetwork.node.backup.BackupService
API defines the bulk of the
SolarNode backup system. Each implementation is identified by a unique key, typically the
fully-qualified Java class name of the implementation.
To create a Backup, use the performBackup(Iterable<BackupResource>)
method, passing in the
collection of Backup Resources to include.
To list the available Backups, use the getAvailableBackups(Backup)
method.
To view a single Backup, use the backupForKey(String)
method.
To list the resources in a Backup, use the getBackupResources(Backup)
method.
73.6.1 FileSystemBackupService¶
SolarNode provides the net.solarnetwork.node.backup.FileSystemBackupService
default Backup Service
implementation that saves Backup Archives to the node's own file system.
73.6.2 S3BackupService¶
The net.solarnetwork.node.backup.s3
plugin provides the
net.solarnetwork.node.backup.s3.S3BackupService
Backup Service implementation that saves all
Backup data to AWS S3.