diff --git a/src/NzbDrone.Common/Disk/DiskProviderBase.cs b/src/NzbDrone.Common/Disk/DiskProviderBase.cs index b9c506a2e..b1af0ccaa 100644 --- a/src/NzbDrone.Common/Disk/DiskProviderBase.cs +++ b/src/NzbDrone.Common/Disk/DiskProviderBase.cs @@ -204,6 +204,20 @@ namespace NzbDrone.Common.Disk File.Delete(path); } + public void CopyFile(string source, string destination, bool overwrite = false) + { + Ensure.That(source, () => source).IsValidPath(); + Ensure.That(destination, () => destination).IsValidPath(); + + if (source.PathEquals(destination)) + { + Logger.Warn("Source and destination can't be the same {0}", source); + return; + } + + File.Copy(source, destination, overwrite); + } + public void MoveFile(string source, string destination) { Ensure.That(source, () => source).IsValidPath(); diff --git a/src/NzbDrone.Common/Disk/IDiskProvider.cs b/src/NzbDrone.Common/Disk/IDiskProvider.cs index 3e8b8ceff..0bb415452 100644 --- a/src/NzbDrone.Common/Disk/IDiskProvider.cs +++ b/src/NzbDrone.Common/Disk/IDiskProvider.cs @@ -26,6 +26,7 @@ namespace NzbDrone.Common.Disk void CopyFolder(string source, string destination); void MoveFolder(string source, string destination); void DeleteFile(string path); + void CopyFile(string source, string destination, bool overwrite = false); void MoveFile(string source, string destination); void DeleteFolder(string path, bool recursive); string ReadAllText(string filePath); diff --git a/src/NzbDrone.Common/PathExtensions.cs b/src/NzbDrone.Common/PathExtensions.cs index 763b1d1c0..309fee9cb 100644 --- a/src/NzbDrone.Common/PathExtensions.cs +++ b/src/NzbDrone.Common/PathExtensions.cs @@ -161,6 +161,16 @@ namespace NzbDrone.Common return Path.Combine(GetUpdateSandboxFolder(appFolderInfo), UPDATE_BACKUP_APPDATA_FOLDER_NAME); } + public static string GetUpdateBackupConfigFile(this IAppFolderInfo appFolderInfo) + { + return Path.Combine(GetUpdateBackUpAppDataFolder(appFolderInfo), APP_CONFIG_FILE); + } + + public static string GetUpdateBackupDatabase(this IAppFolderInfo appFolderInfo) + { + return Path.Combine(GetUpdateBackUpAppDataFolder(appFolderInfo), NZBDRONE_DB); + } + public static string GetUpdatePackageFolder(this IAppFolderInfo appFolderInfo) { return Path.Combine(GetUpdateSandboxFolder(appFolderInfo), UPDATE_PACKAGE_FOLDER_NAME); diff --git a/src/NzbDrone.Update/UpdateEngine/BackupAppData.cs b/src/NzbDrone.Update/UpdateEngine/BackupAppData.cs index 42d0dcad5..038732367 100644 --- a/src/NzbDrone.Update/UpdateEngine/BackupAppData.cs +++ b/src/NzbDrone.Update/UpdateEngine/BackupAppData.cs @@ -27,18 +27,11 @@ namespace NzbDrone.Update.UpdateEngine public void Backup() { _logger.Info("Backing up appdata (database/config)"); - var appDataPath = _appFolderInfo.GetAppDataPath(); var backupFolderAppData = _appFolderInfo.GetUpdateBackUpAppDataFolder(); - var binFolder = Path.Combine(backupFolderAppData, "bin"); _diskProvider.CreateFolder(backupFolderAppData); - _diskProvider.CopyFolder(appDataPath, backupFolderAppData); - - if (_diskProvider.FolderExists(binFolder)) - { - _logger.Info("Deleting bin folder from appdata"); - _diskProvider.DeleteFolder(binFolder, true); - } + _diskProvider.CopyFile(_appFolderInfo.GetConfigPath(), _appFolderInfo.GetUpdateBackupConfigFile(), true); + _diskProvider.CopyFile(_appFolderInfo.GetNzbDroneDatabase(), _appFolderInfo.GetUpdateBackupDatabase(), true); } } }