restore

恢复利用dump备份的文件或文件系统


语法格式

restore –C [-dMvVy] [-b blksize] [-D filesys] [-f file] [-F script] [-L limit]
restore -i [-adhmMNouvVy] [-A file] [-b blksize] [-f file] [-F script]
restore -P file [-adhmMNuvVy] [-b blksize] [-f file] [-F script] [-X filelist] [files]
restore -R [-dMNuvVy] [-b blksize] [-f file] [-F script]
restore -r [-dMNuvVy] [-b blksize] [-f file]
restore -t [-dhMNuvVy] [-A file] [-b blksize] [-f file] [-F script] [-X filelist] [files]
restore -x [-adhmMNouvVy] [-A file] [-b blksize] [-f file] [-F script]
[-X filelist] [files]

命令简介

restore命令主要用于恢复先前利用dump命令制作的任何备份数据,备份的形式可以是文件系统的完整备份或增量备份,备份的内容可以是系统文件或应用数据等。恢复数据时可以恢复完整备份或增量备份,或者从完整备份或增量备份数据中恢复选定的单个文件、一组文件、一个或多个完整的目录,甚至整个文件系统。可以先恢复完整的文件系统备份,在此基础上再恢复之后制作的增量备份。此外,利用dump与restore命令的远程备份与恢复功能,还可以从远程主机中恢复备份的数据,参见“-f”选项。

files是需要恢复的单个或一组文件与目录,或文件系统的根目录。除非指定了“-h”选项,目录参数表示递归地恢复指定的完整目录,包括其中的所有文件与子目录。如果未指定文件参数,表示恢复备份文件或介质中的所有文件或完整的文件系统。

如果没有使用“-f”选项指定设备文件名,dump将会使用TAPE环境变量的值作为备份设备。TAPE变量的值可以是tapename(磁带机)、host:tapename(远程主机上的磁带机)或user@host:tapename。如果TAPE变量为空,默认的备份设备是/dev/st0。

在恢复备份数据时,需要准确地知道究竟要恢复多少数据,恢复哪些数据。如果选择完整恢复,有时可能会浪费时间。如果恢复选定的文件,必须确保已经恢复了受到影响的所有文件。在一个业务系统中,通常也许只需恢复最近一次的增量备份,而在其他情况下,可能还需要恢复最近一次的完整备份,然后再依次恢复之后的增量备份。在恢复期间,切忌恢复不必要的且其数据已经过时的文件。

注意,除非指定了“-o”选项,在使用“-i”或“-x”选项恢复文件的最后步骤,restore命令将会询问用户是否设置当前目录的用户属主与访问权限。如果回答yes,restore命令将会使用运行dump时根目录信息节点的用户属主、用户组与访问权限设置当前工作目录。除非当前是在做完整的系统恢复,需要恢复根目录的用户属主、用户组与访问权限,否则一律应回答no。

在运行restore命令时,restore必须处于下列7种常用的运行模式之一,其他命令选项和参数是选用的:

在restore命令的语法格式中,“-C”、“-i”、“-P”、“-R”、“-r”、“-t”或“-x”等选项用于确定restore命令的运行模式,运行restore命令时必须选用其中之一。其他选项可用于指定恢复的处理方式,显示恢复文件列表,指定读写数据块的大小,指定备份数据,采用多卷恢复方式,以及显示命令的处理结果等。

使用“-i”选项运行restore命令时,可以进入交互恢复方式,此时可以浏览备份文件或介质,查询其中的文件内容,选定欲恢复或放弃哪些文件。例如,下列命令将会启动一个交互恢复会话:

# restore -i –a –f /dev/st0
restore >

在“restore >”提示符下,可以使用cd和ls等交互命令,查询指定备份文件或介质中的数据,从显示的文件列表中选择欲恢复的文件和目录。然后利用add交互命令,把选定的目录或文件加到欲恢复的文件列表中;或者利用delete命令,从文件列表中删除不希望恢复的目录或文件。最后使用extract交互命令,恢复选定的文件。在交互恢复方式下,也可以使用help交互命令查阅可用的交互命令,了解交互命令的简单用法。

