首页 > 编程笔记 > Linux笔记 阅读:822

Linux数据备份介质的选择和使用

备份数据要有存放数据的安全容器。对存储介质的基本要求一般从存取速度、存储安全和存储容量 3 个方面进行考虑:
  • 存取速度是对存储介质的一个基本要求。数据的备份是一个读写操作极度频繁的过程,存取速度非常高的备份介质,可以大大缩短备份数据的时间,同时也可以减少恢复数据的时间。
  • 存储安全性是对存储介质的一个硬性要求,不安全的存储设备还不如不用。现在很多存储设备都对安全性做了很多优化,例如做 RAID 磁盘阵列、Cache 读写等。专业的存储厂商有 EMC、IBM 和 SUN 等,都有自己的存储设备。
  • 存储容量也是选择存储介质必须要考虑的一个方面。过大的存储空间会造成存储设备的浪费,过小的存储空间可能导致数据存储失败,因此,必须根据备份数据的大小,选择相应大小的存储介质。
除此之外,当然还要兼顾到成本。

对于一些小型设备(如台式计算机、个人站点)的备份来说,刻录光盘或者移动硬盘时比较合适的选择,这些存储介质价格低廉,且能提供足够大的备份空间,在稳定性方面,这两种介质通常能有 5 年左右的寿命。

大型系统的备份,需要使用磁带机。磁带具有容量大、保存时间长的特点,适合用于数据量大、更新频率高的环境。市面上有大量磁带产品,从低端到高端,只要和存储沾点边的硬件厂商,通常都不会放弃这个大市场。这里重点介绍一下磁带机的使用方法。

Linux 下使用磁带机的方式有多种,tar 命令是最经常使用的方法。tar 主要用于单机环境下,将数据直接写入磁带机。磁带机在 Linux 下对应的设备名称为 /dev/stX,如果是第一个磁带机,即为 /dev/st0。基本操作如下:
  1. 倒带,将磁带卷至起始位置,执行命令如下:

    [root@localhost ~]# mt -f /dev/st0 rewind

  2. 擦掉磁带上的内容。

    [root@localhost ~]# mt -f /dev/st0 erase

    新购买的磁带,打开后即可使用,无需进行擦写操作,同时当数据写满磁带后,磁带可以覆盖原有数据并继续写入,因此无需进行任何擦写动作。由于擦写对磁带有一定的损害,因此建议不要经常性地执行擦写操作。
  3. 出带,即将磁带卷至初始位置然后从磁带机内弹出,执行命令如下:

    [root@localhost ~]# mt -f /dev/st0 offline

  4. 通过 tar 列出磁带上的目录或者文件,执行命令如下:

    [root@localhost ~]# tar tvf /dev/st0  <--需要查看的文件或者目录

    如果后面不跟任何文件或目录,则是查看磁带上的所有数据。当磁带上还没有任何数据时,执行此操作会报错,不过不影响磁带的使用。
  5. 通过 tar 备份数据到磁带,执行如下命令:

    [root@localhost ~]# tar cvf /dev/st0 <--要写入的文件或目录名

    备份数据到磁带有两种方式,即打包压缩后写入磁带和不打包直接写入磁带。这里我们推荐将数据不打包直接写入磁带的方法,这样可以提高数据存储的安全性。

    为什么建议不打包备份呢?因为磁带是顺序写入数据的,即线性存储,如果将所有数据打包成一个独立的文件,那么当磁带的任何一个地方发生故障,都可能导致这个压缩文件解压失败而不可用;而如果对备份数据进行不打包存储的话,在磁带上就有很多文件,即使磁带某个地方发生故障,其余的文件仍然可用,这样就大大提高了数据备份的安全性。

    例如,将 /data/ixdbal.tar.gz 这个压缩文件写入到磁带,并覆盖原有的内容,可以执行如 下操作:

    [root@localhost ~]# tar cvf /dev/st0 /data/ixdba1.tar.gz

    通过“tar cvf”将数据写入磁带时,每次都会覆盖磁带中原有的数据,也就是每次都是从磁带的开始部分写入数据。磁带机的传输速度比较慢,对于不是很大的备份文件,在很短时间内就能备份完成,非常适合做系统级的文件备份。
  6. 通过 tar 继续写入数据到磁带,执行命令如下:

    [root@localhost ~]# tar rvf /dev/st0 <--要写入的文件名

    由于磁带是线性存储,数据是依次写入的,因此为了在写入新的数据时,不搜盖原有已经存在的数据,可以使用“tar rvf”参数组合将数据依次写入磁带。

    例如,依次将 /data/ixdba2.tar.gz 和 /data/ixdba3.tar.gz 备份到磁带机上,方法如下:

    [root@localhost /data]# tar rvf /dev/st0 /data/ixdba2.tar.gz
    [root@localhost /data]# tar rvf /dev/st0 /data/ixdba3.tar.gz

  7. 通过 tar 将数据从磁带恢复到磁盘,执行命令如下:

    [root@localhost ~]# tar xvf /dev/st0 <--要恢复的文件或目录名

    例如,首先查阅磁带上存在的所有数据,方法如下:

    [root@localhost ~]#  tar tvf /dev/st0
    -rw-r--r-- root/root    320 2009-2-20 10:19:02 ixdba1.tar.gz
    -rw-r--r-- root/root    320 2009-2-20 10:25:10 ixdba2.tar.gz
    -rw-r--r-- root/root    320 2009-2-20 10:45:18 ixdba3.tar.gz

    现在如果要恢复磁带上的 ixdba2.tar.gz 文件到磁盘,可以执行如下命令:

    [root@localhost ~]# tar xvf /dev/st0 ixdba2.tar.gz
    ixdba2.tar.gz

    这样就将数据从磁带恢复到了当前的路径下。