restore 命令

用途

从使用 backup 命令创建的归档中抽取文件。

语法

复原按文件名归档的文件:

restore -x [ d M n Q v q e ] [ -b Number ] [ -f Device ] [ -s SeekBackup ] [ -E { force | ignore | warn }] [ File ...]

列出按文件名归档的文件:

恢复 -T | -t [a l n q v Q ] [ -b Number ] [ -f Device ] [ -s SeekBackup ]

复原按文件系统归档的文件:

  • restore -r [ B n q v y ] [ -b Number ] [ -f Device ] [ -s SeekBackup ]
  • restore -R [ B n v y ] [ -b Number ] [ -f Device ] [ -s SeekBackup ]
  • restore -i [ h m n q v y ] [ -b Number ] [ -f Device ] [ -s SeekBackup ]
  • restore -x [ B h n m q v y ] [ -b Number ] [ -f Device ] [ -s SeekBackup ] [ File ...]

复原从指定的卷号开始的文件:

复原 -X 数字 [ -Md N E 问: ] [ -b 数字 ] [ -f 设备 ] [ -s 数字 ] [ -E { | 忽略 | 警告 } ] [ 文件 ... ]

列出按文件系统归档的文件:

restore -t | -T [ B a l n h q v y ] [ -b Number ] [ -f Device ] [ -s SeekBackup ] [ File ...]

复原按文件名归档的文件属性:

restore -Pstring [B d q v Q ] [ b Number] [ s SeekNumber ] [-f Device ] [ File ...]

复原按文件系统归档的文件属性:

restore -Pstring [ h q v] [ b Number] [ s SeekNumber] [-f Device] [File ... ]

描述

restore 命令将读取备份操作所创建的归档,并抽取这些归档中存储的文件。 这些归档可以采用文件名或文件系统格式。 归档可以存储在磁盘、软盘或磁带上。 复原文件的方法必须与对这些文件进行归档的方法相同。 这要求您知道归档的格式。 通过检查使用 -T 标志时显示的归档卷头信息,可以确定归档格式。 使用 -x-r、-T-t 标志时,restore 命令将自动确定归档格式。
注: restore 命令确定正在复原的主动稀疏文件。 如果文件是一些已对齐块且设置了块大小的区域,并且这些区域中填充了 NULL,那么 restore 命令不会为这些文件系统块分配物理空间。 文件大小(以字节计)保持不变,但在文件系统内占用的实际空间仅用于非 NULL 区域。

可通过使用 -x 标志并指定文件名来从文件名归档或文件系统归档复原各个文件。 文件名必须根据归档中存在的文件名指定。 可通过使用 -i 标志来从文件系统归档交互地复原文件。 可通过使用 -T 标志来将归档上文件的名称写入标准输出。

用户必须具有对文件系统设备的写访问权,或者具有复原权限才能抽取归档的内容。

软盘设备 /dev/rfd0restore 命令的缺省介质。 要从标准输入复原,请使用 -f 标志指定短划线 (-)。 您也可以指定一系列设备,例如 /dev/rmt0-2

注意:
  1. 如果要从多卷归档中复原,那么 restore 命令将读取已安装的卷,提示您插入下一个卷并等待您的响应。 插入下一个卷后,请按 Enter 键以继续复原文件。
  2. 如果使用 backup 命令创建了归档,并且将此归档制成了设备块大小设置为 0 的磁带设备,那么您可能必须清楚地知道创建磁带时使用的块大小才能从该磁带复原。
  3. 在单个磁带上可以存在多个归档。 从磁带复原多个归档时,restore 命令期望输入设备为 no-retension-on-open 或 no-rewind-on-close tape 设备。 除非指定了 -B-s-X 标志,否则请不要使用 no-rewind 磁带设备进行复原。

文件系统归档

由于对文件进行归档时使用的方法,文件系统归档也称为索引节点归档。 文件系统名称通过 backup 命令来指定,并且该文件系统内的文件是根据它们在文件系统内的结构和布局进行归档的。 restore 命令会复原文件系统归档上的文件,而不必对该文件系统的底层结构进行任何特殊了解。

