1. 程式人生 > >【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案 (12)程式與資料備份

【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案 (12)程式與資料備份

索引

簡述

程式檔案備份與資料備份

專案準備

我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5

希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。

專案開始

最近一段時間手頭專案比較多,所以更新緩慢,並不是不更新了,希望大家理解。

大多數情況下,程式檔案的備份,我們都是通過伺服器互備來解決的,資料庫呢,我們可以新增備份計劃,自行備份。我們做這個功能是對於特殊情況的需求,同時更多的是學習一下思路和方法,可能你會在其它功能中用到這裡面的部分功能。

一、程式的備份

我們首先在ComManage區域下面新建一個控制器BackupRestoreController 繼承 BaseController

1.1 Index檢視 我們列出所有的備份檔案(包含程式檔案和資料備份檔案)

1.2 我們新增這個檢視

1.3 獲取檔案列表的方法

 1  /// <summary>
 2         /// 獲取備份檔案資訊
 3         /// </summary>
 4         /// <returns></returns>
 5         public ActionResult GetBackUpData()
6 { 7 string fileExt = Request.Form["fileExt"]; 8 string path = "/App_Data/BackUp/"; 9 var jsonM = new JsonHelper() { Status = "y", Msg = "success" }; 10 try 11 { 12 if (!FileHelper.IsExistDirectory(Server.MapPath(path)))
13 { 14 jsonM.Status = "n"; 15 jsonM.Msg = "目錄不存在!"; 16 } 17 else if (FileHelper.IsEmptyDirectory(Server.MapPath(path))) 18 { 19 jsonM.Status = "empty"; 20 } 21 else 22 { 23 if (fileExt == "*" || string.IsNullOrEmpty(fileExt)) 24 { 25 jsonM.Data = Common.Utils.DataTableToList<FileModel>(FileHelper.GetAllFileTable(Server.MapPath(path))).OrderByDescending(p => p.time).ToList(); 26 } 27 else 28 { 29 jsonM.Data = Common.Utils.DataTableToList<FileModel>(FileHelper.GetAllFileTable(Server.MapPath(path))).OrderByDescending(p => p.time).Where(p => p.ext == fileExt).ToList(); 30 } 31 32 } 33 34 } 35 catch (Exception) 36 { 37 jsonM.Status = "err"; 38 jsonM.Msg = "獲取檔案失敗!"; 39 } 40 return Content(JsonConverter.Serialize(jsonM, true)); 41 }

1.4 程式備份,我們把備份的程式檔案放到/App_Data/BackUp/ApplicationBackUp 目錄下

我們用zip壓縮和解壓,注意的一點就是 我們壓縮的檔案是儲存在App_Data目錄下,所以壓縮的時候要排除這個目錄,不然正在寫入這個目錄同時壓縮這個目錄會衝突。

壓縮方法 參考:

 1 /// <summary>
 2         /// 備份程式檔案
 3         /// </summary>
 4         /// <returns></returns>
 5         [UserAuthorizeAttribute(ModuleAlias = "Backup", OperaAction = "BackUpApplication")]
 6         public ActionResult BackUpFiles()
 7         {
 8             var json = new JsonHelper() { Msg = "程式備份完成", Status = "n" };
 9 
10             try
11             {
12                 //檢查上傳的物理路徑是否存在,不存在則建立
13                 if (!Directory.Exists(Server.MapPath("/App_Data/BackUp/ApplicationBackUp/")))
14                 {
15                     Directory.CreateDirectory(Server.MapPath("/App_Data/BackUp/ApplicationBackUp/"));
16                 }
17 
18                 ZipHelper.ZipDirectory(Server.MapPath("/"), Server.MapPath("/App_Data/BackUp/ApplicationBackUp/"), "App_" + this.CurrentUser.PinYin + "_" + DateTime.Now.ToString("yyyyMMddHHmmss"), true, new List<string>() { Server.MapPath("/App_Data/") });
19                 WriteLog(Common.Enums.enumOperator.None, "程式備份:" + json.Msg, Common.Enums.enumLog4net.WARN);
20                 json.Status = "y";
21             }
22             catch (Exception e)
23             {
24                 json.Msg = "程式備份失敗!";
25                 WriteLog(Common.Enums.enumOperator.None, "程式備份:", e);
26             }
27 
28             return Json(json);
29         }

我們來測試一下:

