public void StartBackup(string backupDestinationDirectory) { var document = Get(BackupStatus.RavenBackupStatusDocumentKey, null); if (document != null) { var backupStatus = document.DataAsJson.JsonDeserialization <BackupStatus>(); if (backupStatus.IsRunning) { throw new InvalidOperationException("Backup is already running"); } } Put(BackupStatus.RavenBackupStatusDocumentKey, null, JObject.FromObject(new BackupStatus { Started = DateTime.UtcNow, IsRunning = true, }), new JObject(), null); IndexStorage.FlushAllIndexes(); TransactionalStorage.StartBackupOperation(this, backupDestinationDirectory); }