复原文件系统归档时,restore 命令将创建并使用名为 restoresymtable 的文件。 这个文件在当前的目录中创建。 此文件是 restore 命令执行增量文件系统复原操作所必需的。
注: 如果执行增量文件系统备份和复原,请勿除去 restoresymtable 文件。

当使用 -r-R 标志时,将忽略 File 参数。

文件名归档

通过使用 backup 命令指定包含要归档的文件名的列表,可以创建文件名归档。 restore 操作将从文件名归档复原文件,而不必对文件系统的底层结构进行任何特殊了解。 指定进行归档抽取的文件时,restore 操作允许使用元字符。 这将支持根据模式匹配从归档中抽取文件。 模式文件名必须用单引号括起,而模式必须用括号 (...) 括起。

关于稀疏文件

与其他文件相比,可以更高效地存储操作系统中那些包含长字符串 NULL 的文件系统文件。 具体地说,如果 NULL 字符串跨越整个分配块,那么不会在磁盘上存储这整个块。 以此方式省略的一个或多个块的文件叫做稀疏文件。 丢失的块也称作空穴。
注: 稀疏文件与压缩文件不同。 读取时,稀疏文件与其非稀疏等效文件完全相同。

稀疏文件通常由数据库应用程序创建。 每当创建数据库文件时,都会通过 NULL 编排该文件的格式。 这些片段可能会通过已分配或未分配的 NULL 填满。

标志

标志名称 描述
-a -t-T 标志一起指定时,-a 选项将显示归档中的文件列表以及这些文件的许可权。
-B 指定必须从标准输入中读取归档。 通常,restore 操作将检查实际介质以确定备份格式。 使用 | (管道) 时,无法进行此检查。 因此,会将归档视为采用文件系统格式,并且将设备视为标准输入 (-f -)。
-b 数字

对于按名称完成的备份,此标志指定 512 字节块的数目。 对于按索引节点完成的备份,此标志指定要在单个输出操作中读取的 1024 字节块的数目。 当 restore 操作从磁带设备进行读取时,缺省值为 100(对于按名称完成的备份)和 32(对于按索引节点完成的备份)。

读大小是块数目乘以块大小。 从磁带设备读取的 restore 操作的缺省读大小是 51200 (100 × 512) (根据名称备份)和 32768 (32 × 1024)(根据 i-node 备份)。 读大小必须是磁带的物理块大小的偶数倍。 如果读大小不是磁带物理块大小的偶数倍,并且它处于固定块方式(非零)下,那么 restore 命令将尝试确定 Number 的有效值。 如果成功找到其有效值,那么 restore 操作会将 Number 更改为新值,将有关此更改的消息写入标准输出,然后继续。 如果未能找到 Number 的有效值,那么 restore 操作会将错误消息写入标准错误,退出并返回非零返回码。 Number 参数的更大的值导致了磁带设备上更大的物理传输。

restore 命令从软盘中进行读取时,将始终忽略 -b 标志的值。 在这种情况下,此命令一直从占用整个磁道的簇中读取。

-d 如果 File 参数是一个目录,指定在那个目录中的所有文件都必须恢复。 仅当归档使用文件名格式时,才能使用此标志。
-e

对于已打包文件和已解压缩文件,此标志用于复原以 backup 操作的名称格式归档的非稀疏文件。 由于启用此标志会将稀疏文件复原为非稀疏文件,因此在归档文件之前,必须知道文件的稀疏和非稀疏状态。

仅当要复原的文件为非稀疏文件(包含 4 K 以上的 NULL)时,才必须启用此标志。 如果在复原操作期间指定了 -e 标志,那么它会成功地正常复原所有常规文件,并且将非稀疏数据库文件复原为非稀疏状态。

