public void Backup(BackupType backupType) { _logger.ProgressInfo("Starting Backup"); _diskProvider.EnsureFolder(_backupTempFolder); _diskProvider.EnsureFolder(GetBackupFolder(backupType)); var backupFilename = string.Format("radarr_backup_v{0}_{1:yyyy.MM.dd_HH.mm.ss}.zip", BuildInfo.Version, DateTime.Now); var backupPath = Path.Combine(GetBackupFolder(backupType), backupFilename); Cleanup(); if (backupType != BackupType.Manual) { CleanupOldBackups(backupType); } BackupConfigFile(); BackupDatabase(); CreateVersionInfo(); _logger.ProgressDebug("Creating backup zip"); // Delete journal file created during database backup _diskProvider.DeleteFile(Path.Combine(_backupTempFolder, "radarr.db-journal")); _archiveService.CreateZip(backupPath, _diskProvider.GetFiles(_backupTempFolder, SearchOption.TopDirectoryOnly)); _logger.ProgressDebug("Backup zip created"); }
public AppFolderInfo(IDiskProvider diskProvider, IStartupArguments startupArguments) { _diskProvider = diskProvider; if (OsInfo.IsLinux) { DATA_SPECIAL_FOLDER = Environment.SpecialFolder.ApplicationData; } _logger = NzbDroneLogger.GetLogger(this); if (startupArguments.Args.ContainsKey(StartupArguments.APPDATA)) { AppDataFolder = startupArguments.Args[StartupArguments.APPDATA]; } else { AppDataFolder = Path.Combine(Environment.GetFolderPath(DATA_SPECIAL_FOLDER, Environment.SpecialFolderOption.None), "NzbDrone"); } _diskProvider.EnsureFolder(AppDataFolder); StartUpFolder = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory.FullName; TempFolder = Path.GetTempPath(); diskProvider.EnsureFolder(AppDataFolder); if (!OsInfo.IsLinux) { SetPermissions(); } }
public void Register() { try { MigrateAppDataFolder(); _diskProvider.EnsureFolder(_appFolderInfo.AppDataFolder); } catch (UnauthorizedAccessException) { throw new SonarrStartupException("Cannot create AppFolder, Access to the path {0} is denied", _appFolderInfo.AppDataFolder); } if (OsInfo.IsWindows) { SetPermissions(); } if (!_diskProvider.FolderWritable(_appFolderInfo.AppDataFolder)) { throw new SonarrStartupException("AppFolder {0} is not writable", _appFolderInfo.AppDataFolder); } InitializeMonoApplicationData(); }
public void Register() { _diskProvider.EnsureFolder(_appFolderInfo.AppDataFolder); if (OsInfo.IsWindows) { SetPermissions(); } }
public void Register() { _diskProvider.EnsureFolder(_appFolderInfo.AppDataFolder); if (OsInfo.IsWindows) { SetPermissions(); } if (!_diskProvider.FolderWritable(_appFolderInfo.AppDataFolder)) { throw new SonarrStartupException("AppFolder {0} is not writable", _appFolderInfo.AppDataFolder); } }
public void Backup(BackupType backupType) { _logger.ProgressInfo("Starting Backup"); _diskProvider.EnsureFolder(_backupTempFolder); _diskProvider.EnsureFolder(GetBackupFolder(backupType)); var backupFilename = String.Format("nzbdrone_backup_{0:yyyy.MM.dd_HH.mm.ss}.zip", DateTime.Now); var backupPath = Path.Combine(GetBackupFolder(backupType), backupFilename); Cleanup(); if (backupType != BackupType.Manual) { CleanupOldBackups(backupType); } BackupConfigFile(); BackupDatabase(); _logger.ProgressDebug("Creating backup zip"); _archiveService.CreateZip(backupPath, _diskProvider.GetFiles(_backupTempFolder, SearchOption.TopDirectoryOnly)); _logger.ProgressDebug("Backup zip created"); }
private MovieFile TransferFile(MovieFile movieFile, Movie movie, string destinationFilePath, TransferMode mode) { Ensure.That(movieFile, () => movieFile).IsNotNull(); Ensure.That(movie, () => movie).IsNotNull(); Ensure.That(destinationFilePath, () => destinationFilePath).IsValidPath(); var movieFilePath = movieFile.Path ?? Path.Combine(movie.Path, movieFile.RelativePath); if (!_diskProvider.FileExists(movieFilePath)) { throw new FileNotFoundException("Movie file path does not exist", movieFilePath); } if (movieFilePath == destinationFilePath) { throw new SameFilenameException("File not moved, source and destination are the same", movieFilePath); } _diskTransferService.TransferFile(movieFilePath, destinationFilePath, mode); var oldMoviePath = movie.Path; var newMoviePath = new OsPath(destinationFilePath).Directory.FullPath.TrimEnd(Path.DirectorySeparatorChar); movie.Path = newMoviePath; //We update it when everything went well! movieFile.RelativePath = movie.Path.GetRelativePath(destinationFilePath); _updateMovieFileService.ChangeFileDateForFile(movieFile, movie); try { _mediaFileAttributeService.SetFolderLastWriteTime(movie.Path, movieFile.DateAdded); } catch (Exception ex) { _logger.Warn(ex, "Unable to set last write time"); } _mediaFileAttributeService.SetFilePermissions(destinationFilePath); if (oldMoviePath != newMoviePath && _diskProvider.FolderExists(oldMoviePath)) { //Let's move the old files before deleting the old folder. We could just do move folder, but the main file (movie file) is already moved, so eh. var files = _diskProvider.GetFiles(oldMoviePath, SearchOption.AllDirectories); foreach (var file in files) { try { var destFile = Path.Combine(newMoviePath, oldMoviePath.GetRelativePath(file)); _diskProvider.EnsureFolder(Path.GetDirectoryName(destFile)); _diskProvider.MoveFile(file, destFile); } catch (Exception e) { _logger.Warn(e, "Error while trying to move extra file {0} to new folder. Maybe it already exists? (Manual cleanup necessary!).", oldMoviePath.GetRelativePath(file)); } } if (_diskProvider.GetFiles(oldMoviePath, SearchOption.AllDirectories).Count() == 0) { _recycleBinProvider.DeleteFolder(oldMoviePath); } } //Only update the movie path if we were successfull! if (oldMoviePath != newMoviePath) { _movieService.UpdateMovie(movie); } return(movieFile); }