8.3 备份与恢复命令
学习目标
·掌握dump与restore备份还原命令的使用
·理解不同备份级别的差异,做到合理应用
·学会利用不同的参数,对备份或要恢复的数据进行操作
Linux有dump命令用于备份Linux文件系统或者目录,restore命令用于将备份的文件恢复。
dump可以执行类似tar的功能。然而,dump倾向于考虑文件系统而不是个别的文件。下面是引自dump手册文件中的内容:“dump检查ext2文件系统上的文件,并确定哪些文件需要备份。这些文件将出于安全保护而被复制到给定的磁盘、磁带或其他存储媒体上……,大于输出媒体容量的转储将被划分到多个卷。在大多数媒体上,容量是通过一直写入直至返回一个end-of-media标记来确定的。”
配合dump的程序是restore,它用于从转储映像还原文件。restore命令执行转储的逆向功能,可以首先还原文件系统的完全备份,而后续的增量备份可以在已还原的完全备份之上覆盖,可以从完全或部分备份中还原单独的文件或者目录树。
Dump和restore都能在网络上运行,因此可以通过远程设备进行备份或还原。dump和restore使用磁带驱动器和提供广泛选项的文件设备。然而,两者都仅限用于EXT2和EXT3文件系统。如果使用的是JFS,Reiser或者其他文件系统,用户将需要其他的实用工具,比如tar。
使用dump执行备份是相当简单的。下面的命令执行一个完全Linux备份,它把所有ext2和ext3文件系统备份到一个SCSI磁带设备。
实例8-9 备份文件
注意
F前面的是数字0,表示备份等级。备份级别有0~9,下面会详细讲到。
在这个例子中,系统中有两个文件系统。一个用于/boot,另一个用于/,这是常见的配置。它们必须在执行备份时单独地引用,/dev/nst0引用第一个SCSI磁带驱动器。不过是以非重绕的模式引用,这样确保各个卷在磁带上一个接一个地排列。
dump的一个有趣特性是其内置的增量备份功能。在上面的例子中,0表示0级或基本级备份,这是完全系统备份,要定期执行以保存整个系统。对于后续的备份,可以使用其他数字(1—9)来代替0,以改变备份级别。1级备份会保存自从执行0级备份以来更改过的所有文件。2级备份会保存自从执行1级备份以来更改过的所有文件,以次类推。使用tar和脚本可以执行相同的功能,但要求脚本创建人员提供一种机制来确定上次备份是何时执行的。dump具有它自己的机制,即它在执行备份时会输出一个更新文件(/etc/dumpupdates)。这个更新文件将在每次执行0级备份时被重设。后续级别的备份会保留它们的标记,直至执行另一次0级备份。如果在执行基于磁带的备份,dump会自动跟踪多个卷。
有时候对某些文件和目录做些标记,用于标记将被dump跳过的文件和目录是可以做到的。实现此目的的命令是chattr,它改变EXT2和EXT3文件系统上的扩展属性。
上面的命令向文件添加一个标记,让dump在执行备份时跳过该文件。
要还原使用dump保存的信息,可以使用restore命令,像tar一样,dump能够列出(-t)归档文件的内容,并与当前文件作比较(-C)。使用dump必须小心的地方是还原数据。有两种非常不同的还原方法,用户必须使用正确的方法才能获得可预测的结果。
以下是对恢复的参数说明介绍:
·重建(-r)。记住,在设计dump时考虑得更多的是文件系统,而不是单独的文件。因此。存在两种不同的文件还原风格。要重建一个文件系统,可使用-r命令行开关,设计重建的目的是为了能在空文件系统上操作,并将它还原为已保存的状态。在执行重建之前,用户应该已经创建、格式化和装载(Mount)了该文件系统。不应该对包含文件的文件系统执行重建。
下面是使用上面执行的转储来执行完全重建的例子。
上面这个命令需要针对要还原的每个文件系统分别执行。在需要的时候,可以重复这个过程来添加增量备份。
·提取(-x)。如果需要使用单独的文件而不是使用整个文件系统,必须使用-x开关来提取它们。例如,要仅从磁带备份中提取/etc目录,可使用以下命令:
·交互式还原(-i)。restore提供的另外一个特性是交互式模式。使用命令:
将把用户置于交互式Shell中,同时还显示了包含在该归档文件中的项。输入“help”会显示一个命令列表,然后用户就可以浏览并选择希望提取的项。务必记住,提取的任何文件都将进入当前目录。
实例8-10 dump命令备份文件
注意
当备份的目录是一个子目录,而不是一个分区的顶层目录时-u参数是不能使用的。
·-f是指定备份到那个文件,也可以指定一个设备文件,在这里指定的就是一个分区。
·更新备份:在0级别备份的基础上,向/home/pyegrp写入一些新的文件,然后
注意如果不这样做,不会将新写入的文件备份进去的。
然后:
用restore tf/dev/hda3,就会看到刚刚写入的文件会出现在列表中。
用restore命令来查看备份文件里的文件列表:
除了dump外,系统备份命令还有cpio,cpio命令三种模式:
·copy-out:将系统的文件生成一个cpio格式的包。
·copy-in:将一个cpio格式的包解开。
·copy-pass:相当于一个cp命令,不进行任何的压包和解包的工作,经常用来复制文件分别对应的参数是-o,-i,-p这样记忆就比较方便了,Linux命令的参数虽然很多,但是还是有规律可以寻找的。
实例8-11 cpio命令备份文件
按回车键后要手工输入所需要打包的文件名,以Ctrl+D组合键结束。
注意
-o参数也可以用-create替代,表示正在使用copy-out模式,-O参数只能和-o一起使用,表示出于out模式时,指定生成的文件。
这个命令是等效的,只不过前者是用重定向符号实现的而已。由此可以体现Linux命令的复杂还有变化多样。
·查看与解包方式:
实例8-12 cpio命令查看与解包
注意
-i参数是表示使用copy-in模式。
查看一个cpio包里的文件列表的参数和tar的参数有点相像,都是用-t参数,也可以用--list替代。-l参数只和-t,-i两个参数连用,表示在copy-in模式时指定一个cpio包。有点像tar包里的-f参数,无论是打tar包还是解tar包或者是查看tar的内容,都要加-f参数,一样的道理,在这里cpio只不过分成了copy-in和copy-out两个部分而已。
实例8-13 查看一个cpio包里的文件列表
还有一些高级的应用参数:
·-u:解包时如果文件已经存在也强行覆盖。
·-f:文件匹配参数,但是是一个反向的,就是符合这个指定的文件不解包。
这条命令的结果是test.cpio里除了*.rpm文件都会解包出来。
·-L:这个参数是在打包的时候用的,如果被打包的文件中有符号连接的话,这个参数将会把连接的目标文件打入包中,而不是仅仅把符号连接打包。
·-R:这个参数只用在解包的时候,是用来给解包出来的文件设置所有者和所属组的。但是用户和组的关系必须已经在passwd,group两个文件中存在。
·-r:这个参数只在解包时有用,而且不能和-u参数同时使用,否则失效,它的作用是当包中的文件和解包所在目录下的某个文件重名的时候自动提示是否需要更名。
·-A:这个参数只用在压包的时候,用来向已经存在的cpio包添加文件的。
想一想
上面讲到了dump和cpio两种备份命令,它们都有不同的优点和缺点,那么你知道它们的区别吗?可以罗列出来吗?
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。