This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

File Backup

Customize the files backup and restore to and from a backend storage.

1 - File backup configuration

Customize the files backup and restore to and from a backend storage.

Properties

To control all aspects of the file backup behavior.

PropertyTypeDefaultDescription
featureIdstringBackupAndRestoreFeature unique identifier in the scope of the edge digital twin
typestringfileType of the files that are backed up by this feature
contextstringedgeContext of the files backed up by this feature, unique in the scope of the type
dirstringDirectory to be backed up
modestringstrictRestriction on directories that can be dynamically selected for a backup, the supported modes are: strict, lax and scoped
backupCmdstringCommand to be executed before the backup is done
restoreCmdstringCommand to be executed after the restore
singleUploadboolfalseForbid triggering of new backups when there is a backup in progress
checksumboolfalseSend MD5 checksum for backed up files to ensure data integrity
stopTimeoutstring30sTime to wait for running backups to finish as a sequence of decimal numbers, each with optional fraction and a unit suffix, such as: 300ms, 1.5h, 10m30s, etc., time units are: ns, us (or µs), ms, s, m, h
keepUploadedboolfalseKeep successfully uploaded backups locally
storagestring./storageDirectory where backups and downloads will be stored
Upload/Download - TLS
serverCertstringPEM encoded certificate file for secure uploads and downloads
Auto backup
activeboolfalseActivate periodic backups
activeFromstringTime from which periodic backups should be active, in RFC 3339 format, if omitted (and active flag is set) current time will be used as start of the periodic backups
activeTillstringTime till which periodic backups should be active, in RFC 3339 format, if omitted (and active flag is set) periodic backups will be active indefinitely
periodstring10hBackup period as a sequence of decimal numbers, each with optional fraction and a unit suffix, such as: 300ms, 1.5h, 10m30s, etc., time units are: ns, us (or µs), ms, s, m, h
Local connectivity
brokerstringtcp://localhost:1883Address of the MQTT server/broker that the file backup will connect for the local communication, the format is: scheme://host:port
usernamestringUsername that is a part of the credentials
passwordstringPassword that is a part of the credentials
Local connectivity - TLS
caCertstringPEM encoded CA certificates file
certstringPEM encoded certificate file to authenticate to the MQTT server/broker
keystringPEM encoded unencrypted private key file to authenticate to the MQTT server/broker
Logging
logFilestringlog/file-backup.logPath to the file where log messages are written
logLevelstringINFOAll log messages at this or a higher level will be logged, the log levels in descending order are: ERROR, WARN, INFO, DEBUG and TRACE
logFileCountint5Log file maximum rotations count
logFileMaxAgeint28Log file rotations maximum age in days, use 0 to not remove old log files
logFileSizeint2Log file size in MB before it gets rotated

Example

The minimal required configuration that enables backing up a directory and sets the file type to config.

{
    "type": "config",
    "dir": "/var/tmp/file-backup",
    "mode": "scoped",
    "storage": "/var/lib/file-backup",
    "logFile": "/var/log/file-backup/file-backup.log"
}

Template

The configuration can be further adjusted according to the use case. The following template illustrates all possible properties with their default values.

{
  "featureId": "BackupAndRestore",
  "type": "file",
  "context": "edge",
  "dir": "",
  "mode": "strict",
  "backupCmd": "",
  "restoreCmd": "",
  "singleUpload": false,
  "checksum": false,
  "stopTimeout": "30s",
  "keepUploaded": false,
  "storage": "./storage",
  "serverCert": "",
  "active": false,
  "activeFrom": "",
  "activeTill": "",
  "period": "10h",
  "broker": "tcp://localhost:1883",
  "username": "",
  "password": "",
  "caCert": "",
  "cert": "",
  "key": "",
  "logFile": "log/file-backup.log",
  "logLevel": "INFO",
  "logFileCount": 5,
  "logFileMaxAge": 28,
  "logFileSize": 2
}

2 - File Backup API

The file backup service allows you to backup and restore data to and from a backend storage.

Backup

Create a file backup.

Request

Hono Command: command//<name>:<namespace>/req//backup

Ditto Message:

