磁带配置工具.docx

上传人:b****3 文档编号:4386279 上传时间:2022-12-01 格式:DOCX 页数:12 大小:23.59KB
下载 相关 举报
磁带配置工具.docx_第1页
第1页 / 共12页
磁带配置工具.docx_第2页
第2页 / 共12页
磁带配置工具.docx_第3页
第3页 / 共12页
磁带配置工具.docx_第4页
第4页 / 共12页
磁带配置工具.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

磁带配置工具.docx

《磁带配置工具.docx》由会员分享,可在线阅读,更多相关《磁带配置工具.docx(12页珍藏版)》请在冰豆网上搜索。

磁带配置工具.docx

磁带配置工具

 

第四章配置工具

下载star源代码

无论您用什么介质备份(磁带或者别的),您都需要star程序。

您可以在ftp:

//ftp.fokus.gmd.de/pub/unix/star/alpha/找到最新的star源代码(目前最新版本是star-1.3a8.tar.gz)。

下载了这个程序以后,请按照以下步骤安装……

star编译...

#tarxzvfstar-1.3a8.tar.gz

#cdstar-1.3

#make

在所有内容编译好后,我们就要安装star了。

千万不要运行“makeinstall”;它会安装几个我们并不想安装的附加组件。

请您依据下一屏内容进行安装。

...和安装

#install-m0755star/OBJ/*/star/usr/bin

#cd../..

现在请您到“star”源目录下。

然后,如果您的系统FHS2.1兼容并且手册页存在/usr/share/man目录下,请把最后一行正确地修改为:

#gzip-9star.1

#install-m0644star.1.gz/usr/man/man1

mt

现在,轮到mt命令了。

mt用于执行各种各样的磁带功能,如回卷、弹出、前进到下一文件标记等。

由于mt与磁带相关,只有在要把数据直接备份到磁带上的时候您才会用到这个命令。

可能您已经安装了某一版本的mt;请确认它支持“setblk”命令(输入“manmt”试试看)。

如果不支持,或者您只是想确保运行的是可用的最新最好的mt版本,您可以在下面的指导下从源码开始安装mt-st-0.6。

下载mt

首先,从http:

//www.ibiblio.org/pub/linux/system/backup/下载mt-st源码(最新版本是mt-st-0.6.tar.gz)。

然后,按照下一屏上的步骤解压缩、编译和安装……

mt的编译和安装

#tarxzvfmt-st-0.6

#cdmt-st-0.6

#make

#install-m0755mt/usr/sbin

#install-m0755stinit/usr/sbin

#gzip-9mt.1stinit.8

#install-m0644mt.1.gz/usr/man/man1

#install-m0644stinit.8.gz/usr/man/man8

现在,mt(和stinit)就会被安装了。

我建议您看一下/usr/bin、/bin以及/sbin目录下是否仍有旧的mt文件副本,如果有的话,一定要重命名为mt.old。

安装好了以后,接下来我们要把备份工具汇总一下。

第五章磁带驱动器技术

块大小

在开始动手写备份脚本之前,了解磁带上的数据存储格式是很重要的。

Linux把数据以相同大小的块(也叫做记录)的格式写到磁带上。

每两个记录之间都会有一个叫做记录间空白(inter-recordgap)的特殊标记被写到磁带上。

因此,当磁带上存储了300Mb的备份数据时,这些数据就被转换成一些大小相同的记录,每两条记录之间由记录间空白隔开。

Linux块大小

Linux系统的记录/块大小缺省为1kb。

现在磁带驱动器和磁带每秒钟能处理数兆字节的数据流,1kb大小的块绝不是最佳选择,原因有以下两点。

第一,每一条记录间空白都要占用磁带空间,因此文件块越小,“实际的”磁带容量越小。

而且,现在大多数磁带驱动器都针对较大的块做了优化。

优化配置块大小

例如,我的EcrixVXA-1磁带驱动器是对64kb的块作了优化的,使用这么大的块备份比用缺省大小(1kb)的块速度快了大约50%。

要想知道您的磁带驱动器的最佳的块大小,最好是去访问http:

