2010-06-01 51 views
4

我想定期備份我的網站,而不是通過FTP程序備份我的文件我想要一個一鍵式的解決方案,將複製我所有的文件並壓縮它們並允許下載。這可以通過asp.net在同一個網站完成,或者我必須爲此寫一個.net應用程序?一鍵式網站備份與asp.net

+0

什麼類型的備份,數據庫備份或在網站中上傳文件(我假設用戶在上傳文件)。 – Kronass 2010-06-01 07:20:20

+0

整個備份。是的,有一個數據庫,可能是新上傳的文件。像一個簡單的CMS – 2010-06-01 07:24:15

回答

6

使用DotNetZip備份非常簡單。只需提供一個目錄名稱即可備份並等待要下載的文件。甚至可以爲zip設置密碼。我喜歡開源解決方案。

using Ionic.Zip; 

public void btnOneClickZip_Click(Object sender, EventArgs e) 
{ 
    Response.Clear(); 
    Response.BufferOutput = false; 

    string archiveName = String.Format("backup-{0}.zip", 
    DateTime.Now.ToString("yyyy-MM-dd-HHmmss")); 
    Response.ContentType = "application/zip"; 
    Response.AddHeader("content-disposition", "filename=" + archiveName); 

    using (ZipFile zip = new ZipFile()) 
    { 
     zip.AddDirectory(Server.MapPath("~/Assets/Upload/"), 
      "httpdocs/Assets/Upload"); 
     zip.AddDirectory(Server.MapPath("~/App_Data/"), "httpdocs/App_Data"); 

     zip.Save(Response.OutputStream); 
    } 
    Response.Close(); 
} 
+0

謝謝你分享最終的代碼:) – Aristos 2010-06-02 07:17:52

2

我認爲你可以通過這種方式做你贏得的東西。

一個ZIP庫像SharpZipLib,你只是編程創建一個zip文件,包括基本的應用程序路徑HttpContext.Current.Request.PhysicalApplicationPath包括所有路徑。

將此壓縮文件保存在速度目錄中,並下載它。

這是一個快速的解決方案,也許有一些問題,例如可能無法打開鎖定的文件...

如果備份只贏了你的數據庫,那麼你必須做不同的認爲。

希望得到這個幫助。

+1

更好地使用http://dotnetzip.codeplex.com/代替SharpZipLib – 2010-06-01 10:19:34

+0

@HananGursoy感謝您的信息,我會試試看看這個庫。另一個我給你我使用它一切準備就緒,工作正常,但我也會檢查新的。 – Aristos 2010-06-02 07:15:51