首页  ·  知识 ·  基础设施
跨平台下服务器数据的自动备份
网友     数据中心  编辑:dezai   图片来源:网络
让系统定期自动备份数据,并对备份出来的文件自动异地保存,不仅很好地保障了数据的安全性,而且大大
让系统定期自动备份数据,并对备份出来的文件自动异地保存,不仅很好地保障了数据的安全性,而且大大减轻了信息维护人员的负担。本文介绍的方法简单易行,在很大程度上实现了数据的异地容错,确保了数据安全。

Linux作为网络操作系统在稳定性、安全性、网络性能等方面的优越性,使得其在服务器方面的应用越来越广泛。并且随着开源潮流的蓬勃发展,开放源代码的LAMP(LAMP是基于Linux,Apache,MySQL和PHP的开放资源网络开发平台)已经与J2EE和.Net商业软件形成三足鼎立之势,基于LAMP平台的应用系统也与日俱增。笔者所在的学校就利用LAMP平台为广大师生用户提供安全、稳定、高速的web网站服务和BBS论坛服务。

作为服务器管理员,除了提供必需的网络服务外,最主要的是要保证服务器上数据的安全。数据才是网站、论坛的核心,可是人为错误、硬盘损毁、电脑病毒、自然灾难等都有可能造成数据的丢失,给网站、论坛用户带来极大的损失。此时最关键的问题在于如何尽快恢复计算机系统,恢复原有数据,使其能正常运行。

为确保数据的安全性,应将数据以某种方式加以保留,以便在系统遭受破坏或其他特定情况下,重新利用备份的数据恢复各种应用服务。笔者在对linux服务器的维护管理中,总结出一种在linux服务器下数据的定期双机自动备份的有效方法。

其中,主服务器运行在Linux环境下。提供Web网站、BBS论坛服务,并定期进行整个数据的全备份,同时将数据上传到提供flp服务的Windows2003备份服务器。实现对主服务器数据的本地、异地双备份,以提高数据的安全性。

2 相关技术

在Linux环境下,实现数据跨平台自动备份的方法是借助于Linux操作系统提供的tar命令和cron定时服务共同实现本机备份,然后再通过Ftp传输协议实现异地备份。

2.1 Linux操作系统中的tar命令

tar是一个已移植到Linux中的经典UNIX命令,是tapearchive(磁带归档)的缩写,最初设计用于将文件打包到磁带上,它是—个基于文件的命令,本质是连续地、首尾相连地堆放文件。使用tar可以打包整个目录树,这使得它特别适合用于备份、归档文件,可以全部还原或从中展开单独的文件和目录。

使用tar命令只需将它指向一个目的(可以是文件或设备),然后指定您想要打包的文件。您可以通过标准的压缩类型来动态压缩归档文件,或指定一个自己选择的外部压缩程序。要通过bzip2、压缩或解压缩文件,可使用tar—z命令。

语法:tar(主选项+辅选项)文件或者目录

使用该命令时,是必须要有主选项,它告诉tar要做什么事情,辅选项是辅助使用的。

主选项:

c创建新的档案文件。如果用户想备份—个目录或是一些文件,就要选择这个选项。

t列出档案文件的内容,查看已经备份了哪些文件。

u更新文件。即用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。

x从档案文件中释放文件。

辅助选项:

f使用档案文件或设备,这个选项通常必选。

m创建多卷的档案文件,以便在几个磁盘中存放。

v详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。

z用gzip来压缩,解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也要使用该选项进行解压缩。

2.2 Linux中的定时机制

定时自动执行可以通过Linux中的守护程序cron来完成。cron是—个系统调度进程,可以按规定的时间间隔自动执行预定的命令或程序,具有定时功能。系统提供有—个crontab命令允许用户提交、编辑或删除需定时执行的作业,但并不是每个用户都有权使用crontab命令,系统通过cron.allow和cron.deny这两个文件来允许或禁止用户使用该命令。在/etc/cron.allow文件中列出的用户将被允许运行cron作业,而在/etc/cron.deny文件中列出的用户将被拒绝对cron的访问,这两个文件都使用了每行—个用户名的简单格式。用户可以运行crontah命令,用cron能识别的格式输入一些记录,每一行指定了要运行的命令及运行时间。crontah命令把用户输入的记录存入/var/spool/cron目录下,生成一个和用户名相同的crontah文件(如:一个管理员的Linux用户useone输入的命令生成的文件将是/var/spool/cron/userone),守护进程crond定期读取这个文件,并在指定时间执行其中的命令或程序。