1.5 資料備份,備份的bak檔案我們存在/App_Data/BackUp/DataBaseBackUp/目錄下

 1  /// <summary>
 2         /// 備份資料
 3         /// </summary>
 4         /// <returns></returns>
 5         [UserAuthorizeAttribute(ModuleAlias = "Backup", OperaAction = "BackUpDataBase")]
 6         public ActionResult BackUpData()
 7         {
 8             var json = new JsonHelper() { Msg = "資料備份完成", Status = "n" };
 9 
10             try
11             {
12                 //檢查上傳的物理路徑是否存在,不存在則建立
13                 if (!Directory.Exists(Server.MapPath("/App_Data/BackUp/DataBaseBackUp/")))
14                 {
15                     Directory.CreateDirectory(Server.MapPath("/App_Data/BackUp/DataBaseBackUp/"));
16                 }
17                 //備份資料庫                
18                 using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString))
19                 {
20                     var bakPath = Server.MapPath("/App_Data/BackUp/DataBaseBackUp/");
21                     using (SqlCommand cmd = new SqlCommand("backup database wkmvc_comnwes to disk='" + bakPath + "Data_" + this.CurrentUser.PinYin + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".bak'", conn))
22                     {
23                         try
24                         {
25                             conn.Open();
26                             cmd.CommandTimeout = 0;
27                             cmd.ExecuteNonQuery();
28                         }
29                         catch (Exception e)
30                         {
31                             throw e;
32                         }
33                         finally
34                         {
35                             conn.Close();
36                             cmd.Dispose();
37                         }
38                     }
39                 }
40 
41                 WriteLog(Common.Enums.enumOperator.None, "資料備份:" + json.Msg, Common.Enums.enumLog4net.WARN);
42                 json.Status = "y";
43             }
44             catch (Exception e)
45             {
46                 json.Msg = "資料備份失敗!";
47                 WriteLog(Common.Enums.enumOperator.None, "資料備份:", e);
48             }
49 
50             return Json(json);
51         }

1.6 資料還原 程式檔案的還原 就是解壓檔案 到指定目錄 關於解壓檔案 大家參考:

資料庫備份檔案的還原

 1  /// <summary>
 2         /// 還原資料
 3         /// </summary>
 4         /// <returns></returns>
 5         [UserAuthorizeAttribute(ModuleAlias = "Restore", OperaAction = "RestoreData")]
 6         public ActionResult RestoreData()
 7         {
 8             var json = new JsonHelper() { Msg = "資料還原完成", Status = "n" };
 9 
10             var path = Request.Form["path"];
11 
12             try
13             {
14                 //檢查還原備份的物理路徑是否存在
15                 if (!System.IO.File.Exists(Server.MapPath(path)))
16                 {
17                     json.Msg = "還原資料失敗,備份檔案不存在或已損壞!";
18                     return Json(json);
19                 }
20                 //還原資料庫                
21                 using (SqlConnection Con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString))
22                 {
23 
24                     try
25                     {
26                         Con.Open();
27                         SqlCommand Com = new SqlCommand("use master restore database wkmvc_comnwes  from disk='" + Server.MapPath(path) + "'", Con);
28                         Com.ExecuteNonQuery();
29                     }
30                     catch (Exception e)
31                     {
32                         throw e;
33                     }
34                 }
35 
36                 WriteLog(Common.Enums.enumOperator.None, "資料還原:" + json.Msg, Common.Enums.enumLog4net.WARN);
37                 json.Status = "y";
38             }
39             catch (Exception e)
40             {
41                 json.Msg = "資料還原失敗!";
42                 WriteLog(Common.Enums.enumOperator.None, "資料還原:", e);
43             }
44 
45             return Json(json);
46         }

 5.2 Demo 下載:百度網盤

相關推薦

無私分享入門精通ASP.NET MVC0開始一起框架專案 12程式資料備份

索引 簡述 程式檔案備份與資料備份 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開始

無私分享入門精通ASP.NET MVC0開始一起框架專案3公共基礎資料操作類 RepositoryBase

索引 簡述 今天我們寫一個基礎資料的操作類,如果裡面有大家不理解的地方,可採取兩種方式,第一:提出來,第二:會用就行。這個類呢我一般不去修改它,因為基礎操作類,大家也可以直接拷貝到自己的專案中。 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大

無私分享入門精通ASP.NET MVC0開始一起框架專案 10部門管理崗位管理和員工管理

1 USE [wkmvc_db] 2 GO 3 /****** Object: Table [dbo].[SYS_POST_USER] Script Date: 2016/6/20 16:28:44 ******/ 4 SET ANSI_NULLS ON 5 GO

無私分享入門精通ASP.NET MVC0開始一起框架專案 14附資料庫釋出專案

