如何做预定的Linux服务器备份

我需要在Ubuntu 9.04上为数据库,网站,FTP,电子邮件等组织自动备份,因为我从来没有做过,我正在寻找学习的地方。 需要做什么,我可以使用什么(免费)软件,提示和技巧,最佳实践等等。 如果你能指点我的初学者的相关文章,我非常感谢

根据您的目标,基础设施和媒体偏好,有很多select。

首先,您可能需要弄清楚如何设置cron作业,无论您最终select哪种解决scheme。 这是在* nix上运行计划任务的。

至于备份本身,我倾向于使用rsnapshot,因为它足够简单,可以设置并执行我所需要的操作。 Amanda和Bacula都是很好的解决scheme,但涉及到数据库和其他使备份和恢复复杂化的事情。 当我需要一些可靠的东西,例如备份的情况下,我倾向于避免复杂的事情。 Rsnapshot使用rsync通过ssh在系统之间传输数据,所以它是安全和有效的。 然后使用硬链接,以便您有多个即时快照的备份文件系统。

数据库必须有一些特殊的处理方式,在运行备份作业时需要locking表,或者将数据库表转储到其他位置,然后使用您select的方法进行备份。 如果你使用的是MySQL,可以用mysqldump之类的工具来完成。 这个转储通常使用cron作业自动执行。

备份总是难以正确调整; 尤其是因为人们有不同的需求,这种需求通常是数据“快照”备份,数据存档,服务器(configuration)备份,可靠服务等的混合。

3d影响和davey都是正确的:尝试恢复操作非常重要(正如Joel所说的 ),一组cron脚本通常是第一件事; 但根据您可以“接受松动”的数据量以及您需要的可靠性水平,还需要执行其他操作。

所以你必须问自己的问题是:

  • 备份的目的 – “保护”您的数据/服务:

    • (本地)硬件故障,如磁盘崩溃;
    • 更大的损害,像build筑物的火灾;
    • 用户错误(意外删除)或需要检索旧数据;
    • 错误的软件包版本(升级服务通常很困难等)。
  • 可接受的停机时间(和数据丢失),以防出现不同types的问题

    • 磁盘失败? 例如。 没有损失,没有停机时间(?)
    • 其他硬件故障(MB,CPU等)? 一天的工作stream失,几个小时的停机
    • 火(和消防员的水)? 一周失去,几天宕机
    • 地震还是停电?

根据这些问题的答案,您将看到每日备份是否足够,或者您是否需要保留在不同地理位置的热备用服务器。

我不是这个领域的大师,但也许我的例子可以给你一些想法。

我正在pipe理一个小型(debian)服务器,提供数据库(postgresql),Subversion版本库,trac站点以及其他类似的function。 服务器主要是由我们的研发团队使用的,很less有人(约20个客户为颠覆者)和一些仪器(~50个客户端的数据库),但他们几乎在24 / 24,7 / 7天工作(特别是仪器,为数据库提供措施)。

如果出现平均问题(如主要硬件故障),则可以接受2到4小时的停机时间(仪器可以在本地工作一段时间)。 所以我没有(还)警告备用服务器,但只有一组本地和远程备份和转储。

因此,要求并不严格:大约有一百个数据,还有不到一百个客户端。

第一道“防线”由磁盘冗余和分区提供(不仅有助于防止磁盘崩溃,还可以进一步备份或升级服务器)。机器配有4个磁盘(每个500Gb)。

  • 2(软)RAIDarrays(在3个磁盘上input1):
    • 一个小的,专用于/ boot
    • 和一个大的,由lvm使用(见下文)
  • 2个lvm组:
    • 一个是在大型RAIDarrays(第四个硬盘+ 1个非RAIDarrays)
    • 另一个只使用非RAID分区(前3个磁盘上的每个磁盘50Gb,第四个磁盘的一半)
  • 最后,分区:
    • /和/ var从两个lvm卷大突袭; 用户数据全部存储在/ var …
    • 第一个vgroup的非raid扩展保留给快照(lvm)
    • /直接在小型RAID 1arrays上启动
    • / tmp和第二个vgroup(non-raid)的两个lvm(线性卷)上的特殊/备份。 使用最后一个驱动器,其他3个扩展器保留为快照。

第二道防线是定期备份:它们是由cron脚本构成的,基本上每天都会启动(例如svn的hotbackup,trac站点,db文件的副本等等)或每周(数据库转储,svn转储等) )做每个备份的确切方式取决于服务; 例如,Subversion为(快速)热备份(使用硬链接等)和文本转储提供工具,但是一个简单的rsync用于数据库,由lvm快照创build。