命令选项(功能选择)

-C  读取备份介质,与系统中的文件进行比较。在开始比较之前,restore首先会把当前工作目录改换到备份文件系统的根目录,然后逐一比较系统与备份介质中的文件。参见“-L”选项。

-i  采用交互方式,从备份介质中恢复文件。在读取备份介质中的文件目录信息之后,restore将会提供一个命令行界面,使用户能够遍历目录树,从中选择想要恢复的文件。下面是部分可用的交互命令(对于需要提供参数的交互命令,默认的参数是当前目录):

add [arg]  把当前目录或者指定的目录或文件参数加到欲恢复的文件列表中。如果指定的参数是目录,把目录及其中的所有文件(包括子目录中的文件)加到欲恢复的文件列表中,除非命令行中指定了“-h”选项。当利用ls交互命令显示文件列表时,位于欲恢复文件列表中的文件名之前冠有一个星号“*”前缀。

cd dir  把当前目录改换到指定的目录。

delete [arg]  从欲恢复的文件列表中删除当前目录或者指定的目录或文件参数。如果指定的参数是目录,删除目录及其中的所有文件(包括子目录中的文件),除非命令行中指定了“-h”选项。比较好的做法是先把目录加到欲恢复的文件列表中,然后再删除其中不需要的部分文件。

extract  根据欲恢复的文件列表,从备份介质中恢复指定的所有文件。在执行之前,restore将会询问从哪一个备份介质开始恢复文件。

help  显示可用的交互命令及简单说明。

ls [arg]  列举当前或指定目录中的文件和子目录。如果是一个子目录,其名字后面将会附加一个“/”后缀。如果是一个欲恢复的文件或目录,其名字前面将会有一个星号“*”标记。如果设置了详细显示标志,每个目录或文件的信息节点号也会随同列出。

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

quit  立即退出restore命令,即使抽取的文件列表未空。

verbose  开关“-v”选项表示的详细显示标志。如果设置了这个标志,ls命令会列出每个目录或文件的信息节点号。而且还会在恢复过程中显示其读写的每个文件及其相关信息。

-P file  利用现有的备份文件,创建一个新的快速文件访问(Quick File Access)文件,但不恢复其中的数据内容。

-R  从多卷备份的指定介质开始恢复(参见“-r”选项)。在全面恢复期间,如果restore在运行过程因故中断,使用这个选项可以从断点处开始继续恢复。

-r  恢复(重建)一个文件系统。在开始恢复之前,首先应利用mke2fs命令创建一个新的文件系统,安装并进入文件系统的根目录,然后利用此选项恢复完整备份(备份级别0)的整个文件系统。如果完整备份成功地恢复,还可以利用“-r”选项,恢复任何必要的增量备份。示例步骤如下:

# mke2fs /dev/sdb2
# mount /dev/sdb2 /mnt
# cd /mnt
# restore -rf /dev/st0

注意,restore将会在根目录留下一个restoresymtable文件,以便在多次增量恢复之间传递信息。在最后一次增量恢复完成之后,用户应注意删除这个文件。

-t  列出备份介质中的指定文件(如果存在)。如果未指定文件参数,则从根目录开始,列出备份介质中的所有目录和文件(除非指定了“-h”选项)。参见“-X”选项。

-x  从给定的备份介质中抽取指定的文件,把文件恢复到系统中。如果指定的文件参数匹配备份介质中的某个目录,且未指定“-h”选项,则递归地抽取目录中的文件,并尽可能地恢复文件的属主、修改时间和访问权限等属性。如果未指定文件参数,则从根目录开始,恢复备份介质中的所有文件,除非指定了“-h”选项。参见“-X”选项。

命令选项(附加选项)

-a  使用“-i”或“-x”选项恢复备份的文件时,restore将会请求用户提供一个卷号,表示从哪一个备份介质开始恢复文件,以便直接读取指定的备份介质,减少文件恢复的时间。“-a”选项表示禁止采用这种处理方式,总是从第一个备份卷开始,依次读取所有的备份介质。如果不知道究竟应从哪一个备份介质开始恢复文件,可以使用这个选项,以减少交互干预。

