专用服务器自动备份解决scheme

我在云环境中有一个专用的Ubuntu Web服务器,我正在寻找一个很好的方法来做自动备份

我想用web应用程序备份一些目录,以及我所有的MySql数据库。 至于目标:每两个小时在本地创build快照,每六个小时创build一个远程ftp服务器。 同时删除超过7天的备份存档(localy + ftp),并通过电子邮件通知任何问题。

现在为了实现这个function,我使用了cron + shell脚本和http://www.mysqldumper.net/ ,但实际上这并不能满足我的需求。 mysqldumper不会自动知道有关新的数据库,并且shell脚本不会通知问题。 这是我必须时不时检查,我不信任。

我GOOGLE了一下,似乎大多数人用shell脚本解决这个问题。 这是你可以信任的方法吗? 有没有任何web-gui工具,我错过了? 也许这样做有一个更聪明的开始? 我有点困惑。

其实我正在使用rsnapshot进行备份。 它不能备份mysql数据库本身,但它允许在备份之前和之后执行脚本。 所以在执行rsnapshot之前:

/usr/bin/ssh remote_host 'mysql -N -e "SHOW DATABASES;" | while read db; do mysqldump --skip-comments $db |gzip > ~/db/${db}.sql.gz; done' 

所有的mysql设置都存储在〜/ .my.cnf中,备份完成后,rsnapshot执行脚本删除远程主机上的转储。

此外,rsnapshot使用硬链接进行备份时,因此它可以节省空间,并在完成任何时刻完成备份。

Rsnapshot使用rsync传输数据,因此它比ftp更安全。

我们有类似的情况,我们使用automysqlbackup (而不是mysqldumper,如你的情况)和rsnapshot。 Automysqlbackup还可以通过电子邮件通知您。

您似乎对备份有特定的要求:您知道要备份哪些内容,您希望使用哪些间隔,如何删除旧备份等等。我认为您不太可能find免费的基于gui的应用程序以你喜欢的方式做所有的事情,并把它全部自动化。

我build议的解决scheme是使用命令行工具来完成这些步骤,然后使用Perl或Python等脚本语言将它们连接在一起,使其成为单一的cron-started过程。 您可以在脚本中捕获子stream程返回值并采取适当的操作。 你可以做任何你喜欢的日志,你甚至可以添加validation步骤和恢复testing到你的脚本。 我相信这种解决scheme不仅仅是基于gui的应用程序。

我曾经使用shell脚本进行备份,但是我放弃了,因为它们最终是无法维护的。 我使用Bacula开源networking备份和恢复解决scheme 。 一旦我运行了,我再也没有回头。 它应该做你需要的一切和更多(我不会列出所有的function在这里,因为我相信有更好的指导可以find谷歌)。

Bacula将通过电子邮件发送关于成功或失败的备份报告。 您可以为完整备份和增量备份设置复杂的计划。 您可以将备份跨越多个存储介质上的多个卷。 服务器和存储系统都可以在不同于客户机的不同机器上运行。

具体来说,你提到备份数据库。 Bacula支持在备份的各个阶段运行客户端和服务器端脚本,例如,您可以在备份开始之前将所有数据库转储到文件。

我使用backupninja和duplicity的组合来备份我的服务器。 Backupninja有能力备份MySQL数据库。 Duplicity使用类似于rsync的algorithm创build增量备份(可选地encryption),并且可以使用许多协议(如SCP / SFTP,FTP,WebDAV或存储在Amazon S3中)传输备份。

如果您在云端安装,则应考虑EC2。 没有比用新的实例在几分钟之内就能提出的更好的备份。 所有你需要的是一些定期的快照,你将在失败的情况下被设置。