-E
从指定的卷号开始抽取,并且需要下列其中一个参数。 如果省略 -E 标志,那么缺省行为是 warn
强制
如果文件的固定范围大小或空间限制不能保持,那么使在文件上的恢复操作失败。
忽略
忽略任何保持范围属性中的错误。
warn
如果文件的空间保留或固定大小无法保存,那么此参数将发出一个警告。
-f 设备

指定输入设备。 要从指定设备接收输入,请指定 Device 变量作为路径名(例如 /dev/rmt0)。 要从标准输出设备接收输入,请指定短划线 (-)

您也可以指定归档设备的范围。 范围规范必须是如下的格式:
/dev/deviceXXX-YYY
其中,XXXYYY 是整数,而 XXX 必须始终小于 YYY;例如:
/dev/rfd0-3

指定范围内的所有设备必须是同一类型的。 例如,可以使用一组 8 毫米 2.3 GB 磁带或一组 1.44 MB 软盘。 所有的磁带设备必须设置成同样的物理磁带块大小。

如果 Device 变量指定一个范围,那么 restore 操作将自动从此范围内的一个设备转至下一个设备。 在穷尽所有指定的设备后,restore 操作将停止并请求在此范围的设备上安装新卷。

-h 仅复原实际目录,而不复原该目录中包含的文件。 仅当归档使用文件系统格式时,才能使用此标志。 与 -r-R 标志一起使用时,将忽略此标志。
-i 允许您以交互方式从文件系统归档复原所选文件。 -i 标志的子命令是:

add [File]:指定 File 参数将被添加到要抽取的文件列表。 如果 File 是一个目录,那么该目录及其包含的所有文件将添加到抽取列表(除非使用了 -h 标志)。 如果未指定 File,那么会将当前目录添加到抽取列表。

cd Directory:将当前目录更改为指定目录。

delete [File]:指定将从要抽取的文件列表中除去 File 参数。 如果 File 是一个目录,那么将从抽取列表中除去该目录及其包含的所有文件(除非使用了 -h 标志)。

extract:复原抽取列表中的所有目录和文件。

help:显示子命令的摘要。

ls [Directory]:显示 Directory 参数中包含的目录和文件。 目录名称后面将显示一个斜杠 (/)。 对于抽取列表中位于指定目录内的文件和目录,其名称前面将显示一个星号 (*)。 如果是详细方式,文件和目录的索引节点数量也被显示出来。 如果 Directory 参数没有被指定,就会使用当前目录。

pwd:显示当前目录的完整路径名。

quit:使 restore 操作立即退出。 将不会复原抽取列表中的任何文件。

setmodes:为所有添加到抽取列表的目录设置所有者、方式和时间。

verbose:使 ls 子命令显示文件和目录的索引节点数。 从归档中抽取每个文件时,还将显示有关该文件的更多信息。

