自动异地备份

自动异地备份

我经营着一个网站,目前在共享托管服务提供商上托管了大约 300GB(超过 1000 个文件)的培训视频。我们每月增加约 50 个视频文件(约 20GB)。目前我们的备份一直在我们员工的台式机上,但我想设置一些更自动化的东西。我将研究其他托管选项,但与此同时,我希望就此服务器的以下备份计划征求意见/改进意见。

需要备份的文件有两种。第一种是上面描述的视频文件。这些文件只需备份一次,因为它们永远不会改变。第二种需要备份的文件是网站本身的文件。这些文件应该定期备份并跟踪修订情况。这里的大多数更改不会是编码更改,并且进行更改的工作人员 1) 不懂技术,2) 分布在美国各地。考虑到这些事实,我认为基于 svn 的解决方案不会很好地发挥作用。

所以我的想法是:

  1. 创建一个数据库表来记录备份。该表将包括:文件的哈希值、修改日期、大小、备份日期、本地路径(备份时)以及文件远程版本的路径。
  2. 使用 cron 作业上运行的脚本定期(每天?每周?每月?)浏览目录结构以识别尚未备份的文件。可以通过比较哈希值来完成此识别。
  3. 识别需要传输的文件后,脚本将通过 ftp 将它们传输到远程服务器。每个文件传输成功后,该传输的记录将插入到数据库中。

您觉得这种方法有什么问题吗?由于第一次执行时需要传输大量数据,因此脚本第一次执行时会遇到问题吗?

答案1

对我来说这听起来是个不错的主意,尽管我认为你可能在这里重新发明轮子,因为我确信有备份软件可以满足你的需求。

至于备份网站源代码 - 将其留给版本控制软件来做不是更好吗?

答案2

我个人对类似问题的解决方案是 S3 和 git。

首先,将所有视频同步到 S3。请注意,这也会为您的网站提供一定程度的备份,因为如果需要,您也可以直接从 S3 提供文件。

其次,将“来自网站本身”的所有文件放入 git repo,每当您想要备份时,请提交,然后将 .git 目录的副本也放在 S3 上。请注意,除了您之外,没有人必须知道如何使用 git。

这样您就可以获得视频的简单重复备份和更复杂的基于时间轴的网站备份。当然,虽然我使用 S3,但您也可以使用 Dropbox 或远程主机等。

答案3

您的应用程序听起来很常见,因此我不建议您花时间去推出自己的解决方案。

就像是快照可以满足您的版本控制需求(当然,前提是目标计算机有足够的磁盘空间),而无需像您重新设计“备份数据库”那样重新设计轮子。您需要使用 rsync 协议,而不是 FTP,但无论如何,使用 rsync 传输的数据量可能会更少。

如果你想更前沿一点,你可以给弗朗西斯·斯图尔特(快速系统版本控制)一看便知。这是一个使用 Subversion 后端来存储文件和跟踪版本的备份系统,但不需要最终用户与 Subversion 进行交互。

答案4

我的朋友,我有一句话要对你说:快照

它可以完成您上面列出的所有工作,而且还有一个额外的好处,就是您无需编写任何代码。它只备份更改过的文件,因此在您最初的大量备份之后,它只会备份新的/更改过的文件。它运行速度非常快,并且易于启动和运行。

相关内容