资源描述
磁带机的简单使用操作
磁带机设备的关联
下表举例说明了在Linux环境下设备文件是如何和物理设备关联起来的。
正如表中看到的那样,设备名是基于位于针对这种设备类型的分层结构的设备的逻辑数字,而不是其物理ID(SCSI)或者IDE通道(ATAPI)。因此,即使某个SCSI磁带机被分配为SCSI设备的ID4,如果它是SCSI链的第一个磁带设备,则它将是 /dev/st0, 而不是/dev/st4,这种命名惯例有利于跟踪系统中的磁带设备时也适用,甚至在拥有多个驱动类型的磁带设备时也适用。同样,在2.0.X内核下,只支持单个ATAPI设备,2.2版本的内核可以使用多个ATAPI驱动(例如ht0, ht1,...等)。
现在我们来看看这些文件是如何被命名的,回卷和不回卷的区别在哪里呢?简单的说,回卷设备允许在结束操作以后,自动将磁带回卷到开始处,而不回卷设备在操作结束以后,将磁带机停留在当时的位置而不进行回卷操作。对于大多数简单备份操作,回卷设备更适合一些,因为在备份操作结束以后其自动回卷以准备取出磁带。而对于那些复杂的备份操作(如附加备份,逻辑搜索及那些高端备份工具的操作),不回卷设备更适合一些。
在UNIX环境下,磁带机设备文件和物理设备关联的情况就比较复杂了,要和磁带机的类型以及UNIX系统的类型而变,下表只举例说明常用的Sun Solaris操作系统下磁带机设备文件和物理设备关联的情况。
磁带机的命令
下面介绍一下磁带机的读写命令和操作管理命令,最常用的磁带机读写命令是tar, 它可以对磁带进行列目录、读和写目录文件,下面是对磁带机读写命令的介绍:
列磁带目录:tar tvf 磁带机设备文件名
首次写入磁带:tar cvf 磁带机设备文件名 欲记录的文件或目录名
增量写入磁带:tar rvf 磁带机设备文件名 欲记录的文件或目录名
读磁带: tar xvf 磁带机设备文件名 欲读出的文件或目录名
注:上面的磁带机设备文件名即指磁带机设备在Linux、UNIX系统中的关联缩写。磁带机的其他操作命令和更详细的使用说明可参考tar的man page。
磁带机读写命令举例:
$ tar tvf /dev/rmt/0h/* 列磁带目录*/
$ tar cvf /dev/rmt/0h/usr2/ora_bak/full01.dmp.gz /* 首次写入磁带 */
$ tar rvf /dev/rmt/0h/usr2/ora_bak/full02.dmp.gz /* 增量写入磁带 */
$ tar xvf /dev/rmt/0h /usr2/ora_bak/full02.dmp.gz /* 读磁带 */
最常用的磁带机操作管理命令是mt, mt命令是操作磁带机的一个很常用的命令, 利用它可以十分方便地管理磁带机设备,下面是对磁带机操作管理命令的介绍:
拉紧磁带:mt -f 磁带机设备文件名 retension
倒带: mt -f 磁带机设备文件名 rewind
列出磁带机状态:mt -f 磁带机设备文件名 status
擦掉数据:mt -f 磁带机设备文件名 erase
注:关于mt命令更详细的使用说明可参考mt的man page。
磁带机操作管理命令举例:
$ mt -f /dev/rmt/0h retension /* 拉紧磁带 */
$ mt -f /dev/rmt/0h rewind /* 倒带 */
$ mt –f /dev/rmt/0h status /* 列出磁带机状态 */
$ mt -f /dev/rmt/0h erase /* 擦掉磁带数据 */
基本概念
· 磁带是线性存储设备,没有什么分区表的概念,磁头在哪里,就从哪里开始读。
· 磁带机好像只能用root用户操作。
· 磁带上可以划分存储空间,每个存储空间有一个file number,从0开始顺序排列。
· 磁头在存储空间中的位置用block number来表示,0代表开始,大于0的整数代表块,比如39代表磁头在本file number的第39块的位置,而-1则代表磁头位于本file number的结尾。
· 同样一部磁带机,用/dev/st0时是当自动回卷设备使用,每次操作完成之后,磁头都返回file number=0, block number=0, BOT的位置;而用/dev/nst0调用时,操作完成时磁头就停在那个位置,不会回到开头。
· 使用nst非回卷方式,用tar tvf列文件,只有当block number=0时才能出内容,并且列完之后block number为大于0的整数,注意这并不代表本段存储空间的结尾(-1)。
由于磁带机本身具有压缩功能,所以添加文件的时候不建议指定zip或者bz2压缩,因为如果一点点压缩后的数据损坏,会导致全部内容不可识别;如果的确需要压缩的话,可以压缩成本地文件再存储到磁带上,减少对其他文件的影响。
自动回卷的使用方式
这种方式比较简单,用tar直接操作即可,基本上和tar操作本地文件相同。
往新磁带上存储文件,注意如果磁带上已有文件,会被覆盖掉:
tar cvf /dev/st0 file_to_store
向磁带上添加文件:
tar rvf /dev/st0 file_to_store
更新磁带上的同名文件:
tar uvf /dev/st0 file_to_store
列出磁带上的现有文件:
tar tvf /dev/st0
删除磁带上的文件:
tar vf /dev/st0 --delete file_to_delete
但我使用这个命令的时候总是提示错误,文件倒是删掉了,可查看的时候也总有错误信息,难道是无法删除,或者只能全部xvf出来再存到磁带上?不过我们也应当养成一个好的习惯,每次向磁带机存储文件的时候一定要在文件名中带上日期标记。
非自动回卷的使用方式
一般这样使用,都是用到多个存储空间file number的时候;如果还是一个存储段,只是手工移动文件指针就没有什么意义了。
在操作上,文件的存储方式和自动回卷是基本相同的,不同之处在于要注意磁头的位置,并且手工进行必要的位移,以一个新磁带的操作为例来说明(status 我只截取有用的部分显示):
# mt -f /dev/nst0 status
file number = 0
block number = 0
General status bits on (41010000):
BOT ONLINE IM_REP_EN
存入一个新的文件A:
# tar cvf /dev/nst0 A
A
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
注意这时磁头已经移动到了第二段存储空间了,现在再存入一个新的文件B,当然B和A是不在一个存储空间中的:
# tar cvf /dev/nst0 B
B
# mt -f /dev/nst0 status
file number = 2
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
磁头又移动到第三段存储空间了,如果要查看刚才存的第二段存储空间中的内容,需要先移动磁头:
# mt -f /dev/nst0 bsf 2
# mt -f /dev/nst0 status
file number = 0
block number = -1
General status bits on (1010000):
ONLINE IM_REP_EN
# mt -f /dev/nst0 fsf 1
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
由于有存储空间结束标记,所以这里采用退2进1的方式,详细的磁头移动方式可以看man mt。然后查看文件列表:
# tar tvf /dev/nst0
-rw-r--r-- root/root 21194792 2007-10-24 11:37 B
# mt -f /dev/nst0 status
file number = 1
block number = 2070
General status bits on (1010000):
ONLINE IM_REP_EN
列出文件列表之后,磁头停在了文件结束的位置,但不是存储空间的结尾。现在移动磁头到本段存储空间的开始,并且添加文件C:
# mt -f /dev/nst0 bsf 1
# mt -f /dev/nst0 status
file number = 0
block number = -1
General status bits on (1010000):
ONLINE IM_REP_EN
# mt -f /dev/nst0 fsf 1
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
# tar rvf /dev/nst0 C
C
# mt -f /dev/nst0 status
file number = 2
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
首先还是要移动磁头,到这里基本上可以发现mt的fsf和bsf的规律了,fsf是磁头向前移动,并且总是停留在block number =
0的位置,而bsf是磁头向后移动,总是停留在 block number =
-1的位置。添加完成文件之后,磁头又定位到了第三个存储空间(下一个)的开始。现在我们依然是移动磁头到第二段存储空间开始,并且用覆盖方式添加文件
D:
# mt -f /dev/nst0 bsf 2
# mt -f /dev/nst0 fsf 1
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
# tar cvf /dev/nst0 D
D
# mt -f /dev/nst0 status
file number = 2
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
文件D是用覆盖方式添加的,所以刚才添加的文件B和C现在应该都消失了:
# mt -f /dev/nst0 bsf 2
# mt -f /dev/nst0 fsf 1
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
# tar tvf /dev/nst0
-rw-r--r-- root/root 34201298 2007-10-24 11:57 D
# mt -f /dev/nst0 status
file number = 1
block number = 3341
General status bits on (1010000):
ONLINE IM_REP_EN
完成,回卷磁带,从开始一直tvf:
# mt -f /dev/nst0 rewind
# tar tvf /dev/nst0
-rw-r--r-- root/root 341054 2007-10-24 11:37 A
# tar tvf /dev/nst0
# tar tvf /dev/nst0
-rw-r--r-- root/root 34201298 2007-10-24 11:57 D
# tar tvf /dev/nst0
# tar tvf /dev/nst0
# tar tvf /dev/nst0
tar: /dev/nst0: Cannot read: Input/output error
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now
# mt -f /dev/nst0 status
file number = 2
block number = -1
General status bits on (9010000):
EOD ONLINE IM_REP_EN
现在,能看懂这个了么?我用空行隔开的位置正好是block number为0的位置。还有一些其他的操作就比较简单了:
出带,将磁带卷至初始位置然后从磁带机内弹出
# mt –f /dev/nst0 offline
清除磁带中的所有内容,特慢,还伤带,轻易不要用
# mt –f /dev/nst0 erase
展开阅读全文