首页 百科知识 常用备份恢复命令

常用备份恢复命令

时间:2022-10-11 百科知识 版权反馈
【摘要】:dump,cpio,tar,dd,dump及restore通常是最好的选择。dump可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。restore命令执行转储的逆向功能。dump和restore使用磁带驱动器和提供广泛选项的文件设备。然而,两者都仅限用于ext2和ext3文件系统。目前有些新版的tar支持从标准输入来的文件备份,但大部分尚未有此功能。tar也较dump 或cpio在UNIX平台间具可性。尽管fbackup比传统的tar及cpio有较多的功能,但它缺乏可携性的缺点是非常使人诟病的。

12.2.5 Linux常用备份恢复命令

标准的UNIX系统皆有提供基本的备份工具,不同的备份工具有不同的差异。dump,cpio,tar,dd,dump及restore通常是最好的选择。其次是cpio,但是它比tar来的不亲和些;tar则比dump或cpio更容易使用。如果希望使用tar或cpio备份raw devices或执行异地备份,那么dd是用户的另一个选择。

·dump

dump可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。dump可以执行类似tar的功能。然而,dump倾向于考虑文件系统而不是个别的文件。下面是引自dump手册文件中的内容:“dump检查ext2文件系统上的文件,并确定哪些文件需要备份。这些文件将出于安全保护而被复制到给定的磁盘、磁带或其他存储媒体上,大于输出媒体容量的转储将被划分到多个卷。在大多数媒体上,容量是通过一直写入直至返回一个end-of-media标记来确定的。”

配合dump的程序是restore,它用于从转储映像还原文件。

restore命令执行转储的逆向功能。可以首先还原文件系统的完全备份,而后续的增量备份可以在已还原的完全备份之上覆盖。可以从完全或部分备份中还原单独的文件或者目录树。

dump和restore都能在网络上运行,因此可以通过远程设备进行备份或还原。dump和restore使用磁带驱动器和提供广泛选项的文件设备。然而,两者都仅限用于ext2和ext3文件系统。如果使用的是JFS,Reiser或者其他文件系统,用户将需要其他的实用工具,比如tar。

·cpio

如果没有dump指令或者dump版本不符所需,则cpio是用户的下一个好选择。cpio比其他备份工具存在的时间久,且具有一些其他工具所缺乏的重要特性。但首先需说明的是,有些功能dump有提供而cpio则没有提供,如下:

◆无须使用touch或find文件,即可执行变动备份(Incremental Backup);

◆备份完后不改变资料的atime及ctime;

◆以互动方式执行资料恢复,如restore的选项-i。

cpio是一个非常有用的备份工具,它最大的不同处,是可以备份从标准输入(Stdin)而来的文件。目前有些新版的tar支持从标准输入来的文件备份,但大部分尚未有此功能。

为什么cpio不常被使用?

如果cpio如此好用,为何tar却比较流行?最可能的理由是同样的功能,tar比cpio较简单易用(也较标准)。例如,每个版本的tar都支持tar cf device及tar xf device,然而cpio有的版本支持I及O;有的版本则无。如果将cpio每种版本的选项累计,则有近40个选项,甚至有些使用同一字母的参数,在不同版本的UNIX有不同的意义。但用户只要使用在大部分平台皆标准的选项,那么,cpio几乎与tar一样简单好用。

·tar

如果需要定期备份整个作业系统,dump可能是最好的选择。其次是cpio,因为它可与find搭配执行变动备份(Incremental Backup)。如果你像大部分的人一样,只为了将资料做一次完整的备份,那么就不需要定期或变动备份等功能。例如,用户可能希望快速地备份使用者/home目录或者想要删除使用者的一大群目录与文件,但唯一可让使用者接受的备份方式,是将其资料全部写入磁带或光盘内储存并交给用户。因此用户不在乎atime,不需定期做变动备份,只希望将一堆资料放到备份媒体上,而且也希望他人可以很容易地将资料从备份中取出,在这种情况下,tar会是最佳选择。