//www.linuxtapecert.org。

如果在那里找不到所要的资料,可以向制造商核查—或者只需对不同大小的块做一些试验。

我马上就告诉您怎样设置块大小。

文件标记

到目前为止,我们已经知道如何把单堆的数据写到磁带上—分解成许多小的块,这些块被记录间空白分隔开来。

但是您怎么才能把多堆的数据写到磁带上呢?

比如说,您想把两个存档文件依次写到磁带驱动器上。

事实上,这个过程非常简单,它依赖于一个特殊的磁带标识,叫做文件标记。

两种设备

要想理解文件标记,先明白磁带设备的两种不同类型,即回卷设备和非回卷设备之间的区别是非常重要的。

在示例中,我们使用的是SCSI磁带,因此回卷设备和非回卷设备分别为/dev/st0和/dev/nst0。

回卷设备

下面是关于回卷设备(/dev/st0)是如何工作的。

我们假定在驱动器里有一盘回卷磁带,那么您就可以象下面这样进行一次完整的系统备份:

#cd/

#star-cv-f/dev/st0.

大量的记录以及记录间空白被写到磁带上。

备份完成以后,在磁带上写上文件标记,并且磁带被回卷。

非回卷设备

但是如果我们用的是/dev/nst0,磁带就不会回卷—而会刚好停在文件标记的后面,这样我们就可以把多个文件存在一盘磁带上了。

假定磁带驱动器里有一盘回卷过的磁带,执行以下命令:

#cd/

#star-cv-Vpat=home/\*-Vpat=tmp/\*-Vpat=proc/\*-f/dev/nst0.

#cd/home

#star-cv-f/dev/nst0.

第一个star命令会把除了/home、/tmp和/proc目录下的文件之外的所有文件的备份dump到磁带上。

备份完成以后,文件标记会被写到磁带上。

然后,开始进行包括/home目录树下所有内容在内的另一份备份。

在这份备份完成之后,也会写上一个文件标记。

回卷

关于这一点,您可以键入以下内容回卷磁带:

#mt-f/dev/nst0rewind

……或者,您可以键入以下内容回卷并弹出磁带:

#mt-f/dev/nst0offline

多存档文件备份的优点

那么,前面的示例中所采用的双存档文件备份究竟有哪些优点呢?

当然有。

我们在第一份备份中包括了除/tmp、/proc和/home之外的所有内容,说明这份备份包括系统恢复和重新运行需要的所有文件。

这样,如果硬盘驱动器出了故障的话,您可以用第一份存档文件在新的硬盘驱动器上恢复系统。

然后,您可以在恢复后的OS上重新引导,并从另外一份存档文件恢复用户数据。

而且,如果只需要恢复被用户偶然删除的一个文件,您可以把它从第二份存档文件上解压缩,并且tar命令并不一定要读取所有的系统文件。

第六章MT的功能

访问磁带上的存档文件

正如您所看到的,在一盘磁带上同时存两份存档文件简单易行。

但是,怎样才能访问这些数据呢?

幸好,“mt”命令来帮忙了。

要输出磁带上的第二份存档文件,您可以键入:

#mt-f/dev/nst0asf1

#star-tv-f/dev/nst0

“mtasf”命令先回卷磁带,然后前进到您指定的文件标记号。

您会发现,当这两份存档文件在同一磁盘文件系统时,它们没有相应的文件名—相反的,mt使用从零开始的数字访问它们。

mtfsf

您也可以象下面这样,通过两次mt命令来实现:

#mt-f/dev/nst0rewind

#mt-f/dev/nst0fsf1

#star-tv-f/dev/nst0

这一次,我们利用“fsf”命令前进到磁带当前位置以后的第一个文件标记。

磁带定位

如果您想列出第一份存档文件的内容,接着是第二份存档文件,您可以键入以下内容:

#mt-f/dev/nst0rewind

#star-tv-f/dev/nst0

#star-tv-f/dev/nst0

在这个例子中,第一个star命令输出0号存档文件的内容,然后前进到第一个文件标记的后面,正好在下一存档文件的前面。

接着,第二个star命令准备开始读取第二份存档文件的内容。

