public override async Task <BackupResponse> Backup(Backup backup, BackupRequest request) { var service = new Service(backup.ServiceId); var server = new Server(service.ServerId); var fileSystemService = server.FileSystemService; var backupLocation = FileSystem.CombinePath(server.OperatingSystem, Configuration.LocalDirectory.ReplaceVariables(service)); var originalPath = FileSystem.FixAbsoluteFilePath( FileSystem.CombinePath(server.OperatingSystem, service.RootDirectory, request.Path, Compress(backup, request)), server.OperatingSystem); var newPath = FileSystem.CombinePath(server.OperatingSystem, backupLocation, backup.ZipFullName); var fileSize = fileSystemService.GetFileSize(originalPath); BackupManagerController.ThrowExceedQuota(backup, request, fileSize); backup.FileSize = fileSize; if (!fileSystemService.DirectoryExists(Path.GetDirectoryName(backupLocation))) { fileSystemService.CreateDirectory(Path.GetDirectoryName(backupLocation)); } fileSystemService.CopyFile(originalPath, newPath); fileSystemService.DeleteFile(originalPath); return(new BackupResponse(true)); }
public override async Task <BackupResponse> Backup(Backup backup, BackupRequest request) { var bucket = $"backups-service-{backup.ServiceId}"; var service = new Service(backup.ServiceId); var server = new Server(service.ServerId); var fileSystemService = server.FileSystemService; var combinePath = FileSystem.FixAbsoluteFilePath( FileSystem.CombinePath(server.OperatingSystem, service.RootDirectory, request.Path, Compress(backup, request)), server.OperatingSystem); var fileSize = fileSystemService.GetFileSize(combinePath); BackupManagerController.ThrowExceedQuota(backup, request, fileSize); backup.FileSize = fileSize; if (!await MinioClient.BucketExistsAsync(bucket)) { await MinioClient.MakeBucketAsync(bucket, _region); } var contents = fileSystemService.ReadBinary(combinePath); Stream stream = new MemoryStream(contents); await MinioClient.PutObjectAsync(bucket, backup.ZipFullName, stream, stream.Length, "application/zip"); return(new BackupResponse(true)); }
public override async Task <BackupResponse> Backup(Backup backup, BackupRequest request) { var service = new Service(backup.ServiceId); var server = new Server(service.ServerId); var fileSystemService = server.FileSystemService; var combinePath = FileSystem.FixAbsoluteFilePath( FileSystem.CombinePath(server.OperatingSystem, service.RootDirectory, request.Path, Compress(backup, request)), server.OperatingSystem); var fileSize = fileSystemService.GetFileSize(combinePath); BackupManagerController.ThrowExceedQuota(backup, request, fileSize); backup.FileSize = fileSize; var contents = fileSystemService.ReadBinary(combinePath); fileSystemService.DeleteFile(combinePath); var fileLocation = $"/TCAdminBackupManager/{service.UserId}/{backup.ZipFullName}"; var ftpStatus = FtpClient.Upload(contents, fileLocation, createRemoteDir: true, existsMode: FtpRemoteExists.Overwrite); return(new BackupResponse(ftpStatus == FtpStatus.Success)); }