65.9K
CodeProject 正在变化。 阅读更多。
Home

Windows Azure 文件备份服务

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (5投票s)

2012 年 2 月 27 日

GPL3

3分钟阅读

viewsIcon

48092

downloadIcon

65

定义一个 Windows 服务,通过基于根目录更改通知的 FileSystemWatcher,将指定目录增量备份到 Windows Azure Blob 存储,使用 Blob REST。

引言

已经有关于使用 Windows Azure Blob 服务备份文件的文章;尤其是 Windows Azure 的示例 "将文件同步到 Windows Azure 存储"

然而,这篇“并非高深莫测”的文章更进一步,定义了一个完整的解决方案

  1. C# 库,用于使用 Blob 服务 REST APISystem.IO.FileSystemWatcher 类,将指定根目录的文件内容及其元数据同步到 Windows Azure 存储帐户中的指定 Blob 容器。
  2. 用于备份配置的 Windows 窗体应用程序。
  3. Windows 服务,根据提供的备份配置自动执行文件备份操作。
  4. Windows 服务安装程序

背景

我撰写这篇文章是为了个人兴趣,以审查 Blob 服务 REST API,并将其在 Windows Azure 存储作为文件备份的可用选择。

Code Plex

解决方案源代码也可在 CodePlexWindows Azure 文件备份服务 中找到。

解决方案组件

  • WindowsAzure_REST -- C# 库
    • 使用 Blob 服务 REST API
      • 创建 Blob 容器作为存储备份文件的仓库
      • 作为 Blob 持久化的目录和文件的 CRUD 服务
      • 在每个持久化的 Blob 中维护目录和文件元数据
  • WindowsAzure_FileBackup_Common -- C# 库
    • 注册和维护 Windows Azure 存储访问信息
      • 连接模式
        • 本地
      • 终结点 URL
      • 科目名称
      • 帐户密钥
      • Blob 容器名称
    • 注册和维护文件备份和恢复信息
    • System.IO.FileSystemWatcher 定义文件监视程序
    • 支持功能
      • 对上述 C# 库 WindowsAzure_REST 方法的包装函数。
        • 将文件保存到 Blob 服务
        • 从 Blob 服务检索文件
      • 文件和目录方法
        • 收集将用于 Blob 元数据 的信息
          • FileName
          • 属性
          • CreationTimeUtc
          • LastAccessTimeUtc
          • LastWriteTimeUtc
          • RelativePath
          • PathWithName
          • 大小
          • IsDirectory
        • 确定相对路径
  • WindowsAzure_FileBackup_Console -- Windows 窗体应用程序
    • 配置
      • Windows Azure 帐户信息
      • 备份和恢复信息
    • 备份信息
      • 备份目录中的文件数
      • 备份 Blob 容器中的 Blob 数
      • 恢复目录中的文件数
    • 强制操作
      • 将备份目录中的所有文件完整备份到备份 Blob 容器
      • 将备份 Blob 容器中的所有文件完整恢复到恢复目录
  • WindowsAzure_FileBackup_Service -- Windows 服务
  • WindowsAzure_FileBackup_Service_Setup -- Windows 服务安装程序
    • 服务名称:"Windows Azure 文件备份"

Using the Code

  1. 使用 Setup 安装(但不启动)WindowsAzure_FileBackup_Service。它应显示在服务中,名称为 "Windows Azure 文件备份"。
  2. 创建两个目录
    • 备份目录:例如,F:\WindowsAzureBackupFolder
    • 恢复目录:例如,F:\WindowsAzureRecoveryFolder
  3. 启动 WindowsAzure_FileBackup_Console
    • 配置
      • 存储帐户名称
      • 存储帐户密钥
      • 备份 Blob 容器
        • 默认 "cloudfilebackup"
      • 备份本地路径
      • 恢复本地路径
      • 连接模式
        • 默认 "Cloud"
        • "Local" 仅适用于
          • Windows 7
          • Windows Vista
          • Windows 2008
    • 选择 **"准备备份"** 按钮以注册配置设置。
  4. 现在启动服务,因为配置设置可用。

336418/WindowsAzure_FileBackup_Console.PNG

注意

  1. 您需要提供有效的存储帐户名称和密钥,否则 Windows 服务将失败。
  2. 事件记录在
    • LogName: WindowsAzureFileBackup
    • LogSource: ServiceConsole
  3. 所有配置设置都注册在:HKEY_LOCAL_MACHINE\SOFTWARE\jeff00seattle\WindowsAzureFileBackup

实用工具

在开发 Windows 服务时,有时需要重新安装;但是,卸载会失败。有两个免费工具提供了极大的帮助

  1. Microsoft Fix-It -- 解决无法安装或卸载的程序问题。
  2. Uninstall Tool -- 超快速小型实用程序,帮助您卸载各种软件。

此外

  • ClumsyLeaf CloudXplorer -- 用于验证文件是否已作为 Blob 持久化到备份 Blob 容器以及关联的 Blob 元数据。
  • Fiddler Web Debugger -- 在验证对 Blob 服务的 RESTful 访问方面非常有用。

致谢

Code Plex 项目 Azure Storage Samples 通过提供一个实现良好的 Blob 服务 REST API,非常有帮助。我曾尝试实现自己的,但发现了这个并且更喜欢它。

历史

© . All rights reserved.