这里有另外一种方法,完成相同的事情但效率比较低(由于它执行了附加的回卷和搜索)。

#mt-f/dev/nst0asf0

#star-tv-f/dev/nst0

#mt-f/dev/nst0asf1

#star-tv-f/dev/nst0

现在您应该掌握了文件标记是如何工作的。

接下来,我将告诉您如何设置磁带块大小,然后我们准备开始学习磁带备份脚本。

设定块大小

现在,该学习如何设定和检测磁带块大小了。

正如我早先所提到的,Linux缺省磁带块大小为1kb。

同时,mt有一个专门的“setblk”命令用来设定缺省的块大小。

因此,您可能会想当然的认为可以用setblk设定您想要用的块大小,然后就打算付诸实践了。

事实上,事情并非如此简单。

使块大小可变

如果您想要使用不同大小的块,着手解决的最好办法是把驱动器设成块大小“可变”模式。

您可以用setblk命令指定一个大小为0字节的块:

#mt-f/dev/nst0setblk0

用star指定块大小

在块大小可变模式下,您就可以使用star控制块的大小了。

因此,以前您要键入的是:

#star-cv-f/dev/nst0.

……可现在,您得象下面这样指定块的大小:

#star-cvbs=64k-f/dev/nst0.

……现在您的记录长度是64k,对于我的磁带驱动器来说,这就是最佳的块大小了。

关于块大小的怪事

这里是您需要知道的一些有关磁带块大小的有趣而又奇怪的事情。

首先,当您读取磁带的时候,您必须指定适当的块大小。

备份程序无法自动确定块大小。

因此,如果您想列出一份块大小为64k的存档文件的内容,您就需要保证磁带驱动器处于块大小可变模式,然后在star命令行中加以说明:

#star-tvbs=64k-f/dev/nst0

一桩怪事

还有一件怪事。

比方说您正试图读取磁带,可是使用了错误的块大小。

如果读取的块的大小小于写入时块的大小,您会遇到IO错误。

但是,如果读取的块的大小刚好是写入时的整数倍,那么就没问题了。

而如果读取的块的大小大于写入时的块,却又不是整数倍,那么同样会发生IO错误。

这是因为磁带驱动器一次可以读取一个或多个块,可当它读取的是部分的块时,就有些混乱了。

因此,在磁带的标签上写清楚所用的块的大小以便于将来参考是个不错的主意。

我忘记块的大小了

开个玩笑,比方说您忘记了您使用的块的大小,或者您正试图从一盘旧磁带上恢复数据,而您并不知道数据是以多大的块存储的。

有什么方法可以确定磁带上数据块的大小呢?

您很幸运,确实有办法。

首先,把磁带插入驱动器并键入以下内容:

#ddif=/dev/nst0of=/tmp/testblockbs=128kcount=1

现在,键入“ls-l/tmp/testblock”后看看文件的大小—它就等于磁带块的大小。

这是怎么一回事呢

这里要说明的是这个技巧的工作原理。

既然dd包含了关于块大小和记录间隔空白(inter-recordgaps)的所有信息,那么如果我们指定“bs=128kcount=1”,它就知道我们想要读取的是单个的数据块。

dd将会试图一直读到128k,但是如果它在128k之前遇到了记录间隔空白(inter-recordgap),它就明白块已经结束了并停止读取操作。

相当不错,是吧?

“剥取”磁带上的数据

在讨论dd的时候,我就想快点教会您怎样从磁带上“剥取”一个文件。

比方说,您的一盘磁带里有两份star存档文件(每个文件结尾处有一个文件标记),而且您用的块大小为64k。

这里是关于如何把数据从磁带上第一份文件中复制并转存到一个名为filezero.tar的文件里:

#mt-f/dev/nst0rewind

#ddif=/dev/nst0of=/tmp/filezero.tarbs=64k

如果没有“count=”选项,dd就会一直读到文件的末尾(或者如果是磁带的话,会一直读到文件标记)。

dd的其它多种用法

dd是一个功能强大的磁带工具,同样也能用于把存档文件写到磁带上去,还能把存档文件从一盘磁带直接复制到另一盘磁带。

