【问题标题】:One-click web site backup with asp.net用asp.net一键备份网站
【发布时间】:2011-02-26 05:32:31
【问题描述】:

我想定期备份我的网站,但不是通过 ftp 程序备份我的文件,我想要一个一键式解决方案,它将复制我的所有文件并压缩它们并允许下载。这可以在同一个网站上使用 asp.net 完成,还是我必须为此编写一个 .net 应用程序?

【问题讨论】:

  • 什么类型的备份,数据库备份或网站中上传的文件(我假设用户在其中上传文件)。
  • 整个备份。是的,有一个数据库,可能是新上传的文件。就像一个简单的 CMS

标签: c# .net asp.net backup


【解决方案1】:

使用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();
}

【讨论】:

  • 但是你省略了Database备份,怎么做整个备份?
  • 如果您的 sql 在同一台服务器上,您可以将 sql 备份到同一个 app_data 文件夹。
【解决方案2】:

我认为通过这种方式,你可以做你赢的事情。

找到像 SharpZipLib 这样的 zip 库,您只需编程创建一个 zip 文件并包含基本应用程序路径 HttpContext.Current.Request.PhysicalApplicationPath 包括所有路径。

将这个 zip 创建的文件保存在 tempo 目录中,然后下载。

这是一个快速的解决方案,但可能存在一些问题,例如可能无法打开锁定的文件...

如果你只备份你的数据库,那么你必须换个思路。

希望对您有所帮助。

【讨论】:

  • @HasanGursoy 谢谢你的信息,我会试试看这个库。我给你的另一个我已经准备好了并且工作正常,但我也会检查新的。
猜你喜欢
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
  • 2011-06-02
  • 2011-05-06
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多