zoukankan      html  css  js  c++  java
  • 15 条实用 Linux/Unix 磁带管理命令

    导读 磁带设备应只用于定期的文件归档或将数据从一台服务器传送至另一台。通常磁带设备与 Unix 机器连接,用 mt 或 mtx 控制。强烈建议您将所有的数据同时备份到磁盘(也许是云中)和磁带设备中。

    在本教程中你将会了解到:

    1. 磁带设备名
    2. 管理磁带驱动器的基本命令
    3. 基本的备份和恢复命令
    为什么备份?

    一个备份计划对定期备份文件来说很有必要,如果你宁愿选择不备份,那么丢失重要数据的风险会大大增加。有了备份,你就有了从磁盘故障中恢复的能力。备份还可以帮助你抵御:

    1. 意外的文件删除
    2. 文件或文件系统损坏
    3. 服务器完全毁坏,包括由于火灾或其他问题导致的同盘备份毁坏
    4. 硬盘或 SSD 崩溃
    5. 病毒或勒索软件破坏或删除文件

    你可以使用磁带归档备份整个服务器并将其离线存储。

    理解磁带文件标记和块大小

    每个磁带设备能存储多个备份文件。磁带备份文件通过 cpio,tar,dd 等命令创建。同时,磁带设备可以由多种程序打开、写入数据、及关闭。你可以存储若干备份(磁带文件)到一个物理磁带上。在每个磁带文件之间有个“磁带文件标记”。这用来指示一个物理磁带上磁带文件的结尾以及另一个文件的开始。你需要使用 mt 命令来定位磁带(快进,倒带和标记)。

    tape management_02

    磁带上的数据是如何存储的

    tape management_03

    所有的数据使用 tar 以连续磁带存储格式连续地存储。第一个磁带归档会从磁带的物理开始端开始存储(tar #0)。接下来的就是 tar #1,以此类推。

    Unix 上的磁带设备名
    1. /dev/rmt/0 或 /dev/rmt/1 或 /dev/rmt/[0-127] :Unix 上的常规磁带设备名。磁带自动倒回。
    2. /dev/rmt/0n :以无倒回为特征,换言之,磁带使用之后,停留在当前状态等待下个命令。
    3. /dev/rmt/0b :使用磁带接口,也就是 BSD 的行为。各种类型的操作系统比如 AIX,Windows,Linux,FreeBSD 等的行为更有可读性。
    4. /dev/rmt/0l :设置密度为低。
    5. /dev/rmt/0m :设置密度为中。
    6. /dev/rmt/0u :设置密度为高。
    7. /dev/rmt/0c :设置密度为压缩。
    8. /dev/st[0-9] :Linux 特定 SCSI 磁带设备名。
    9. /dev/sa[0-9] :FreeBSD 特定 SCSI 磁带设备名。
    10. /dev/esa0 :FreeBSD 特定 SCSI 磁带设备名,在关闭时弹出(如果可以的话)。
    磁带设备名示例
    1. /dev/rmt/1cn 指明正在使用 unity 1,压缩密度,无倒回。
    2. /dev/rmt/0hb 指明正在使用 unity 0,高密度,BSD 行为。
    3. Linux 上的自动倒回 SCSI 磁带设备名:/dev/st0
    4. Linux 上的无倒回 SCSI 磁带设备名:/dev/nst0
    5. FreeBSD 上的自动倒回 SCSI 磁带设备名:/dev/sa0
    6. FreeBSD 上的无倒回 SCSI 磁带设备名:/dev/nsa0
    如何列出已安装的 scsi 磁带设备?

    输入下列命令:

    ### Linux(更多信息参阅 man) ###
    lsscsi
    lsscsi -g
    
    ### IBM AIX ###
    lsdev -Cc tape
    lsdev -Cc adsm
    lscfg -vl rmt*
    
    ### Solaris Unix ###
    cfgadm –a
    cfgadm -al
    luxadm probe
    iostat -En
    
    ### HP-UX Unix ###
    ioscan Cf
    ioscan -funC tape
    ioscan -fnC tape
    ioscan -kfC tape
    
    mt 命令示例

    在 Linux 和类 Unix 系统上,mt 命令用来控制磁带驱动器的操作,比如查看状态或查找磁带上的文件或写入磁带控制标记。下列大多数命令需要作为 root 用户执行。语法如下:

    mt -f /tape/device/name operation
    
    设置环境

    你可以设置 TAPE shell 变量。这是磁带驱动器的路径名。在 FreeBSD 上默认的(如果变量没有设置,而不是 null)是 /dev/nsa0。可以通过 mt 命令的 -f 参数传递变量覆盖它,就像下面解释的那样。

     ### 添加到你的 shell 配置文件 ###
     TAPE=/dev/st1 #Linux
     TAPE=/dev/rmt/2 #Unix
     TAPE=/dev/nsa3 #FreeBSD
     export TAPE
    
    1:显示磁带/驱动器状态
    mt status  ### Use default
    mt -f /dev/rmt/0  status ### Unix
    mt -f /dev/st0 status ### Linux
    mt -f /dev/nsa0 status ### FreeBSD
    mt -f /dev/rmt/1 status ### Unix unity 1 也就是 tape device no. 1
    

    你可以像下面一样使用 shell 循环语句遍历一个系统并定位其所有的磁带驱动器:

    for d in 0 1 2 3 4 5
    do
     mt -f "/dev/rmt/${d}" status
    done
    
    2:倒带
    mt rew
    mt rewind
    mt -f /dev/mt/0 rewind
    mt -f /dev/st0 rewind
    
    3:弹出磁带
    mt off
    mt offline
    mt eject
    mt -f /dev/mt/0 off
    mt -f /dev/st0 eject
    
    4:擦除磁带(倒带,在支持的情况下卸载磁带)
    mt erase
    mt -f /dev/st0 erase  #Linux
    mt -f /dev/rmt/0 erase #Unix
    
    5:张紧磁带盒

    如果磁带在读取时发生错误,你重新张紧磁带,清洁磁带驱动器,像下面这样再试一次:

    mt retension
    mt -f /dev/rmt/1 retension #Unix
    mt -f /dev/st0 retension #Linux
    
    6:在磁带当前位置写入 EOF 标记
    mt eof
    mt weof
    mt -f /dev/st0 eof
    
    7:将磁带前进指定的文件标记数目,即跳过指定个 EOF 标记

    磁带定位在下一个文件的第一个块,即磁带会定位在下一区域的第一个块(见图01):

    mt fsf
    mt -f /dev/rmt/0 fsf
    mt -f /dev/rmt/1 fsf 1 #go 1 forward file/tape (see fig.01)
    
    8:将磁带后退指定的文件标记数目,即倒带指定个 EOF 标记

    磁带定位在下一个文件的第一个块,即磁带会定位在 EOF 标记之后(见图01):

    mt bsf
    mt -f /dev/rmt/1 bsf
    mt -f /dev/rmt/1 bsf 1 #go 1 backward file/tape (see fig.01)
    

    这里是磁带定位命令列表:

    fsf    前进指定的文件标记数目。磁带定位在下一个文件的第一块。
    
    fsfm   前进指定的文件标记数目。磁带定位在前一文件的最后一块。
    
    bsf    后退指定的文件标记数目。磁带定位在前一文件的最后一块。
    
    bsfm   后退指定的文件标记数目。磁带定位在下一个文件的第一块。
    
    asf    磁带定位在指定文件标记数目的开始位置。定位通过先倒带,再前进指定的文件标记数目来实现。
    fsr    前进指定的记录数。
    
    bsr    后退指定的记录数。
    
    fss    (SCSI tapes)前进指定的 setmarks。
    
    bss    (SCSI tapes)后退指定的 setmarks。
    
    基本备份命令

    让我们来看看备份和恢复命令。

    9:备份目录(tar 格式)
    tar cvf /dev/rmt/0n /etc
    tar cvf /dev/st0 /etc
    
    10:恢复目录(tar 格式)
    tar xvf /dev/rmt/0n -C /path/to/restore
    tar xvf /dev/st0 -C /tmp
    
    11:列出或检查磁带内容(tar 格式)
    mt -f /dev/st0 rewind; dd if=/dev/st0 of=-
    
    ### tar 格式 ###
    tar tvf {DEVICE} {Directory-FileName}
    tar tvf /dev/st0
    tar tvf /dev/st0 desktop
    tar tvf /dev/rmt/0 foo > list.txt
    
    12:使用 dump 或 ufsdump 备份分区
    ### Unix 备份 c0t0d0s2 分区 ###
    ufsdump 0uf /dev/rmt/0  /dev/rdsk/c0t0d0s2
    
    ### Linux 备份 /home 分区 ###
    dump 0uf /dev/nst0 /dev/sda5
    dump 0uf /dev/nst0 /home
    
    ### FreeBSD 备份 /usr 分区 ###
    dump -0aL -b64 -f /dev/nsa0 /usr
    
    12:使用 ufsrestore 或 restore 恢复分区
    ### Unix ###
    ufsrestore xf /dev/rmt/0
    ### Unix 交互式恢复 ###
    ufsrestore if /dev/rmt/0
    
    ### Linux ###
    restore rf /dev/nst0
    ### 从磁带媒介上的第6个备份交互式恢复 ###
    restore isf 6 /dev/nst0
    
    ### FreeBSD 恢复 ufsdump 格式 ###
    restore -i -f /dev/nsa0
    
    13:从磁带开头开始写入(见图02)
    ### 这会覆盖磁带上的所有数据 ###
    mt -f /dev/st1 rewind
    
    ### 备份 home ###
    tar cvf /dev/st1 /home
    
    ### 离线并卸载磁带 ###
    mt -f /dev/st0 offline
    

    从磁带开头开始恢复:

    mt -f /dev/st0 rewind
    tar xvf /dev/st0
    mt -f /dev/st0 offline
    
    14:从最后一个 tar 后开始写入(见图02)
    ### 这会保留之前写入的数据 ###
    mt -f /dev/st1 eom
    
    ### 备份 home ###
    tar cvf /dev/st1 /home
    
    ### 卸载 ###
    mt -f /dev/st0 offline
    
    15:从 tar number 2 后开始写入(见图02)
    ### 在 tar number 2 之后写入(应该是 2+1)###
    mt -f /dev/st0 asf 3
    tar cvf /dev/st0 /usr
    
    ### asf 等效于 fsf ###
    mt -f /dev/sf0 rewind
    mt -f /dev/st0 fsf 2
    

    从 tar number 2 恢复 tar:

    mt -f /dev/st0 asf 3
    tar xvf /dev/st0
    mt -f /dev/st0 offline
    
    关于第三方备份工具

    Linux 和类Unix系统都提供了许多第三方工具,可以用来安排备份,包括磁带备份在内,如:

    1. Amanda
    2. Bacula
    3. rsync
    4. duplicity
    5. rsnapshot

    免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:https://www.linuxprobe.com/

  • 相关阅读:
    [C#.net]获取文本文件的编码,自动区分GB2312和UTF8
    [C#.net]SqlDataAdapter 执行超时已过期 完成操作之前已超时或服务器未响应
    [C#.Net]Window服务调用外部程序
    [Bat]UNC路径不支持的2种解决方法
    [c#.net]未能加载文件或程序集“”或它的某一个依赖项。系统找不到指定的文件
    精读比特币论文
    动态添加Redis密码认证
    扫码登录的安全性分析
    Cookie与Passport安全
    Http压测工具wrk使用指南
  • 原文地址:https://www.cnblogs.com/linuxprobe/p/5511852.html
Copyright © 2011-2022 走看看