-l -t-T 标志一起指定时,将显示详细的文件列表,其中包括时间戳记、文件许可权、文件大小、所有者和组。 -l 选项覆盖 -a 选项。
-M 将所复原文件的访问和修改时间设置为复原时间。 仅当您恢复单个命名文件并且仅当 -x-X 标志也被指定时才可以指定 -M 标志。 如果未指定 -M 标志,那么 restore 操作将按照访问时间和修改时间在备份介质上的显示方式对这些时间进行维护。
-M 当恢复文件存在于归档上时,将其重命名为文件的索引节点数量。 如果要复原的文件较少并且您希望以另一文件名复原这些文件,那么此标志非常有用。 因为任何恢复归档成员以它们的索引节点数量重命名,目录层次结构和链接将不会被保护。 目录和硬链接以正规文件恢复。 当归档采用文件系统格式时,会使用 -m 标志。
-n 缺省情况下,restore 操作将复原归档中的任何访问控制表 (ACL)、Printing Color 文件 (PCL) 或指定的扩展属性。 -n 标志将使 restore 操作跳过归档中的任何 ACL、PCL 或指定的扩展属性而不复原这些项。
-P 字符串 仅恢复文件属性。 此标志不会复原文件内容。 如果目标目录路径中不存在指定的文件,那么不会创建该文件。 此标志将根据 string 参数中指定的标志选择性地复原文件属性。 String 参数可以是下列字符的组合:
A
复原所有属性。
a
仅复原文件的许可权。
o
仅复原文件的所有权。
t
仅复原文件的时间戳记。
c
仅复原文件的 ACL 属性
注:restore 命令的现有标志中,标志 vhbsfBd, 并且 qP 标志一起有效。 P 标志可以用于文件名归档和文件系统归档。 如果 File 参数是一个符号链接,那么将修改目标文件的元数据,而不是修改符号链接的元数据。
注意: 当超级用户运行时,使用 -P 标志会覆盖另一个用户拥有的文件的属性。
-q 对于按名称完成的备份,指定此命令在遇到任何类型的错误时必须退出,而不是尝试恢复并继续处理归档。
-q 指定第一个卷已就绪可供使用,并且复原操作不得提示您输入 mount the volume 并按 Enter 键。 如果归档范围是卷的倍数,restore 命令会为后继卷提示您。
-r 复原文件系统归档中的所有文件。 -r 标志仅用来恢复完整的 0 层备份或在 0 层备份恢复后,恢复增量备份。 restoresymtable 文件由 restore 操作用于在增量复原操作之间传递信息。 在复原最后一个增量备份之后,必须移除此文件。 使用 -r 标志时,将忽略 File 参数。
-R 请求多卷文件系统归档的特定卷。 -R 标志允许重新启动先前中断的 restore 操作。 使用 -R 标志时,将忽略 File 参数。 重新启动后,restore 命令的行为与使用 -r 标志时相同。
-s SeekBackup 指定要寻找的备份并在多备份磁带归档上恢复。 当归档写入磁带设备时,仅 -s 标志可用。 要正确使用 -s 标志,必须指定 no-rewind-on-close 和 no-re拉簧-on-open 磁带设备,例如 /dev/rmt0.1/dev/rmt0.5。 如果 -s 标志由 rewind 磁带设备指定,restore 命令显示错误消息并以非零返回码退出。 如果使用 no-rewind 磁带设备并且未指定 -s 标志,那么将使用缺省值 -s 1。 SeekBackup 参数的值必须在 1 到 100 之间(包含 1 和 100)。 由于 -s 标志的行为,必须使用一个 no-rewind-on-close、no-retension-on-open 磁带设备。 使用 -s 指定的值相对于磁带的读/写磁头位置,而不是相对于归档在磁带上的位置。 例如,要从多备份磁带归档复原第一个、第二个和第四个备份,那么 -s 标志的值分别为 -s 1、-s 1 和 -s 2
-t 显示关于备份归档的信息。 如果归档使用文件系统格式,那么在归档上找到的文件列表将写入标准输出。 像在归档上一样,文件 i-node 数量位于每个文件名之前。 显示的文件名相对于所备份文件系统的根 (/) 目录。 如果 File 参数没有指定,那么列出归档上的所有文件。 如果使用 File 参数,那么仅列出那个文件。 如果 File 参数指的是一个目录,那么将列出该目录中包含的所有文件。 如果归档使用文件名格式,那么卷头中包含的信息将写入标准错误。 此标志可用于确定归档使用的是文件名格式还是文件系统格式。
-t 显示关于备份归档的信息。 如果归档使用文件名格式,那么卷头中包含的信息将写入标准错误,并且在归档中找到的文件列表将写入标准输出。 对于文件名归档,会忽略 File 参数。 如果归档采用文件系统格式,那么行为与 -t 标志的行为相同。
-v 复原时,此标志用于显示更多信息。 如果归档采用文件名格式,并且指定了 -x-T 标志,那么会以字节为单位显示文件的大小(按它存在于归档上的情况)。 目录,块或字符设备文件将以大小 0 进行归档。 符号链接与符号链接的大小一起列出。 硬链接用文件大小列出,即其归档方式。 读取归档之后,将显示这些大小的总计值。 如果归档使用文件系统格式,那么会对目录归档成员与非目录归档成员进行区分。
-x