所有这些备份都在(本地!)/备份分区上(要快); 这个分区通常以只读方式挂载; 两个sudoeable脚本用于在rw模式(备份开始)和ro(最后)重新绑定它。 锁文件上的信号量用于处理并发备份。

每次将/ backup切换到ro(以及每隔4个小时),就会安排一个镜像操作(使用'at'和一个小的延迟来连接来自第三行的更改)。 镜像是通过rsync传输到不同的服务器上的,从磁带上(每天只有一年的保留时间)将数据存档,并通过networking传输到远处的terra站。

为了避免失去一整天工作的风险,以最小的带宽成本,还有第三条线路,其中包括进行增量备份 – 在可能的地方。

例子:

  • 对于Subversion来说,每个修订都从一个单一的(压缩文件),提交后和revpropschange挂钩(使用svn-backup-dumps)
  • 对于数据库,使用连续归档(&PITR概念)

这些增量是使用与每日和每周复制相同的概念保存的(首先到本地备份分区,第二个主机有一个小的延迟)。 当然,每日复制和每周转储脚本必须处理增量的旋转。

注意到这个第三行非常接近警告的备用服务器(这是向这个概念迈出的必要步骤)。

最后,服务器本身的configuration(如果需要设置一个新服务器,则将工作单元化)。 由于我没有被重影解决scheme所说服(新机器将有不同的硬件,磁盘configuration等),我会设置一个专用的Subversion版本库,在这个版本库上我已经手动编辑了每个脚本或configuration文件直接或间接通过用户界面)。 所以文件系统的根(/)是一个工作副本。 此外,每天计划的cron任务负责保存已安装软件包(dpkg),分区表(fdisk),raid和lvm设置等的列表。

顺便说一句,这当然是最薄弱的一点:服务器configuration是在一个颠覆的回购,由“相同”主机服务。 无论如何,如果需要的话,使用来自不同机器(甚至是Windows系统)的存储库备份(快速备份或转储)相当容易。

另外,在主系统上触摸任何脚本(或者软件包升级)之前,我也会尽可能地做出lvm快照。 但是由于其他业务引入了大量的惩罚,这些lvm快照的生命周期应尽可能短。

那么,我希望它可以帮助,或者至less给出想法…

我知道的大多数人使用Bacula为此目的。

http://www.bacula.org/en/

他们有相当不错的文件,但这里有一篇文章,通过一些基本知识。

http://www.linux.com/archive/feature/132562

柯蒂斯·普雷斯顿(Curtis Preston)在他的网站和博客上写了O'R eilly的备份书 。 他有一些关于Linux备份和基于rsync的工具的部分。

Mondo Rescue是一款免费的图像备份/恢复工具(apt-get install mondo), G4l也是一个选项。 这两个对备份一个盒子非常有用。

Amanda是一个集中的备份解决scheme。

我想说,你的数据是重要的事情,备份,使用多种方式,例如rsync到远程框+ cpio到USB棒。 所有其他的东西都可以重build,你可以从ubuntu切换到Fedora,并且随身携带你的数据,这只需要更多的工作,你永远不能找回丢失的数据,所以要加倍确保你有数据覆盖。

无论你select什么。 做一些恢复和舒适做他们。 没有什么比在半夜恢复系统更糟糕的事情,然后找出困难的方式,你有什么错误,你的备份剁碎!

已经有很好的备份策略。 我爱上了一个简单的备份工具: 备份pipe理器 。

备份pipe理器是非常轻量级的(只是一些脚本,真的),并且易于configuration。 它知道如何备份SVN库,MySQL数据库,并可以运行特定的命令来备份其他系统,你不能只是复制文件备份。 它以标准文件格式(tar,zip等)存储备份数据,并将其保存到许多不同的存储区域:本地磁盘,FTP服务器,scp,Amazon S3 …可能使用GPG密钥对其进行encryption。 另一个重要的一点是它已经被打包在Debian和Ubuntu中。

绝对是一个简单而有效的方式,尽pipe你可能想要更高级的东西。

在Amazon S3上保存备份非常好。

对于备份,我build议使用重复性和DT-S3-Backup bash脚本。

DT-S3-Backup旨在使用重复和Amazon S3自动化和简化远程备份过程。 脚本configuration完成后,您可以轻松地进行备份,恢复,validation和清理,而无需记住许多不同的命令选项。