索引 簡述 總結一 整個系列其實還包括專案管理、考勤簽到、郵件、內部聊天等等,這個東西是做不完的,如果繼續還有新聞系統、靜態生成等等等等.... 其中,靜態頁生成在我的部落格中可以找到,三種方式: 第一種 就是類似網上的很多CMS一樣 採用標籤替換,但這種方式是不推薦的,特別是在我們.Net中,

無私分享入門精通ASP.NET MVC0開始一起框架專案 16原始碼分享登入功能以及UI資料庫倉儲原始碼分享

1 using Common; 2 using Service.IService; 3 using System; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Web;

無私分享入門精通ASP.NET MVC0開始一起框架專案 15原始碼分享修改倉儲IRepositoryRepositoryBase

1 #region 獲取多條資料操作 2 3 /// <summary> 4 /// 返回IQueryable集合,延時載入資料 5 /// </summary> 6 /// &l

無私分享入門精通ASP.NET MVC0開始一起框架專案9 角色管理分配許可權

索引 簡述 今天我們來做角色的管理 和 角色許可權分配 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解

無私分享入門精通ASP.NET MVC0開始一起框架專案1搭建MVC環境 註冊區域

索引 簡述 從今天開始,我們從0開始搭建一個框架,並且完成一個任務管理系統的專案。這並不是什麼大專案,只是對於不熟悉MVC以及不熟悉面向介面開發和依賴注入的朋友們有所啟發,因為是從0開始,所以有些地方比較囉嗦,希望大家理解! 希望新手朋友們拋棄“拿來主義”,動手跟著一步一步的做,當做完這個框架和專案

無私分享入門精通ASP.NET MVC0開始一起框架專案6 控制器基類 主要登入使用者許可權認證日誌記錄等工作

索引 簡述 今天我們來寫一個控制器基類 主要做登入使用者、許可權認證、日誌記錄等工作 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,

無私分享入門精通ASP.NET MVC0開始一起框架專案8 許可權管理自定義許可權擴充套件許可權

索引 簡述 今天我們來做許可權的管理,這篇比較多 希望新手朋友慢慢消化 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的

無私分享入門精通ASP.NET MVC0開始一起框架專案 13客戶管理

索引 簡述 簡單的客戶管理 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開始 一、資料

無私分享入門精通ASP.NET MVC0開始一起框架專案 11檔案管理

索引 簡述 檔案管理,這個比較雞肋 但是有些方法 大家可以參考下 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,

無私分享入門精通ASP.NET MVC0開始一起框架專案4對前面的一些問題彙總和總結

索引 簡述 今天我們對前3章的問題總個彙總,對一些東西做個簡單的總結,相比大家到第3章發現編輯器報了很多錯誤了,不要擔心 那是正常的,因為有很多類庫我還沒有釋出。 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個

無私分享入門精通ASP.NET MVC0開始一起框架專案2建立資料庫和資料模型

索引 簡述 我們建立一個數據庫然後生成資料模型,新增ADO.NET實體資料模型,這裡呢常用的有兩種方式,一種是DbFirst,一種是CodeFirst,為了簡便,我們使用DbFirst。有基礎的朋友可以使用CodeFirst,對專案沒有影響的。 專案準備 我們用的工具是:VS 2013 + Sql

無私分享入門精通ASP.NET MVC0開始一起框架專案7.2 模組管理模組的新增修改刪除

索引 簡述 今天我們來做模組管理的 新增、修改、刪除 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了

無私分享入門精通ASP.NET MVC0開始一起框架專案5.3 登入功能的實現豐富資料建立關聯

1 USE [wkmvc_db] 2 GO 3 /****** Object: Table [dbo].[SYS_CODE] Script Date: 2016/5/17 9:30:01 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET

無私分享入門精通ASP.NET MVC0開始一起框架專案5.4 登入功能的實現建立登入使用者相關的介面和實現類

索引 簡述 今天我們建立幾個與登入使用者相關的資料表的介面和實現類 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了

無私分享入門精通ASP.NET MVC0開始一起框架專案5.5 登入功能的實現完善登入功能

索引 簡述 今天我們來完善我們的登入功能 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開

無私分享入門精通ASP.NET MVC0開始一起框架專案5.2 登入功能的實現介面注入log4net的使用

索引 簡述 前兩天事情比較多,耽誤更新了,希望大家多多包涵,今天我們繼續做我們的登入功能 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行

無私分享入門精通ASP.NET MVC0開始一起框架專案5.1 登入功能的實現開始接觸Spring IOCDI

索引 簡述 今天我們做登入,今天的東西比較多,用到了Spring的IOC和DI、介面的使用、驗證等,希望大家多多討論 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些