警告—确保您复制到磁带上去的存档文件不是使用gzip或者bzip2压缩的;而应当是纯粹的“.tar”格式的文件。

否则,一个磁带读取错误就会让您不能从磁带上恢复任何数据。

还是依赖您的磁带驱动器的硬件压缩功能(通常是缺省设置的)吧。

 

利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。

  1、创建保存备份文件的目录/mysqldata

  #mkdir/mysqldata

  2、创建/usr/sbin/bakmysql文件

  #vi/usr/sbin/bakmysql

  输入

  rq=`date+%Y%m%d`

  tarzcvf/mysqldata/mysql$rq.tar.gz/var/lib/mysql

  或者写成

  rq=`date+%Y%m%d`

  mysqldump--all-databases-uroot-p密码>/mysqldata/mysql$rq.sql

  /var/lib/mysql是你数据库文件的目录,部分用户是/usr/local/mysql/data,每个人可能不同

  /mysqldata/表示保存备份文件的目录,这个每个人也可以根据自己的要求来做。

  3、修改文件属性,使其可执行

  #chmod+x/usr/sbin/bakmysql

  4、修改/etc/crontab

  #vi/etc/crontab

  在下面添加

  013***root/usr/sbin/bakmysql

  表示每天3点钟执行备份

  5、重新启动crond

  #/etc/rc.d/init.d/crondrestart

  完成。

  这样每天你在/mysqldata可以看到这样的文件

  mysql20040619.tar.gz

  你直接下载就可以了。

 

自动备份Oracle数据库

 

  相信为数不少的系统管理员每天都在做着同一样的工作——对数据进行备份。

一旦哪一天疏忽了,而这一天系统又恰恰发生了故障,需要进行数据恢复,那么此时就无能为力了。

假如每天设定一个固定的时间,系统自动进行备份,那该多好啊!

下面笔者结合实践经验,谈一谈UNIX环境下Oracle数据库的自动备份,以起到抛砖引玉的作用。

  我们计划让数据库在晚上23点做export导出备份,在凌晨2点将备份文件拷贝到磁带上,在凌晨4点将备份文件拷贝到另一台UNIX机器上,为此我们可进行如下操作:

  一、导出数据库

  export命令将数据库中的数据备份成一个二进制文件,它通常有三种模式:

用户模式、表模式和整个数据库模式。

本文拟采用用户模式,备份之前,应先建立一个备份目录,以容纳备份文件,比如可建一个/backup目录。

接着我们可在UNIX的Oracle目录下(也可以是其它目录)分别建立两个文件ora—backup,tar—backup。

需要说明的是,前一个文件需要对Oracle的参数进行初始化,为了方便起见,我们不妨将初始化命令放到一个文件中(文件名姑且定为ora—env),再由第一个文件调用它。

  1.ora—env文件对Oracle的参数进行初始化,其内容如下:

  ORACLE—HOME=$ORACLE—HOME;exportORACLE—HOME

  ORACLE—SID=ora73;exportORACLE—SID

  ORACLE—TERM=sun;exportORACLE—TERM

  LD—LIBRARY—PATH=$ORACLE—HOME/lib;exportLD—LIBRARY—PATH

  ORA—NLS32=$ORACLE—HOME/ocommon/nls/admin/data;exportORA—NLS

  PATH=.:

/usr/ccs/bin:

/usr/ucb:

$ORACLE—HOME/bin:

$PATH;exportPATH

  DISPLAY=host1:

0;exportDISPLAY

  NLS—LANG=american—america.zhs16cgb231280;exportNLS—LANG

  2.ora—backup文件对数据库做export导出,导出的文件名可以任意定,本文定为字母“xx”加当天日期,即假如当天日期是12月10号,则导出的文件名为“xx1210.dmp”,以区别于其它日期的备份文件。

  ora—backup文件内容:

  ./oracle/ora—env

  #初始化Oracle数据库

  rq=′date+″%m%d″′

  #把当天日期赋予变量rq

  rm/backup/

  #清空/backup目录

  exptest/testfile=/backup/xx$rq.dmplog=/backup/xx$rq.log

  本命令用于在$提示符下,导出test用户的数据(其口令亦为test),导出文件及日志均放在/backup目录下。

  二、磁带备份

  tar—backup文件将用export命令导出的数据文件拷贝到磁带上。

  tar—backup文件内容:

  tarrvf/dev/rmt/0n/backup/

  本命令可将/backup目录下当天产生的文件备份到磁带上。

