我需要在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脚本通常是第一件事; 但根据您可以“接受松动”的数据量以及您需要的可靠性水平,还需要执行其他操作。
所以你必须问自己的问题是:
备份的目的 – “保护”您的数据/服务:
可接受的停机时间(和数据丢失),以防出现不同types的问题
根据这些问题的答案,您将看到每日备份是否足够,或者您是否需要保留在不同地理位置的热备用服务器。
我不是这个领域的大师,但也许我的例子可以给你一些想法。
我正在pipe理一个小型(debian)服务器,提供数据库(postgresql),Subversion版本库,trac站点以及其他类似的function。 服务器主要是由我们的研发团队使用的,很less有人(约20个客户为颠覆者)和一些仪器(~50个客户端的数据库),但他们几乎在24 / 24,7 / 7天工作(特别是仪器,为数据库提供措施)。
如果出现平均问题(如主要硬件故障),则可以接受2到4小时的停机时间(仪器可以在本地工作一段时间)。 所以我没有(还)警告备用服务器,但只有一组本地和远程备份和转储。
因此,要求并不严格:大约有一百个数据,还有不到一百个客户端。
第一道“防线”由磁盘冗余和分区提供(不仅有助于防止磁盘崩溃,还可以进一步备份或升级服务器)。机器配有4个磁盘(每个500Gb)。
第二道防线是定期备份:它们是由cron脚本构成的,基本上每天都会启动(例如svn的hotbackup,trac站点,db文件的副本等等)或每周(数据库转储,svn转储等) )做每个备份的确切方式取决于服务; 例如,Subversion为(快速)热备份(使用硬链接等)和文本转储提供工具,但是一个简单的rsync用于数据库,由lvm快照创build。
所有这些备份都在(本地!)/备份分区上(要快); 这个分区通常以只读方式挂载; 两个sudoeable脚本用于在rw模式(备份开始)和ro(最后)重新绑定它。 锁文件上的信号量用于处理并发备份。
每次将/ backup切换到ro(以及每隔4个小时),就会安排一个镜像操作(使用'at'和一个小的延迟来连接来自第三行的更改)。 镜像是通过rsync传输到不同的服务器上的,从磁带上(每天只有一年的保留时间)将数据存档,并通过networking传输到远处的terra站。
为了避免失去一整天工作的风险,以最小的带宽成本,还有第三条线路,其中包括进行增量备份 – 在可能的地方。
例子:
这些增量是使用与每日和每周复制相同的概念保存的(首先到本地备份分区,第二个主机有一个小的延迟)。 当然,每日复制和每周转储脚本必须处理增量的旋转。
注意到这个第三行非常接近警告的备用服务器(这是向这个概念迈出的必要步骤)。
最后,服务器本身的configuration(如果需要设置一个新服务器,则将工作单元化)。 由于我没有被重影解决scheme所说服(新机器将有不同的硬件,磁盘configuration等),我会设置一个专用的Subversion版本库,在这个版本库上我已经手动编辑了每个脚本或configuration文件直接或间接通过用户界面)。 所以文件系统的根(/)是一个工作副本。 此外,每天计划的cron任务负责保存已安装软件包(dpkg),分区表(fdisk),raid和lvm设置等的列表。
顺便说一句,这当然是最薄弱的一点:服务器configuration是在一个颠覆的回购,由“相同”主机服务。 无论如何,如果需要的话,使用来自不同机器(甚至是Windows系统)的存储库备份(快速备份或转储)相当容易。
另外,在主系统上触摸任何脚本(或者软件包升级)之前,我也会尽可能地做出lvm快照。 但是由于其他业务引入了大量的惩罚,这些lvm快照的生命周期应尽可能短。
那么,我希望它可以帮助,或者至less给出想法…
我知道的大多数人使用Bacula为此目的。
他们有相当不错的文件,但这里有一篇文章,通过一些基本知识。
柯蒂斯·普雷斯顿(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和清理,而无需记住许多不同的命令选项。