Esempio n. 1
0
 public void Backup()
 {
     if (!_backupManager.GetBackupState())
     {
         Console.Clear();
         Console.WriteLine("Taking a backup");
         _backupManager.Backup(true);
         _message = "Backup taken";
     }
     else
     {
         _message = "A backup already exists, would you like to overwrite it?";
         _menuId  = 2;
     }
 }
Esempio n. 2
0
        public string RawBackup(string dbName, string version, string branchCode, string backupPath)
        {
            SqlConnection conn = ConnectionManager.GeneralSqlConnection;

            try
            {
                conn.Open();
                string timestamp = TimeProvider.Today.ToString("ddMMyyyy");
                string fileName  =
                    _FindAvailableName(String.Format("opencbs-{0}-{1}-{2}-@-{3}.bak", version, dbName,
                                                     branchCode, timestamp));
                BackupManager.Backup(fileName, backupPath, dbName, conn);

                if (DatabaseManager.DatabaseExists(dbName + "_attachments", conn))
                {
                    string attachments = string.Format("opencbs-{0}-{1}-{2}-@-{3}-attachments.bak"
                                                       , version
                                                       , dbName
                                                       , branchCode
                                                       , timestamp
                                                       );
                    BackupManager.Backup(attachments, backupPath, dbName + "_attachments", conn);
                }

                return(fileName);
            }
            finally
            {
                conn.Close();
            }
        }
Esempio n. 3
0
        protected void btnBackup_OnClick(object sender, EventArgs e)
        {
            var backupName = (string)this.Request.Form["txtBackupName"];
            var result     = BackupManager.Backup(backupName);

            this.ReloadCurrentPage();
        }
Esempio n. 4
0
 public void OnApplicationQuit()
 {
     if (PluginConfig.Instance?.AutoBackup == true)
     {
         BackupManager.Backup(PluginConfig.Instance?.BackupPath);
     }
     Logger.Log.Debug("OnApplicationQuit");
 }
Esempio n. 5
0
        public static string BackupDB(ConnectionData connectionData, string database)
        {
            BackupManager backupManager  = new BackupManager(connectionData);
            string        backupFileName = database + "_" + DateTime.Now.ToString("yyyyMMdd_HHmmss");
            string        path           = backupManager.Backup(database, backupFileName);


            if (File.Exists(backupFileName))
            {
                dict.TryAdd(database, path);
            }

            return(path);
        }
