基于linux系统网站的备份

出自翠花

跳转到: 导航, 搜索

仅仅分享一下中小型网站的备份经验,并非一个权威的指南。前提条件是您的网站使用独立主机或者虚拟独立主机。您拥有该机器的管理员权限。

微型网站,有些可能仅仅是一个博客或者其它小型应用程序的网站,并没有系统管理员的权限,应该使用导出,导入应用数据的工具。网站拥有者可能还需要和您的主机租赁商寻求沟通,找到最合适的备份方法。

目录

备份策略

时间就像河流,永远不会停歇。

定义备份的集合

任何网站的数据都在不停增长,包括程序和数据。在某一时刻的程序和数据的集合,都可以当作网站的一个备份。

最简单的想法是备份整个操作系统,但是这并不是一个所有情况都很现实的选择,操作系统可能很庞大,备份可能占用很多资源,甚至会造成您不可容忍的宕机时限。

只备份数据库如何呢?有很多的配置文件,包括WEB服务器,电子邮件服务器,电子证书,您一定不想在重新安装的时候重新编辑。

所以备份对象永远是给定的数据和程序的集合。您必须有恰当的原则挑选这些文件,和数据库内容。

备份媒介

没有专门的备份硬件,磁带机,光盘,等等,这是中小网站的常态。

某个网络目录?FTP到本地硬盘?决定取决于您希望应付什么样的事件。

  1. 机器误操作/病毒,等等,导致文件或数据丢失
  2. 不明原因的宕机,主机上的所有文件丢失。
  3. 地震,火灾等物理灾难

对于第一种事件,您可以在租赁的主机上创建一个目录,创建备份文件就可以。

对于第二种事件,您可以选择网络目录或者本地硬盘。

对于第三种事件,您可能需要选择异地的物理设备或者主机租赁商。例如,如果您本人和您的主机服务商在同一个城市,即便FTP到本地硬盘也不能可靠应付这种灾难。

数据及时性和完整性要求

网站必须恢复到什么时间的数据,上一笔交易?前一天的完整数据?上个月的完整数据?是否必须包括更新记录?

这里举两个例子,

  • 完整备份到前一天的数据。任何时刻,都保证拥有前一天的数据和程序备份。这样您不需要管理增量数据。
  • 增量备份,备份两个礼拜前的数据和程序一份,以后每个礼拜备份一次增量数据。对于当前最近的一个礼拜,每天备份一次增量数据和程序。对于最近的一天,保留所有的变更记录。这样您可以保证用户所有已提交的更改生效。

显然,增量备份对于中小网站的管理在技术上提出了极高的要求,我们这里不予进行详细讨论。

备份实例

服务器端bash脚本

一个简单的非增量备份的例子,

cd /home/myusername/bk
dt=$(date +'%y%m%d')
mysqldump -u dbuser --password=**** --all-databases > db$dt.sql
tar -czvf web$dt.tgz /var/www/html /etc/httpd
/usr/sbin/slapcat > ldap$dt.ldif
dtyest=`TZ="GMT+24" date +'%y%m%d'`
rm -rf db$dtyest.sql
rm -rf web$dtyest.tgz
rm -rf ldap$dtyest.ldif

在linux或者unix的cron目录中,例如/etc/cron.daily,创建一个文件,例如me.cron,注意chown和chmod,保证程序可以被正确的用户执行。

将上述内容拷贝到文件中。系统会每天自动执行它。

执行顺序是,创建三个文件,mysqldump创建的是数据库备份文件,tar创建程序和apache配置的备份文件。SLAPCAT创建ldap用户的备份。文件名都是一个前缀加上当天的日期,然后再加上MIME后缀。然后角本会删除前一天的备份文件。

如果您先备份数据文件,然后将其和程序和配置文件一起打包,也许这个角本还可以更短一点。

将备份文件下载到本地或其它网络

你可以使用FTP。但是我猜想一个好的管理员一定希望使用命令行完成这行工作。

linux下可以使用SCP,非常安全的工具。

在Window下可以使用著名网络工具PuTTY包中的PSCP。

pscp "yourusername@cuihua.org:./bk/db090111.sql" "d:\temp\abc.sql"

其中,本地文件名也可以是URI标识符,例如FTP目录或者主机名称和目录。