有一些功能是cpio有而大部份的tar则无的(GNU tar没有这些限制),例如:

◆可以备份来自stdin的文件;

◆当备份完成时重新设置文件的atime,尽管这会改变其ctime。

虽然tar的历史并不比cpio来得久,但它却得到较大的欢迎,这也正是它的特点之一。几乎每个人都知道如何读tar档,即使不会也很容易学。有些程序如WinZip,甚至可以自动地解开一个tar档或压缩过的tar档以读取其内容(WinZip却无法开启cpio档)。tar也较dump 或cpio在UNIX平台间具可性。

·dd

大部分的人不常使用dd来作备份,它是一个相当低级的指令,可将资料内含的每个位元(bit)原封不动地从一个地方搬到另一个地方,它不管也无须知道备份资料的结构。因此不同于dump,tar及cpio,它不可以复制一群文件至储存媒体,只可以复制一个文件或一文件的部分或partition或部分partition,甚至可以在资料修改中途将资料从标准输入(Stdin)复制至标准输出(Stdout)。即使dd可以复制单一文件,但其对档名或文件内容是一无所知的,它纯粹只是从一个地方搬运文件的位元内容至另一个地方而已。

dd是一个文件系统复制实用工具,它产生文件系统的二进制副本。dd还可用于产生硬盘驱动器的映像,类似于使用诸如Symantec的Ghost这样的产品。然而,dd不是基于文件的,因此用户只能使用它来将数据还原到完全相同的硬盘驱动器分区。

这种方式看似相当简单,相对地它也相当有弹性,可以在不考虑资料格式之下执行复制动作,因此它可在两个不同平台间作资料转换。例如,从EBCDIC到ASCII,或Oracle允许资料以文件系统下的文件形式存在,亦可以直接放在原始磁盘区块上,然而备份程序无法预测管理员会以何种方式存放资料,故采用富弹性的dd作自动备份,甚至备份结果是混合此两种资料形式也无妨,亦即有些在文件系统中,有些则在原始磁盘上。如此,管理员可依资料应用特性决定其存放形式,可见dd所提供的弹性好处之大。

尚有其他较不为人知或只出现在某些平台的备份工具,其中较常使用的有以下几个。

·cp命令:cp是copy的缩写,用于复制文件和目录。标准的cp命令可用于复制整个目录树。该选项将对非标准的文件执行未知的操作。有些UNIX变种和GNU cp工具支持-R选项,使用该选项可以正确地复制命名管道、链接和其他的文件。

·pax:pax是端口able Archive eXchange的缩写,可产生一便携式的备份,此备份格式符合IEEE Std.1003.1-1988的Archive/Interchange File Format。pax亦可读写一些其他的文件格式如tar或cpio。正如UNIX世界的许多现象一样,pax也有一群拥护者认为它是备份工具中最好的选择。

·fbackup:fbackup只有HP-UX提供且属于HP的System Administration Menu (SAM)的工具之一,使用fbackup作的备份,只能在另一个HP-UX主机上使用frecover读取。尽管fbackup比传统的tar及cpio有较多的功能,但它缺乏可携性的缺点是非常使人诟病的。即使用户无法用SAM来操作dump,cpio或tar,但这三个指令的可携带特性,绝对值得用户花较多的心力去使用它们。

1.dump命令操作举例

dump命令格式:

img455

主要选项如下。

-0123456789:备份的层级。

-b<区块大小>:指定区块的大小,单位为KB。

-B<区块数目>:指定备份卷册的区块数目。

-d<密度>:设置磁带的密度,单位为BPI。

-f<设备名称>:指定备份设备。

-h<层级>:当备份层级等于或大于指定的层级时,将不备份用户标示为“nodump”的文件。

-s<磁带长度>:备份磁带的长度,单位为英尺。

