Continuous Backup

By default, the continuous backup is disabled. If enabled the EclipseStore instance will clone all changes to another directory. The backup is identical to the primary EclipseStore storage.

To enable the continuous backup just set the backup directory:

With storage-embedded-configuration API:

Java
EmbeddedStorageManager storageManager = EmbeddedStorageConfigurationBuilder.New()
	.setBackupDirectory("A safe place")
	.createEmbeddedStorageFoundation()
	.createEmbeddedStorageManager();
XML
<properties>
	<property name="backup-directory" value ="/save/backup" />
	...
</properties>
INI
backupDirectory = backupDir

With EclipseStore foundation classes:

Java
NioFileSystem      fileSystem  = NioFileSystem.New();

StorageBackupSetup backupSetup = StorageBackupSetup.New(
	Storage.BackupFileProviderBuilder(fileSystem)
		.setDirectory(fileSystem.ensureDirectoryPath(BACKUPDIR))
		.setTruncationDirectory(fileSystem.ensureDirectoryPath(TRUNCATIONDIR))
		.setDeletionDirectory(fileSystem.ensureDirectoryPath(DELETIONDIR))
		.createFileProvider()
);

StorageConfiguration configuration = StorageConfiguration.Builder()
	.setBackupSetup(backupSetup)
	.setStorageFileProvider(StorageLiveFileProvider.New(
		fileSystem.ensureDirectoryPath(WORKINGDIR)
	))
	.createConfiguration()
;

Storage Targets

The continuous backup can be written to all supported storage targets.

foundation classes:
SQLiteDataSource dataSource = new SQLiteDataSource();
dataSource.setUrl("jdbc:sqlite:eclipsestore_bkup_db");

SqlFileSystem fileSystem = SqlFileSystem.New(
	SqlConnector.Caching(
		SqlProviderSqlite.New(dataSource)
	)
);

StorageBackupSetup backupSetup = StorageBackupSetup.New(
	Storage.BackupFileProviderBuilder(fileSystem)
		.setDirectory(fileSystem.ensureDirectoryPath(BACKUPDIR))
		.setTruncationDirectory(fileSystem.ensureDirectoryPath(TRUNCATIONDIR))
		.setDeletionDirectory(fileSystem.ensureDirectoryPath(DELETIONDIR))
		.createFileProvider()
);

StorageConfiguration configuration = StorageConfiguration.Builder()
	.setBackupSetup(backupSetup)
	.setStorageFileProvider(StorageLiveFileProvider.New(
		fileSystem.ensureDirectoryPath(WORKINGDIR)
	))
	.createConfiguration()
;

When using external configuration the specific target configuration must be applied to the backup-filesystem property:

external configuration:
storage-filesystem.aws.s3.credentials.type=static
storage-filesystem.aws.s3.credentials.access-key-id=my-access-key-id
storage-filesystem.aws.s3.credentials.secret-acces-key=my-secret-access-key
storage-filesystem.aws.s3.credentials.region=us-east-1

storage-directory=storageDir

backup-filesystem.sql.sqlite.data-source-provider=com.sample.MyDataSourceProvider
backup-filesystem.sql.sqlite.catalog=mycatalog
backup-filesystem.sql.sqlite.schema=myschema
backup-filesystem.sql.sqlite.url=jdbc:sqlite:eclipsestore_bkup_db_bkup_db

backup-directory=backupDir