Esempio n. 6
0
        public void OnApplicationStart()
        {
            Logger.Info($"OnApplicationStart : Version {Assembly.GetExecutingAssembly().GetName().Version}");
            if (PluginConfig.Instance?.AutoBackup == true)
            {
                BackupManager.Backup(PluginConfig.Instance?.BackupPath);
            }

            if (!Directory.Exists(PluginConfig.Instance.CoverDirectoryPath))
            {
                Logger.Info($"Create CoverFileDirectory : {PluginConfig.Instance.CoverDirectoryPath}");
                Directory.CreateDirectory(PluginConfig.Instance.CoverDirectoryPath);
            }
        }
        private void createBackupButton_Click(object sender, EventArgs e)
        {
            //Create dialog
            using (SaveFileDialog sfd = new SaveFileDialog())
            {
                //Set filter
                sfd.Filter = "Backup files|*.dbak";

                //If User pressed ok
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    //Save settings
                    Config.Save();
                    DataManagers.ProfileManager.Save();

                    //Do backup
                    BackupManager m = new BackupManager(sfd.FileName);
                    m.Backup();
                }
            }
        }
        public void BasicFullBackupScenario1()
        {
            var dbName             = "basic_scenario_one";
            var backupFile         = "";
            var testConfigFileName = tmpFolder + "BasicScenario1.ini";

            var parser = new FileIniDataParser();
            var config = parser.ReadFile(defaultConfigIni);

            config["sqlserver"].SetKeyData(new KeyData("database")
            {
                Value = dbName
            });

            parser.WriteFile(testConfigFileName, config);

            var conn = new SqlConnection(string.Format("Server={0};Database=master;Trusted_Connection=True;", config["sqlserver"]["server"]));

            conn.Open();

            try
            {
                // Create the database and insert some data
                conn.Execute("create database " + dbName);
                conn.ChangeDatabase(dbName);
                conn.Execute("create table test1 (test1 varchar(50))");
                conn.Execute("insert into test1 values ('data')");

                // Backup the database
                var backupManager = new BackupManager();
                var backupResult  = backupManager.Backup(new string[2] {
                    "full", testConfigFileName
                });

                Assert.AreEqual(0, backupResult.ReturnCode);
                Assert.IsFalse(File.Exists(backupFile));

                // Drop the database
                conn.ChangeDatabase("master");
                conn.Execute("drop database " + dbName);

                // Restore the backup from S3
                var restoreMan = new RestoreManager();

                restoreMan.Restore(new string[2] {
                    testConfigFileName, backupResult.BackupName
                });

                var awsProfile = config["aws"]["profile"];

                Amazon.Util.ProfileManager.RegisterProfile(awsProfile, config["aws"]["access_key"], config["aws"]["secret_key"]);

                var creds = Amazon.Util.ProfileManager.GetAWSCredentials(awsProfile);

                var awsClient = new AmazonS3Client(creds, Amazon.RegionEndpoint.USEast1);

                conn.ChangeDatabase(dbName);
                var result = conn.Query("select test1 from test1 where test1 = 'data'");

                Assert.IsTrue(result.Count() == 1);

                var listReq = new ListObjectsRequest()
                {
                    BucketName = config["aws"]["bucket"]
                };

                var objects = awsClient.ListObjects(listReq);

                foreach (var obj in objects.S3Objects)
                {
                    if (obj.Key.IndexOf(dbName) != -1)
                    {
                        var delReq = new DeleteObjectRequest()
                        {
                            BucketName = config["aws"]["bucket"], Key = obj.Key
                        };

                        awsClient.DeleteObject(delReq);
                    }
                }
            }
            finally
            {
                conn.ChangeDatabase("master");
                conn.Execute("drop database " + dbName);

                if (File.Exists(backupFile))
                {
                    File.Delete(backupFile);
                }
            }
        }
        public void BasicIncrementalBackupScenario2()
        {
            var dbName             = "basic_scenario_two";
            var backupFile         = "";
            var testConfigFileName = tmpFolder + "BasicScenario2.ini";

            var parser = new FileIniDataParser();
            var config = parser.ReadFile(defaultConfigIni);

            config["sqlserver"].SetKeyData(new KeyData("database")
            {
                Value = dbName
            });

            parser.WriteFile(testConfigFileName, config);

            var conn = new SqlConnection(string.Format("Server={0};Database=master;Trusted_Connection=True;", config["sqlserver"]["server"]));

            conn.Open();

            var logBackups = new List <string>();

            try
            {
                // Create the database and insert some data
                conn.Execute("create database " + dbName);
                conn.Execute("alter database " + dbName + " set recovery full");
                conn.ChangeDatabase(dbName);
                conn.Execute("create table test1 (test1 varchar(50))");
                conn.Execute("insert into test1 values ('data_full')");

                // Backup the database
                var backupManager = new BackupManager();
                var backupResult  = backupManager.Backup(new string[2] {
                    "full", testConfigFileName
                });

                Assert.AreEqual(0, backupResult.ReturnCode);
                Assert.IsFalse(File.Exists(backupResult.BackupName));

                // Do incremental stuff
                for (int i = 1; i <= 3; i++)
                {
                    // The minimum increment is a second between log backups
                    System.Threading.Thread.Sleep(1000);
                    conn.Execute(string.Format("insert into test1 values ('data_log_{0}')", i));

                    var backupLogResult = backupManager.Backup(new string[2] {
                        "incremental", testConfigFileName
                    });

                    Assert.AreEqual(0, backupLogResult.ReturnCode);
                    Assert.IsFalse(File.Exists(backupLogResult.BackupName));

                    logBackups.Add(backupLogResult.BackupName);
                }

                // Drop the database
                conn.ChangeDatabase("master");
                conn.Execute("drop database " + dbName);

                // Restore the backup using the restore manager
                var restoreMan = new RestoreManager();

                var argList = new List <string>()
                {
                    testConfigFileName, backupResult.BackupName
                };

                argList.AddRange(logBackups);

                restoreMan.Restore(argList.ToArray());

                // Verify that the restore worked
                conn.ChangeDatabase(dbName);
                var result = conn.Query("select test1 from test1 where test1 in ('data_full', 'data_log_1', 'data_log_2', 'data_log_3')");

                Assert.IsTrue(result.Count() == 4);
            }
            finally
            {
                // Cleanup our mess
                // S3
                var awsProfile = config["aws"]["profile"];
                Amazon.Util.ProfileManager.RegisterProfile(awsProfile, config["aws"]["access_key"], config["aws"]["secret_key"]);
                var creds     = Amazon.Util.ProfileManager.GetAWSCredentials(awsProfile);
                var awsClient = new AmazonS3Client(creds, Amazon.RegionEndpoint.USEast1);
                var listReq   = new ListObjectsRequest()
                {
                    BucketName = config["aws"]["bucket"]
                };

                var objects = awsClient.ListObjects(listReq);

                foreach (var obj in objects.S3Objects)
                {
                    if (obj.Key.IndexOf(dbName) != -1)
                    {
                        var delReq = new DeleteObjectRequest()
                        {
                            BucketName = config["aws"]["bucket"], Key = obj.Key
                        };

                        awsClient.DeleteObject(delReq);
                    }
                }

                // Testing database server
                conn.ChangeDatabase("master");
                conn.Execute("drop database " + dbName);

                if (File.Exists(backupFile))
                {
                    File.Delete(backupFile);
                }
            }
        }