-T<日期>:指定开始备份的时间与日期。

-w:与-W类似,但仅显示需要备份的文件。

-W:显示需要备份的文件及其最后一次备份的层级,时间与日期。

实例12-1 执行一个完全Linux备份,它把所有ext2和ext3文件系统备份到一个SCSI磁带设备

img456

说明:在这实例12-1中,系统中有两个文件系统。一个用于/boot,另一个用于/,这是常见的配置。它们必须在执行备份时单独地引用。/dev/nst0引用第一个SCSI磁带驱动器,不过是以非重绕的模式引用。这样确保各个卷在磁带上一个接一个地排列。dump的一个有趣特性是其内置的增量备份功能。在上面的例子中,0表示0级或基本级备份。这是完全系统备份,用户要定期执行以保存整个系统。对于后续的备份,用户可以使用其他数字(1~9)来代替0,以改变备份级别。1级备份会保存自从执行0级备份以来更改过的所有文件。2级备份会保存自从执行1级备份以来更改过的所有文件,以此类推。使用tar和脚本可以执行相同的功能,但要求脚本创建人员提供一种机制来确定上次备份是何时执行的。dump具有它自己的机制,即它在执行备份时会输出一个更新文件(/etc/dumpupdates)。这个更新文件将在每次执行0级备份时被重设。后续级别的备份会保留它们的标记,直至执行另一次0级备份。如果用户在执行基于磁带的备份,dump会自动跟踪多个卷。

实例12-2 配合使用find命令复制整个目录

img457

使用dump备份资料:

img458

下面是执行此指令的例子:

·对/home做一完整备份至本地磁带机/dev/rmt/0cbn:

img459

·对/home做一完整备份至光盘机/backup/home.dump:

img460

·对/home做一完整备份至远端主机hsm的磁带机/dev/rmt/0cbn:

img461

上述的指令包含不需要参数的三个选项(0,u及n),及需要参数的四个选项(b,d,s及f)。

dump指令的第一个参数是一串选项,然后每个选项对应的参数依照选项的顺序依次放置于指令行。

2.使用resotore工具恢复

配合dump的程序是restore,它用于从转储映像还原文件。restore命令执行转储的逆向功能。可以首先还原文件系统的完全备份,而后续的增量备份可以在已还原的完全备份之上覆盖。可以从完全或部分备份中还原单独的文件或者目录树。

用户必须相当熟悉以不同的方式使用restore指令,从dump产生的备份中取得资料。

restore指令的语法

一旦可以读取dump磁带,用户必须决定要读什么资料及如何读它,以下讨论restore一般常用的参数。

基本上,有四件事情是用户希望dump磁带提供的:

·读取dump磁带的目录以确认内容是否需要;

·恢复整个文件系统;

·恢复选定的文件;

·执行互动式的恢复。

一般restore指令语法如下:

img462

补充说明:restore指令所进行的操作和dump指令相反,倾倒操作可用来备份文件,而还原操作则是写回这些已备份的文件。

参数如下。

-b<区块大小>:设置区块大小,单位是Byte。

-c:不检查倾倒操作的备份格式,仅准许读取使用旧格式的备份文件。

-C:使用对比模式,将备份的文件与现行的文件相互对比。

-D<文件系统>:允许用户指定文件系统的名称。

-f<备份文件>:从指定的文件中读取备份数据,进行还原操作。

-h:仅解出目录而不包括与该目录相关的所有文件。

-i:使用互动模式,在进行还原操作时,restore指令将依序询问用户。

-m:解开符合指定的inode编号的文件或目录而非采用文件名称指定。

-r:进行还原操作。

-R:全面还原文件系统时,检查应从何处开始进行。

-s<文件编号>:当备份数据超过一卷磁带时,用户可以指定备份文件的编号。

-t:指定文件名称,若该文件已存在备份文件中,则列出它们的名称。