逐一复原 File 参数所指定的名称。 如果未指定 File 参数,那么将复原所有的归档成员。 如果 File 参数是一个目录,并且归档使用文件名格式,那么将仅复原该目录。 如果 File 参数是一个目录并且归档使用文件系统格式,那么将复原该目录中包含的所有文件。 File 参数指定的文件名必须与 restore -T 标志所显示的名称相同。 文件使用它们归档时的名称恢复。 如果文件名是使用相对路径名 (./filename) 进行归档的,那么将相对于当前目录复原该文件。 如果归档使用文件系统格式,那么将相对于当前目录复原文件。

restore 命令自动建立任何所需的目录。 使用此标志复原文件系统备份时,系统会提示您输入起始卷号。

指定要进行归档抽取的文件时,restore 命令允许使用 Shell 样式的模式匹配元字符。 关于匹配元字符的规则与在 Shell 路径名“globbing”中使用的规则相同,即:
星号 * (* )
与零个或零个以上除 .(句点)或 /(斜杠)外的字符匹配。
问号 (?)
与除 .(句点)或 /(斜杠)外的任何单一字符匹配。
方括号 ([ ])
与括在方括号中的任何其中一个字符匹配。 如果一对由短划线分隔的字符包含在方括号内,那么该模式与任何在词汇上处于当前本地两个字符之间的字符匹配。 此外,方括号内的 .(句点)或 /(斜杠)与文件名中的 .(句点)或 /(斜杠)不匹配。
反斜杠 (\)
与紧跟其后的字符匹配,从而防止可能将它解释为元字符。
-X VolumeNumber 从多卷文件名备份的指定卷开始复原。 启动 restore 命令之后,其行为与指定了 -x 标志时相同。 -X 标志仅适用于文件名归档。
-y 当遇到磁带错误时继续恢复。 通常,restore 命令将询问您是否继续。 在任一情况下,都会用零来替换读取缓冲区中的所有数据。 仅当归档采用文件系统格式时,-y 标志才适用。
? 显示使用情况消息。

退出状态

此命令返回以下退出值:

返回码 描述
重大安全事件数量 成功完成。
> 0 发生错误。

