使用 Mercurial 和 Robocopy 备份?

使用 Mercurial 和 Robocopy 备份?

问题

我们希望将关键文件从多个网络共享备份到可移动硬盘。我们希望自动备份,这样我们就不必记住运行它。它需要在夜间完成。此外,我们希望能够保留每个文件的多个版本,这样我们就可以更轻松地从用户的错误中恢复过来。

背景信息

我在一家大型 Windows 企业工作,该企业有一个集中的 IT 部门负责所有备份。他们的备份面向灾难恢复,而不是用户错误,并且任何非灾难恢复都需要上级管理层批准。有几次我们注意到我们的备份失败了,但我们没有收到通知。我没有服务器或桌面的管理权限。我们正在尝试备份大约 198,000 个文件,大小约为 240 GB。这些文件很少更改。我们的备份驱动器是 1 TB。

我提出的解决方案

我想做的是使用编写批处理文件Robocopy使用 /mir 选项以及MercurialSCM 存储文件的所有版本。每次执行 Robocopy 之前,我都会先执行 hg add,然后执行 hg commit,以保存当前状态,然后制作文件结构的镜像副本。问题是 /mir 将删除源中不存在的每个文件夹,而 Mercurial 将存储库存储在目标文件夹中的 .hg 文件夹中。

有人知道我该如何说服 Mercurial 将 .hg 文件夹存储在其他地方,或者说服 Robocopy 不要将其从目标中删除?

我试图避免编写用于复制的自定义程序。

答案1

要执行镜像并忽略某些文件扩展名,请尝试以下操作:

robocopy c:\temp\source c:\temp\dest /e /purge /xf *.hg

我在这里测试了一下,它似乎将 .hg 文件留在了目标位置

我还推荐使用 /z 标志(可重新启动大文件),并且过去在处理具有不同时间粒度的服务器时不得不求助于 /fft 标志:http://www.readynas.com/forum/viewtopic.php?t=3573

编辑:...我上面的例子假设文件名为*.hg...要执行相同操作并忽略名为*.hg 的目录,请使用以下命令:

robocopy c:\temp\source c:\temp\dest /e /z /purge /xd *.hg

答案2

首先,我想指出的是,你可能从错误的角度看待这个问题:理论上,你应该写下一个更好的备份解决方案的业务案例,让你的管理层将其提交给中央 IT,然后让他们自己解决问题。

现在,这个问题已经解决了,您将面临该提议的一系列问题。第一个问题是 Mercurial 不是为您想要做的事情而构建的,robocopy 也不是。您可以通过将备份位置本身声明为存储库来找到解决问题的方法,但这并不是很有效。

我反而会调查两条不同的轨道。

第一种方法是使用卷影复制创建快照历史记录,并将其存储在服务器上的不同磁盘阵列上(您似乎在文件服务器上运行 Windows,我假设您使用的是最新版本 2008 或更高版本)。这将为您提供一种恢复用户文件的简单方法(实际上用户将能够自己恢复他们的文件),同时保持备份大小接近数据大小。这种方法的缺点是您需要在服务器上拥有管理员权限才能进行设置,因此无法绕过 IT 管理员的参与(我个人认为这是一个好主意,但这只是我个人的看法)。

第二种选择是咬紧牙关,购买一款“真正的”备份软件。如果您的数据足够重要,那么您可能可以为这项投资制定商业案例。如果不是,您可以始终使用 Cobian 备份作为用户级任务创建文件的增量副本,或者,如果您确实想使用 mercurial,请使用 Cobian 备份而不是 Robocopy 来创建存储库副本。

答案3

既然您已经在谈论 Windows 和 robocopy,我还有另一种解决方案,无需 Robocopy 或 Mercurial。异地备份有点棘手,但您至少可以对所有关键文件进行近乎实时的备份。

您有两个选择可以开始:

  1. 加入微软合作伙伴网络,支付 300 美元订阅 Action Pack
  2. 从 Dell 或 HP 购买支持 Microsoft DPM 的服务器

无论哪种方式,您最终都会得到一个完整的 DPM 盒,或者至少是可以安装在备用机器上的软件。DPM 非常适合进行网络共享备份,备份时间最短为每分钟一次。它还可以进行影子复制,以便用户可以在备份文件时使用这些文件。最后,如果您愿意,它还允许最终用户恢复选项,这在某种程度上可以让您摆脱困境。

如果您需要异地功能,您还可以购买磁带驱动器,甚至在新服务器中购买嵌入式磁带驱动器。如果您更愿意使用可移动磁盘存储,请查看名为 Firestreamer 的产品。它允许您使用磁盘到可移动磁盘存储。

无论如何,从长远来看,这是一个更好的解决方案,比使用 robocopy 和某些存储位置的 cron 作业更可靠,相信我!总的来说,您的成本从 500 美元到 5000 美元不等,具体取决于您想要做什么,但它值得您安心和稳定。

相关内容