本文件中,tar命令使用了三个参数,其中r选项表示向磁带上拷入文件而不破坏磁带原来内容,v选项表示在拷贝过程中显示文件信息,f选项后面加上磁带设备名,指定文件向何处拷贝,n选项表示磁带机不倒带。

/dev/rmt/0表示UNIX主机第一个磁带驱动器,同理,/dev/rmt/1则表示UNIX主机第二个磁带驱动器,依此类推。

  ora—env、ora—backup、tar—backup文件编写完成后,分别使用下述命令:

  chmod755ora—env

  chmod755ora—backup

  chmod755tar—backup

  这样,三个文件就都变成了可执行文件。

  三、异地备份

  我们知道,通常可用FTP命令在两台主机间传输数据,但一般是通过交互方式实现的,即需要手工输入目标主机的IP地址、用户名、口令等。

显然,这不符合自动备份的要求。

所幸的是,我们可以通过编写一个.netrc的文件来达到目标。

这一文件必须命名为.netrc,且必须存放在启动FTP命令的机器上的用户注册目录中,该文件的权限应禁止组内或其它用户进行读访问。

这样,当用户使用FTP命令的时候,系统将会在该用户的注册目录中寻找.netrc文件,如果能够寻找到,将会首先执行该文件,否则,会交互式地提示用户输入用户名、口令等。

  在使用FTP命令之前,应先在另一台作备份用的UNIX机器上建一目录,以容纳备份文件,本文建的目录是/pub。

需要指出的是,为了加快备份速度,两台主机之间的传输速率应尽可能的高,最好位于同一局域网上。

  .netrc文件内容如下:

  machinehost2  

  #host2为作备份用的主机名

  loginoracle  

  #oracle为备份主机上的一个用户

  passwordoracle  

  #oracle用户的口令为oracle

  macdefinit    

  #定义一个名为init的宏,它将在自动注册进程的最后被执行

  bin      

  #文件的传输方式设为二进制

  lcd/backup  

  #进入本地工作目录/backup

  cd/pub    

  #进入备份主机目录/pub

  mput    

  #将/backup目录下的所有文件传输至备份主机

  bye      

  #退出FTP会话进程

  .netrc文件编写完成后,使用下述命令:

  chmod600.netrc

  这样,.netrc文件就只能被该用户所访问。

  四、启动备份进程

  Cron是一个永久进程,它由/etc/rc.local启动执行。

Cron检查/var/spool/cron/crontabs/目录中的文件,找到所要执行的任务和执行任务的时间。

  Crontab文件的每一行由六个域(minutes、hours、dayofmonth、month、dayofweek、command)组成,域之间用空格或Tab分开,其中:

  minutes:

分钟域,值的范围是0到59

  hours:

小时域,值的范围是0到23

  dayofmonth:

日期,值的范围是1到31

  month:

月份,值的范围是1到12

  dayofweek:

星期,值的范围是0到6,星期日值为0

  command:

所要运行的命令

  如果一个域是,表明命令可以在该域所有可能的取值范围内执行。

  如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字本身)。

  如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。

  如果日期域和星期域都有值,则这两个域都有效。

  现在,我们编写一个文件,用以启动自动备份进程。

值得注意的是,该文件只能在Oracle用户名下用crontab-e命令来编辑,否则将不会被定时执行,文件名定为Oracle,文件将放在/var/spool/cron/crontabs目录下。

编辑完成后,可以在Oracle的$提示符下,用crontab-l命令来查看。

  Oracle文件内容:

  023/oracle/ora—backup

  #每天23点对数据库执行备份

  02/oracle/tar—backup

  #每天2点将文件备份到磁带上

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1