示例

  1. 要列出软盘设备 /dev/rfd0 上文件名归档或文件系统归档中文件的名称,请输入以下命令:
    restore -Tq

    此归档从 /dev/rfd0 缺省恢复设备中读取。 这将显示该归档中包含的所有文件和目录的名称。 对于文件系统归档,文件名前面有文件的索引节点号,如它存在于归档上那样。 -q 标志告知 restore 命令卷一是可用的并准备读取就绪。 这样,不会提示您安装卷一。

  2. 要复原特定文件,请输入以下命令:
    restore -xvqf myhome.bkup system.data

    此命令从归档 myhome.bkup 中抽取文件 system.data 到当前目录中。 此例中的归档位于当前目录中。 使用 -T 标志时,必须按文件和目录名的显示方式对其进行指定。 -v 标志用于在抽取过程中显示更多信息。 此示例同时适用于文件名归档和文件系统归档。

  3. 要将磁带中的特定文件复原到虚拟介质存储库中,请输入以下命令:
    restore -xvqf /dev/rmt0 /var/vio/VMLibrary/media_file
  4. 要从文件名归档中复原特定目录及其内容,请输入以下命令:
    restore -xdvqf /dev/rmt0 /home/mike/tools

    -x 标志将按文件名抽取文件。 -d 标志将指示 restore 命令抽取 /home/mike/tools 目录中的所有文件和子目录。 使用 -T 标志时,必须按文件和目录名的显示方式对其进行指定。 如果目录不存在,它们会被创建。

  5. 要从文件系统归档复原特定目录及其内容,请输入以下命令:
    restore -xvqf /dev/rmt0 /home/mike/tools 
    此命令根据文件名抽取文件。 使用 -T 标志时,必须按文件和目录名的显示方式对其进行指定。 如果目录不存在,它们会被创建。
  6. 要复原整个文件系统归档,请输入以下命令:
    restore -rvqf /dev/rmt0
    此命令会将在磁带设备 /dev/rmt0 上归档的整个文件系统复原到当前目录中。 此例假定您位于要恢复的文件系统的根目录。 如果归档是一组增量文件系统归档的一部分,那么必须使用从级别 0 开始的递增备份级别顺序(例如 0,1,2)复原归档。
  7. 要从单卷、多备份磁带中复原第五和第九个备份,请输入以下命令:
    restore -xvqs 5 -f/dev/rmt0.1 
    restore -xvqs 4 -f/dev/rmt0.1
    第一条命令用于从 /dev/rmt0.1 指定的多备份磁带上的第五个归档抽取所有文件。 .1 标志符指定磁带设备在处于打开状态时不会收紧,在处于关闭状态时不会反绕。 由于 -s 标志的行为,必须使用一个 no-rewind-on-close、no-retension-on-open 磁带设备。 第二个命令从第四个归档(相对于磁带上磁带头的当前位置)抽取所有的文件。 在复原第五个归档之后,磁带读/写磁头将位于读取归档的位置。 由于您希望抽取磁带上第九个归档,因此必须将值 4 与 -s 标志一起指定。 这是因为 -s 标志是相对于在磁带上的位置而不是相对于磁带上的归档位置。 第九个归档是磁带上从当前位置开始的第四个归档。
  8. 为了恢复第四个备份(此备份开始于十磁带多备份归档上的第六个磁带),请将第六个磁带放入磁带机中并输入以下命令:
    restore -xcs 2 -f /dev/rmt0.1 /home/mike/manual/chap3
    假定第四个备份是第六个磁带上的第二个备份,那么指定 -s 2 将使磁带头前进到此磁带上第二个备份的开始处。 restore 命令然后从归档中恢复指定的文件。 如果备份继续执行到后续卷上,并且文件未复原,那么 restore 命令会指示您插入下一个卷,直至到达备份结尾。 -f 标志 指定了 no-rewind、no-retension 磁带设备名称。
    注: -s 标志指定相对于插入到磁带机中的磁带的备份号,而不是相对于整个 10 磁带归档的备份号。
  9. 要提高流式磁带设备的性能,请设置从 dd 命令到 restore 命令的管道,然后输入以下命令:
    dd if=/dev/rmt0 bs=64b | restore -xf- -b64 
    dd 命令会通过使用 64 个块大小为 512 字节的块来从磁带读取归档并将归档写入标准输出。 restore 命令会通过使用 64 个块大小为 512 字节的块来读取标准输入。 由 dd 命令用于从磁带读取归档的块大小的值必须是通过 backup 命令用于创建磁带的块大小的偶数倍。 例如,必须使用以下 backup 命令来创建此示例抽取的归档:
    find /home -print | backup -ivqf/dev/rmt0 -b64 
    此示例仅适用于采用文件名格式的归档。 如果归档采用文件系统格式,那么 restore 命令必须包括 -B 标志。
  10. 为了提高 9348 Magnetic Tape Unit Model 12 上 restore 命令的性能,您可以通过输入以下命令来更改块大小:
    chdev -l DeviceName -a BlockSize=32k
  11. 要复原非稀疏数据库文件,请输入以下命令:
    restore  -xef  /dev/rmt0
  12. 要复原已归档为稀疏文件的文件,请输入以下命令:
    restore  -xf  /dev/rmt0
  13. 要仅从归档复原文件的许可权,请输入以下命令:
    restore -Pa -vf /dev/rmt0
  14. 要仅从归档复原文件的 ACL 属性,请输入以下命令:
    restore -Pc -vf /dev/rmt0
  15. 要查看目录及文件许可权,请输入以下命令:
    restore -Ta -vf /dev/rmt0
  16. 要查看文件名归档的目录以及时间戳记和文件许可权,请输入以下命令:
    restore -Tl -vf /dev/rmt0
  17. 要查看文件系统归档的目录以及时间戳记和文件许可权,请输入以下命令:
    restore -tl -vf /dev/rmt0