NameValueDescription
topic<name>/<namespace>/things/live/messages/backupInformation about the affected Thing and the type of operation
path/features/BackupAndRestore/inbox/messages/backupA path to the BackupAndRestore Feature, it’s message channel, and backup command
HeadersAdditional headers
response-requiredtrue/falseIf response is required
content-typeapplication/jsonThe content type
correlation-idUUIDUsed for correlating protocol messages, the same correlation-id as the sent back response message
Value
correlationIDUUIDIdentifier of the backup file
providersThe providers of the restore command
options
backup.dirA local directory, to be backed up
https.urlThe URL for restoring the backed up directory

Example : Back up a directory.

Topic: command//edge:device/req//backup

{
	"topic":"edge/device/things/live/messages/backup",
	"headers":{
		"response-required":true,
		"content-type":"application/json",
		"correlation-id":"<UUID>"
	},
	"path":"/features/BackupAndRestore/inbox/messages/backup",
	"value":{
		"correlationID":"upload-id-1704439450#n",
		"providers":{},
		"options":{
			"backup.dir":"/var/tmp/backup",
			"https.url":""
		}
	}
}
Response

Hono Command : command//<name>:<namespace>/res//backup

Ditto Message:

NameValueDescription
topic<name>/<namespace>/things/live/messages/backupInformation about the affected Thing and the type of operation
path/features/BackupAndRestore/outbox/messages/backupA path to the BackupAndRestore Feature, it’s message channel, and backup command
HeadersAdditional headers
content-typeapplication/jsonThe content type
correlation-id<UUID>The same correlation id as the request message
StatusStatus of the backup operation

Example : Successful response of a backup operation.

Topic: `command//edge:device/res//backup``

{
	"topic":"edge/device/things/live/messages/backup",
	"headers":{
		"content-type":"application/json",
		"correlation-id":"<UUID>"
	},
	"path":"/features/BackupAndRestore/outbox/messages/backup",
	"status":204
}

Restore

Restore the backed up files or directory from a backend service.

Request

Hono Command: command//<name>:<namespace>/req//restore

Ditto Message:

NameValueDescription
topic<name>/<namespace>/things/live/messages/restoreInformation about the affected Thing and the type of operation
path/features/BackupAndRestore/inbox/messages/restoreA path to the BackupAndRestore Feature, it’s message channel, and restore command
HeadersAdditional headers
response-requiredtrue/falseIf response is required
content-typeapplication/jsonThe content type
correlation-idUUIDUsed for correlating protocol messages, the same correlation-id as the sent back response message
Value
correlationIDother UUIDIdentifier of the restored file
providersStorage provider, one of aws, azure, generic
optionsOptions are specific for each provider
backup.dirA local directory, which to be backed up and then uploaded, using a storage provider of choice and temporary credentials
https.urlThe URL for restoring the backed up directory

Example : Restore a backup from a storage provider.

Topic: command//edge:device/req//restore

{
	"topic":"edge/device/things/live/messages/restore",
	"headers":{
		"response-required":true,
		"content-type":"application/json",
		"correlation-id":"<UUID>"
	},
	"path":"/features/BackupAndRestore/inbox/messages/restore",
	"value":{
		"correlationID":"upload-id-1704439450#n",
		"providers":{},
		"options":{
			"backup.dir":"/var/tmp/backup",
			"https.url":"https://raw.githubusercontent.com/eclipse-kanto/container-management/main/containerm/pkg/testutil/config/"
		}
	}
}
Response

Hono Command : command//<name>:<namespace>/res//restore

Ditto Message:

NameValueDescription
topic<name>/<namespace>/things/live/messages/restoreInformation about the affected Thing and the type of operation
path/features/BackupAndRestore/outbox/messages/restoreA path to the BackupAndRestore Feature, it’s message channel, and restore command
HeadersAdditional headers
content-typeapplication/jsonThe content type
correlation-id<UUID>The same correlation id as the request message
StatusStatus of the operation restore

Example : Response of a successful restore operation.

Topic: `command//edge:device/res//restore``

{
	"topic":"edge/device/things/live/messages/restore",
	"headers":{
		"content-type":"application/json",
		"correlation-id":"<UUID>"
	},
	"path":"/features/BackupAndRestore/outbox/messages/restore",
	"status": 204
}