Windows Azure 文件备份服务





4.00/5 (5投票s)
定义一个 Windows 服务,通过基于根目录更改通知的 FileSystemWatcher,将指定目录增量备份到 Windows Azure Blob 存储,使用 Blob REST。
引言
已经有关于使用 Windows Azure Blob 服务备份文件的文章;尤其是 Windows Azure 的示例 "将文件同步到 Windows Azure 存储"。
然而,这篇“并非高深莫测”的文章更进一步,定义了一个完整的解决方案
- C# 库,用于使用 Blob 服务 REST API 和 System.IO.FileSystemWatcher 类,将指定根目录的文件内容及其元数据同步到 Windows Azure 存储帐户中的指定 Blob 容器。
- 用于备份配置的 Windows 窗体应用程序。
- Windows 服务,根据提供的备份配置自动执行文件备份操作。
- Windows 服务安装程序
背景
我撰写这篇文章是为了个人兴趣,以审查 Blob 服务 REST API,并将其在 Windows Azure 存储作为文件备份的可用选择。
Code Plex
解决方案源代码也可在 CodePlex:Windows Azure 文件备份服务 中找到。
解决方案组件
- WindowsAzure_REST -- C# 库
- 使用 Blob 服务 REST API
- 创建 Blob 容器作为存储备份文件的仓库
- 作为 Blob 持久化的目录和文件的 CRUD 服务
- 在每个持久化的 Blob 中维护目录和文件元数据
- 使用 Blob 服务 REST API
- WindowsAzure_FileBackup_Common -- C# 库
- 注册和维护 Windows Azure 存储访问信息
- 连接模式
- 云
- 本地
- 终结点 URL
- 科目名称
- 帐户密钥
- Blob 容器名称
- 连接模式
- 注册和维护文件备份和恢复信息
- 为 System.IO.FileSystemWatcher 定义文件监视程序
- 支持功能
- 对上述 C# 库 WindowsAzure_REST 方法的包装函数。
- 将文件保存到 Blob 服务
- 从 Blob 服务检索文件
- 文件和目录方法
- 收集将用于 Blob 元数据 的信息
- FileName
- 属性
- CreationTimeUtc
- LastAccessTimeUtc
- LastWriteTimeUtc
- RelativePath
- PathWithName
- 大小
- IsDirectory
- 确定相对路径
- 收集将用于 Blob 元数据 的信息
- 对上述 C# 库 WindowsAzure_REST 方法的包装函数。
- 注册和维护 Windows Azure 存储访问信息
- WindowsAzure_FileBackup_Console -- Windows 窗体应用程序
- 配置
- Windows Azure 帐户信息
- 备份和恢复信息
- 备份信息
- 备份目录中的文件数
- 备份 Blob 容器中的 Blob 数
- 恢复目录中的文件数
- 强制操作
- 将备份目录中的所有文件完整备份到备份 Blob 容器
- 将备份 Blob 容器中的所有文件完整恢复到恢复目录
- 配置
- WindowsAzure_FileBackup_Service -- Windows 服务
- 启动后,它会 System.IO.FileSystemWatcher 监控备份目录中的更改,并在备份 Blob 容器中匹配这些更改。
- WindowsAzure_FileBackup_Service_Setup -- Windows 服务安装程序
- 服务名称:"Windows Azure 文件备份"
Using the Code
- 使用 Setup 安装(但不启动)WindowsAzure_FileBackup_Service。它应显示在服务中,名称为 "Windows Azure 文件备份"。
- 创建两个目录
- 备份目录:例如,F:\WindowsAzureBackupFolder
- 恢复目录:例如,F:\WindowsAzureRecoveryFolder
- 启动 WindowsAzure_FileBackup_Console
- 配置
- 存储帐户名称
- 存储帐户密钥
- 备份 Blob 容器
- 默认 "cloudfilebackup"
- 备份本地路径
- 恢复本地路径
- 连接模式
- 默认 "Cloud"
- "Local" 仅适用于
- Windows 7
- Windows Vista
- Windows 2008
- 选择 **"准备备份"** 按钮以注册配置设置。
- 配置
- 现在启动服务,因为配置设置可用。
注意
- 您需要提供有效的存储帐户名称和密钥,否则 Windows 服务将失败。
- 事件记录在
- LogName: WindowsAzureFileBackup
- LogSource: Service 或 Console
- 所有配置设置都注册在:HKEY_LOCAL_MACHINE\SOFTWARE\jeff00seattle\WindowsAzureFileBackup
实用工具
在开发 Windows 服务时,有时需要重新安装;但是,卸载会失败。有两个免费工具提供了极大的帮助
- Microsoft Fix-It -- 解决无法安装或卸载的程序问题。
- Uninstall Tool -- 超快速小型实用程序,帮助您卸载各种软件。
此外
- ClumsyLeaf CloudXplorer -- 用于验证文件是否已作为 Blob 持久化到备份 Blob 容器以及关联的 Blob 元数据。
- Fiddler Web Debugger -- 在验证对 Blob 服务的 RESTful 访问方面非常有用。
致谢
Code Plex 项目 Azure Storage Samples 通过提供一个实现良好的 Blob 服务 REST API,非常有帮助。我曾尝试实现自己的,但发现了这个并且更喜欢它。