crontab文件的每行都包含6个域,其中前5个域是指定命令被执行的时间,最后一个域是要被执行的命令,各个域之间用空格或制表符分隔。

格式为:MHDmd cmd

其中:M代表分钟(0-59);H代表小时(0-23);D代表天(1-31);m代表月份(1-12);d代表星期几(0-6);cmd代表要运行的命令。在表示时间的域中,可以是用横杠来表示的—个时间范围,也可以是用逗号分开的多个值,或是用·匹配的所有值。

使用crontab命令创建crontab文件的方式有两种:

(1)首先用文本编辑器建立—个新文件,向其中写入需要运行的命令和执行的时间,然后用crontah命令来安装这个文件,使之成为该用户的crontab文件。格式如下:

 

2.3 Shell编程简介

利用vi等文本编辑器编写Shell脚本的格式是固定的,如下:

#!/bin/sh

#comments

Your commands go here

首行中的符号#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。如果首行没有这句话,在执行脚本文件的时候,将会出现错误。后续的部分就是主程序,Shell脚本像高级语言一样,也有变量赋值,也有控制语句。除第一行外,以撑开头的行就是注释行,直到此行的结束。如果一行未完成,可以在行尾加上”,这个符号表明下一行与此行会合并为同一行。

编辑完毕,将脚本存盘为filename.sh,文件名后缀sh表明这是—个Bash脚本文件。执行脚本的时候,要先将脚本文件的属性改为可执行的,其方法为:chmod+x filename.sh执行脚本的方法是:./filename.sh。

2.4自动异地保存的方法

对服务器备份出来的文件进行异地保存,可以利用FTP命令将主服务器所备份的数据通过Shell脚本自动上传到异地的FTP服务器,下面简单介绍下所用到得ftp命令。

3 方法实现

3.1获得权限

Linux系统中的用户要使用erontab命令,必须拥有使用权限。用户获得权限的方法是:以超级用户(root)身份登录,在/etc目录下查看文件cron.allow和cron.deny是否存在。若cron.allow文件存在,cron.deny文件不存在,则查看用户userone用户名是否在该文件中,如没有,应添加到cron.allow文件中去(1个用户名占1行);若cron.allow文件不存在,cron.deny文件存在,则查看cron.deny文件中是否有userone用户名,如有应予以删除,这样useroner用户就有权使用crontab命令了;若cron.allow和cron.deny文件都不存在,则除超级用户以外的其他用户都不能运行crontab命令。

3.2编写Shell脚本

用vi编辑器编辑如下脚本文件并命名为backup.sh,将脚本文件的属性设置为可执行,存放在/data/目录下。该脚本可以实现本地备份30天的数据,并且通过FTP存放数据到异地FTP服务器中。

 

 

3.2设置crontab文件

考虑到数据的安全性,故采用每天凌晨1:30执行备份一次的策略。设置crontab文件的步骤如下:

在打开的终端输入crontab e进入编辑模式,输入如下内容:

30 0* * */data/backup.sh

(1)经笔者测试对于Mysql数据库数据可以在不停止Mysql服务的情况下,把它当做文件数据通过上面的方法来备份。当然,为了确保数据库安全也可在使用tar命令打包数据前,先使用#/etc/init.d/mysql stop命令停止Mysql服务,待备份结束后立即通过#/ete/init.d/mysql start命令开启。

(2)文中例子是每天凌晨1:30执行备份,也可根据实际情况灵活确定数据库自动备份的时间点,每天或每月备份。

(3)如有其他需定时执行的作业,只需通过crontab e命令,添加相应条目即可。

4 结束语

让系统定期自动备份数据,并对备份出来的文件自动异地保存,不仅很好地保障了数据的安全性,而且大大减轻了信息维护人员的负担。本文介绍的方法简单易行,在很大程度上实现了数据的异地容错,确保了数据安全。
 

 

本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的