-A file  从指定的文件(而非备份介质)中读取文件列表,以便在不读备份介质的情况下,也能确定欲恢复的文件是否存在于备份介质中。这个选项可与“-t”、“-i”或“-x”选项一起组合使用。

-b blksize  指定每个备份记录包含多少1KB的数据块。如果未指定“-b”选项,restore将会尝试自动确定存储介质中备份记录的数据块数量。

-d  输出调试信息。

-D filesys  当使用“-C”选项检查备份介质时,可用“-D”选项指定文件系统的名字。

-f file  从指定的文件中读取备份的数据。文件参数可以是一个设备文件(如磁带机/dev/st0或磁盘分区/dev/sda2等)、普通文件或减号“-”(标准输出)。如果文件参数是一个形如“host:file”或“user@host:file”的远程文件,restore将会利用rmt命令,从远程主机中读取指定的文件。远程rmt命令默认的路径名为/etc/rmt,必要时可以使用环境变量RMT重新定义。

-F script  在开始恢复每个备份卷(最后一个除外)之前,运行指定的脚本。restore将会把设备文件名和当前备份卷的卷号作为命令行参数传递给指定的脚本。脚本运行结束之后,如果返回值为0,意味着restore可以继续执行恢复,无须请求用户更换磁带。如果脚本的返回值为1,restore将会提示用户更换介质,然后才能继续执行恢复。其他返回值将会导致restore终止执行。

-h  仅抽取目录本身而不涉及其中的文件。这将防止restore递归地恢复整个目录层次子树。

-L limit  当使用“-C”选项检测备份文件时,可利用“-L”选项指定比较失败的次数限制,如果达到此限,restore将终止执行,同时输出一个错误信息。默认值0表示禁止进行此检测。

-m  按照信息节点号而非文件名恢复备份的文件。如果恢复的文件较少,应避免引用文件的完整路径名。可考虑使用这个选项,但前提是需要知道文件的信息节点号。

-M  多卷恢复。可用于恢复采用“-M”选项备份的多卷存储介质。“-f”选项指定的文件名file作为一个前缀,restore将会按照<file>001、<file>002、…的顺序,尝试读取多个存储介质或备份文件。

-N  利用“-N”选项,restore能够执行“-i”、“-R”、“-r”、“-t”或“-x”选项定义的恢复动作,但实际上不会把任何文件写入磁盘中。

-o  与“-i”或“-x”恢复模式需要的干预不同,利用“-o”选项,restore能够自动恢复当前目录,无须操作员干预。

-u  恢复文件时,如果存在同名的文件,restore将会发出一个警告信息。为避免这种情况出现,可以使用“-u”选项,使restore能够强行覆盖原有的文件(先删后建)。

-v  在restore恢复过程中,通常不会显示任何处理信息。“-v”选项能够使restore显示其处理的每个文件,并在文件名前冠以文件的类型。

-V  支持非磁带(如CD/DVD)的多卷恢复功能。

-X filelist  除了命令行中指定的文件之外,再从指定的文件中读取文件列表,组成一个完整的文件列表。这个选项可与“-t”或“-x”选项一起使用。filelist中列举的文件,每个文件名占一行。

-y  即使遇到错误,也无须请求用户确认是否需要终止运行,总是尝试跳过坏块继续运行。

应用实例

1. 假定系统中的/etc/vsftpd/vsftpd.conf配置文件损坏或丢失,可以利用文件系统备份磁带,指定需要恢复的文件,恢复单个文件。

# restore -iaf /dev/st0
restore > cd /etc/vsftpd
restore > ls
./etc/vsftpd:
ftpusers                        vsftpd.conf
user_list                       vsftpd_conf_migrate.sh

restore > add vsftpd.conf
restore > extract
set owner/mode for '.'? [yn] y
restore >

2. 从备份介质/dev/st0中完整地恢复/appdata文件系统中的应用数据,不管是否存在同名的文件,强制执行文件恢复。

# restore –rau –f /dev/st0

索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z