提示备份ubuntu服务器

我有一个Ubuntu服务器托pipe一个PHP5 / MySQL的Web应用程序。 我也有另一个服务器(非现场)的目录只是为了我的webapp服务器的备份。 目前,我有一个简单的cron作业,执行以下操作:

  1. 将/ var / www复制到本地备份目录。 命令: cp -ua /var/www /backup/www
  2. 执行information_schema的mysqldump和我的应用程序的数据库,并将这些文件复制到本地备份目录。
  3. 将备份服务器安装为sshfs卷。
  4. 将本地备份目录中的所有文件复制到sshfs卷。

问题:

  1. 这是一个有效的解决scheme还是专用备份程序工作更好/更快?
  2. 我是否覆盖了我所需要的一切? 例如:是否还有我应该备份的configuration文件(PHP,Apache2,MySQL)?
  3. 如果有一个专门的备份程序可以更好地满足我的需求,那么您会推荐哪个?

感谢您的任何build议

我会推荐一些可以进行增量备份的方法,因为这样可以回到前几天更改的文件。 我们使用dirvish (它可以从ubuntu的仓库获得) – 基本上它是用perl写的rsync的一个包装,它使设置一个系统运行常规的增量备份变得更容易,然后根据给定的规则使它们失效。

在我们的系统上,我们保留了7天的备份,但保留了一个月的第一个备份,并且保留了一个月的第一个备份,所以通常您可以find前一段时间修改和删除的文件。 对于小而重要的事情,我们有更长的到期时间。

至于你应该备份什么,如果你有足够的空间备份一切,除非你确定你不需要备份。 使用增量的rsync备份,您只能复制自上次备份以来发生更改的文件 – 我宁愿在备份驱动器上有一个额外的3GB属于操作系统的静态数据,而不是发现它缺less一个重要文件需要恢复它。

至less我会根据服务器上运行的东西来备份/ etc /和/ var的大部分内容。

如果您的mysql数据库相当小,那么您当前的方法可能是可以接受的,但是因为您需要locking数据库以生成转储,所以在大型数据库上这是不实际的。 由于很多人运行一个slave mysql服务器,它只是备份服务器上主服务器的只读副本,并使用它来生成备份。

关于如何做到这一点的MySQL文档是相当不错的,我在晚上第一次通过它,没有很多以前的MySQL经验。

我们有我们的奴隶mysql服务器绑定到dirvish,所以每天它会生成每个单独的数据库的转储,以及/ var / lib / mysql的一个完整的副本(这是在这样做之前停止mysql服务器)

在Ubuntu机器上查看备份mySQL和SVN的便捷方式 ,这几乎可以总结出您需要的东西。

简而言之;

  • 有几个标准的软件包, 我有与backupninjardiff-backup良好的经验。 看看有什么可用的,什么适合你的需求,并select。
  • 你应该保留一个/etc/ (服务器configuration)的备份,所有你的web的东西,RCS数据,数据库。 我通常也复制主目录,因为我通常有一堆很好的小脚本,这些脚本实际上不适合其他任何地方,如果我必须恢复服务器,那么有一个“已知的”shell设置是非常好的,首选编辑器等
  • 当你在上面做时,至less在你的脑海里 – “当事情变糟时我该怎么办? (即知道备份中的什么位置以及如何从中进行恢复。)

我有我的服务器备份一切我需要备份到一个焦油,然后它被复制到外部备份。 该脚本也将从7天前删除备份。 我忘了我在哪里find它,但我没有写。

 !/bin/bash # fecha has a formated date fecha=`date +"%d-%m-%Y"` # Backup and gzip the directory sudo tar cvzpf /backups/backup-$fecha.tgz --same-owner --exclude="/export/*" --exclude="/backups/*" --exclude="/home/error.log" --exclude="/proc/*" --exclude="/media/*" --exclude="/dev/*" --exclude="/mnt/*" --exclude="/sys/*" --exclude="/tmp/*" / 2>/home/error.log # Rotate the logs, delete older than 7 days find /backups/ -mtime +7 -exec rm {} \;