-v:显示指令执行过程。

-x:设置文件名称,且从指定的存储媒体里读入它们,若该文件已存在于备份文件中,则将其还原到文件系统内。

-y:不询问任何问题,一律以同意回答并继续执行指令。

为确保用户知道备份磁带的格式与区块数目大小,先尝试列出它的目录。下列指令可产生dump备份磁带的目录:

img463

例如,从一个在/dev/rmt/0cbn磁带设备上的dump磁带(使用的区块因子是32)读取其目录,指令如下:

img464

实例12-3 从磁带备份中提取/etc目录,可使用以下命令

img465

使用dump/restore恢复单个文件:

(1)准备用dump备份/boot目录下的文件。使用df/boot查看/boot所在的设备(以下假设为/dev/hda1)。

(2)首先确认备份需要的空间。查看一个0级备份需要的字节数,使用-S。

img466

(3)备份到文件而非磁带。确认在/var/tmp目录是否有足够的空间,执行:

img467

(4)检查/etc/dumpdates,查看完全备份的时间戳。

(5)使用restore检查备份文件的内容。

img468

(6)可以使用restore的互动模式恢复特定文件到一个临时目录。

img469

(7)这时会看到一个restore>提示符,键入help查看可用命令的列表,使用ls和cd命令查看备份文件的列表。

(8)使用add,选中/grub.menu.1st和/grub/grub.conf文件。列出所在目录,恢复的文件应该带有星号。

(9)键入extract命令恢复选中的文件。设置下个卷名为1,不为解压目录设置所有者模式。quit退出restore模式。

(10)在restore运行的目录中应该有一个GRUB目录,包含恢复的grub.conf和menu.1st文件。

3.tar命令详解

格式:tar[选项][文件目录列表]

功能:对文件目录进行打包备份。

选项:

-c:建立新的归档文件;

-r:向归档文件末尾追加文件;

-x:从归档文件中解出文件;

-O:将文件解开到标准输出;

-v:处理过程中输出相关信息;

-f:对普通文件操作;

-z:调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩;

-Z:调用compress来压缩归档文件,与-x联用时调用compress完成解压缩。

(1)用tar打包一个目录下的文件:

img470

生成一个以.tar为扩展名的打包文件。

(2)用tar解开打包文件:

img471

通常情况下,tar打包与gzip(压缩)经常联合使用。方法:

首先用tar打包,例如:

img472

然后用gzip压缩a1.doc.tar文件,例如:

img473

(3)解压a1.doc.tar.gz文件。

方法1:

img474

这两次命令也可使用管道功能,把两个命令合二为一:

img475

方法2:使用tar提供的自动调用gzip解压缩功能

img476

经过tar打包后,也可用compress命令压缩(注:gzip比compress压缩更加有效),产生一个以.tar.Z的文件,在解包时,可先用“uncompress文件名”格式解压,然后用“tar-xvf文件名”解包。也可直接调用“tar-zxvf文件名”解包。

实例12-4 (1)复制当前目录中所有文件到磁带设备/dev/rmt0,输入:

img477

(2)从cpio归档中只抽取一个常规文件中的文件列表,使用下列命令:

img478

(3)把/home目录备份到SCSI磁带设备中,输入下面的命令:

img479

用户也可以对cpio的备份进行计划,用crontab工具设置成基于任何时间的有规律地运行。例如,要在每晚2点把/home目录备份到SCSI磁带驱动器中,把下面的语句添加到root 的crontab文件中即可:

img480

实例12-5 (1)把第一个硬盘的前512个字节存为一个文件:

img481

(2)为软盘建立镜像文件:

img482

有趣的是,这个镜像文件能被HD-Copy,Winimage等工具软件读出。

实例12-6 (1)将dir1下的所有目录包括子目录陆续地复制到dir 2中。

img483

(2)将一个目录中的内容复制到一个已有的目录中。

img484

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