public void Restore() { var dbRestorePath = _appFolderInfo.GetDatabaseRestore(); if (!_diskProvider.FileExists(dbRestorePath)) { return; } try { Logger.Info("Restoring Database"); var dbPath = _appFolderInfo.GetDatabase(); _diskProvider.DeleteFile(dbPath + "-shm"); _diskProvider.DeleteFile(dbPath + "-wal"); _diskProvider.DeleteFile(dbPath + "-journal"); _diskProvider.DeleteFile(dbPath); _diskProvider.MoveFile(dbRestorePath, dbPath); } catch (Exception e) { Logger.Error(e, "Failed to restore database"); throw; } }
public void Restore(string backupFileName) { if (backupFileName.EndsWith(".zip")) { var restoredFile = false; var temporaryPath = Path.Combine(_appFolderInfo.TempFolder, "radarr_backup_restore"); _archiveService.Extract(backupFileName, temporaryPath); foreach (var file in _diskProvider.GetFiles(temporaryPath, SearchOption.TopDirectoryOnly)) { var fileName = Path.GetFileName(file); if (fileName.Equals("Config.xml", StringComparison.InvariantCultureIgnoreCase)) { _diskProvider.MoveFile(file, _appFolderInfo.GetConfigPath(), true); restoredFile = true; } if (fileName.Equals("nzbdrone.db", StringComparison.InvariantCultureIgnoreCase)) { _diskProvider.MoveFile(file, _appFolderInfo.GetDatabaseRestore(), true); restoredFile = true; } if (fileName.Equals("radarr.db", StringComparison.InvariantCultureIgnoreCase)) { _diskProvider.MoveFile(file, _appFolderInfo.GetDatabaseRestore(), true); restoredFile = true; } } if (!restoredFile) { throw new RestoreBackupFailedException(HttpStatusCode.NotFound, "Unable to restore database file from backup"); } _diskProvider.DeleteFolder(temporaryPath, true); return; } _diskProvider.MoveFile(backupFileName, _appFolderInfo.GetDatabaseRestore(), true); }