运行 Linux 和 Windows 的机器的备份

运行 Linux 和 Windows 的机器的备份

我有一个关于备份的问题。我有一个网络(使用 150Mbps 无线和千兆以太网构建),由至少 3 台计算机组成(可能还有 2 台远程计算机)。

我计划构建一个 Linux 服务器{非常强大},它可以做(大部分)事情:

  • 媒体中心(录制/播放)
  • FTP 服务器用于在我的网络上提供文件服务
  • 用于开发应用程序的其他服务器(MySQL、apache……)
  • 备份

关于备份方面,要备份的机器正在运行:

  • 3 x Linux >=2.6.30(Gentoo 和 Archlinux)
  • 1 x Windows XP 32 位
  • 3 x Windows 7 64 位
  • 1 x Windows 7 32位

可以使用 smb 文件共享 {我现在不太走运} / rsync / svn / tar / 或您可能建议的任何其他方式或组合来执行备份。功能如下(按优先级排序):

  • 修订(SVN 风格):每次修改文件时都必须备份(服务器上可以存在同一文件的多个版本,事实上必须存在)
  • 可扩展性:如果我将 USB 驱动器连接到计算机,我希望它的数据也能被备份(嗯...这在 Linux 上可能相当容易,只需备份除 cd 和 dvd 之外的所有 /media/,但对于 Windows 来说呢?)
  • 近乎实时(最多 5 分钟)的文件备份:我丢失了一份乳胶报告,很难从头开始重建它
  • 无重复:例如,如果我从两台不同的计算机备份 USB 磁盘内容,我不希望数据被备份两次(最坏的情况下是符号链接而不是硬拷贝)
  • 手动恢复/自动恢复:对我来说是一样的(只是不像下面描述的那样)
  • 我不想每次都在 1000 个文件夹中查找只有 10 个文件的相同目录结构(我更喜欢在一个目录中查找文件系统结构中的所有最新文件,例如 /media/BACKUPS/PC01/home//... )
  • 也许能够从备份中删除/排除大文件
  • 好日志

服务器规格:

  • 2 x 2TB 硬盘空间用于备份(实际上 1 用于备份,另一个将从第一个进行 rsynced {我不喜欢 RAID 1},以防万一...)
  • 4 至 8GB RAM DDR3
  • 至少 4 个核心 (AMD Athalon II x4 640 @ 3.0 GHz) -> 稍后可升级到 Bulldozer

我已经考虑过的事情(如果您指出一些有趣的特点,可能会再次考虑):

  • 备份电脑
  • Rsync(问题:没有文件版本控制,Windows 客户端可能有缺陷)
  • SVN(问题:2 倍开销 - 文件被复制两次,因此文件磁盘使用量为 2 倍)
  • Amanda 备份 / Bacula(不太明白他们能做什么和不能做什么)

我对服务器端的 BASH 和 Python 编程略知一二。我最终甚至可能会使用 apache / php / MySQL 制作一个 Web 界面。我只需要知道使用哪些最佳组件来实现这一点(即服务器上的哪个备份软件、哪种协议、哪个客户端、相应要实现哪些特性)。

答案1

你可以很好地使用 Bacula/Amanda。满足你的要求:

Revisions (SVN-style): a file has to be backed up each time it gets modified (and multiples versions of the same file can exist on the server, in fact they must)
每次文件发生变化时,Bacula 和 Amanda 都会抓取该文件。

Scalability: if I attach an USB drive to the computer, I want it's data to be backed up as well (well... That on linux might be quite easy, simply backup all /media/ except cds and dvds, but for windows?)
在 Unix 上还不错(只需备份/它会抓取媒体),但在 Windows 上可能不行——我认为您需要指定要抓取的驱动器,因为文件系统不是特定根下的树状层次结构(每个驱动器都有一个根)。
话虽如此,这可能不是一个好主意(如果您将一个完整的 1TB 驱动器连接到正在备份的机器上会怎样?您的备份量就会膨胀)。

Near real-time (~ 5 minutes at max) file backup: I lost a latex report and was hard to reconstruct it from scratch
没有发生——你指定 5 分钟的备份窗口,但您的日志将充满被终止的作业,因为已经有重复的作业在运行。
您可以安排每晚备份,甚至每 12 小时备份一次,没有太多麻烦。
(即使 Apple 的 Time Machine 也只能每小时备份一次……想想可能会发生变化且必须通过网络传输的最大文件……)

No-Duplication: for instance if I backup the USB's disk content from 2 different computers, I do not want the data to be backed up twice (symlink instead of hard copy in worst case)
Bacula 目前没有重复数据删除功能。不确定 Amanda 是否有。

Manual restore / automatic restore: it's the same for me (simply not like described here below) 恢复是(也应该是)手动过程。我不知道“自动恢复”是什么样子(备份服务器自行决定恢复文件?:)

Maybe ability to remove / exclude large files from backups
您可以在 Bacula 中包含或排除文件系统的特定部分(直到文件级粒度)。

Good logs
数据库支持的作业和结果列表,在发生错误时可以写入日志文件、电子邮件等。


BackupPC 可能也能满足这些要求(不确定 - 没有用过) - 其他商业备份解决方案几乎肯定也能满足这些要求。
您可能还想考虑塔斯纳普,尽管我不确定 Windows 支持如何。

答案2

修订(SVN 风格):每次修改文件时都必须备份(服务器上可以存在同一文件的多个版本,事实上必须存在)

有问题的文件是什么?它们是用户的数据文件,还是系统配置文件?对于前者,Dropbox (经转介, 或者没有)我看到的唯一其他选择是推出自己的类似 Dropbox 的服务对于后者,请考虑迁移到像 Puppet 这样的配置管理系统,将系统的文件放入您喜欢的版本控制存储库中,然后按照您喜欢的方式备份存储库。

常规备份系统仅在运行时(每天、每天多次等)抓取文件,而不是在文件发生变化时抓取文件。

近乎实时(最多 5 分钟)的文件备份:我丢失了一份乳胶报告,很难从头开始重建它

Dropbox 或类似产品。我看不到其他选择:在此处输入图片描述

无重复:例如,如果我从两台不同的计算机备份 USB 磁盘内容,我不希望数据被备份两次(最坏的情况下是符号链接而不是硬拷贝)

Backuppc 可以进行重复数据删除。据我所知,Amanda 不能。但根据你想要避免重复的内容,可能还有其他方法。例如,如果我备份了工作中的所有计算节点,那么我会重复。但我根本不备份它们——我可以在一小时左右的时间内,结合 Debian 无人值守安装功能和 Puppet 从头重建一个。

我不想每次都在 1000 个文件夹中查找只有 10 个文件的相同目录结构(我更喜欢在一个目录中查找文件系统结构中的所有最新文件,例如 /media/BACKUPS/PC01/home//... )

至少 Amanda 不是像 rsync 那样构建的。它会定期将卷(分区或文件夹)备份到备份文件中。您可以使用 浏览备份amrecover,并恢复所需的任何文件。但每个卷的备份文件都存储在转储文件、tar 文件或类似文件中。


您的问题有很多地方需要进一步澄清。我主要想问以下问题:

  1. 此备份是为了灾难恢复,还是为了长期存档目的?
  2. 您要备份什么?为什么?
  3. 您愿意付出多少努力,您又能缺少什么呢?如果成功的最低标准是“几乎实时地备份每台计算机、每个操作系统上每个驱动器上每个文件的所有更改,包括我在 Windows 上连接和断开可移动驱动器”,您可能会失望。

相关内容