Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3344680
  • 博文数量: 815
  • 博客积分: 12898
  • 博客等级: 上将
  • 技术积分: 7883
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-25 09:57
文章分类

全部博文(815)

文章存档

2014年(1)

2011年(46)

2010年(192)

2009年(121)

2008年(70)

2007年(385)

分类: BSD

2007-10-07 11:04:52

标准的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是Portable 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,但这三个指令的可攜帶特性,絕对值得您花较多的心力去使用它們。


dump命令操作举例:

dump命令格式:
dump [-cnu][-0123456789][-b <区块大小>][-B <区块数目>][-d <密度>][-f <设备名称>][-h <层级>][-s <磁带长度>][-T <日期>][目录或文件系统] 或 dump [-wW]

主要选项:
-0123456789  备份的层级。 
-b<区块大小>  指定区块的大小,单位为KB。 
-B<区块数目>  指定备份卷册的区块数目。 
-c  修改备份磁带预设的密度与容量。 
-d<密度>  设置磁带的密度。单位为BPI。 
-f<设备名称>  指定备份设备。 
-h<层级>  当备份层级等于或大雨指定的层级时,将不备份用户标示为"nodump"的文件。 
-n  当备份工作需要管理员介入时,向所有"operator"群组中的使用者发出通知。 
-s<磁带长度>  备份磁带的长度,单位为英尺。 
-T<日期>  指定开始备份的时间与日期。 
-u  备份完毕后,在/etc/dumpdates中记录备份的文件系统,层级,日期与时间等。 
-w  与-W类似,但仅显示需要备份的文件。 
-W  显示需要备份的文件及其最后一次备份的层级,时间与日期。


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

  
dump 0f /dev/nst0 /boot
dump 0f /dev/nst0 /


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

2. 配合使用 find 命令复制整个目录

 
  $ find . |cpio -ov >archive.cpio


使用dump备份资料


# dump levelunbdsf blkg-factor density size device-name file_system


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

.对/home做一完整备份至本地磁帶機/dev/rmt/0cbn:

# dump 0unbdsf 126 141000 11500 /dev/rmt/0cbn /home


‧对/home做一完整备份至光碟機/backup/home.dump:

# dump 0unbdsf 126 141000 11500 /backup/home.dump /home


‧对/home做一完整备份至遠端主机hsm的磁帶机/dev/rmt/0cbn:

# (r)dump 0unbdsf 126 141000 11500 hsm:/dev/rmt/0cbn /home


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

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



使用resotore工具恢复

配合 dump 的程序是 restore,它用于从转储映像还原文件。restore 命令执行转储的逆向功能。可以首先还原文件系统的完全备份,而后续的增量备份可以在已还原的完全备份之上覆盖。可以从完全或部分备份中还原单独的文件或者目录树。    
您必須相当熟悉以不同的方式使用 restore 指令,从 dump 產生 的备份中取得资料。
restore指令的語法

一旦可以读取 dump 磁帶, 您必須決定要读什么资料及如何读它,以下討論 restore 一般常用的参数。

基本上,有四件事情是你希望dump磁帶提供的:

‧读取dump磁帶的目录以確認內容是否需要;

‧恢复整个档案系统;

‧恢复选定的档案;

‧执行互动式的恢复。

一般restore指令語法如下:

restore [trxi]vbsfy blocking-factor file-number device-name

restore指令的选项

 restore 的行为如何,端視其后的参数型態決定恢复的形式。 第一个参数指明 restore 的型式,只可以从四种可能的参数中挑选一种:

t:告訴restore顯示备份磁帶的目录。
r:指明备份磁帶的整卷內容恢复到目前的工作目录之下。
x:只恢复restore指令行末端所列的档案。
i:以互动方式恢复资料。


決定恢复的行为

下面的参数不是必須的,但会影響恢复的行为:

v:指定以明細(verbose)的方式输出。
s:在开始读磁帶前需跳过一些磁帶上的档案。
b:指定正要读取磁帶的區塊因子。
f:標明正使用的备份设备之档名。
y:告訴restore嘗試从读取錯誤中救回。

含备份资料的储存媒体可读否?
为確保你知道备份磁帶的格式与區塊數目大小, 先尝试列出它的 目录。 下列指令可產生 dump 备份磁帶的目录:
 
$ restore tbfy block_size device-name
例如,从一个在 /dev/rmt/0cbn 磁帶设备上的 dump 磁帶(使用 的區塊因子是 32 )读取其目录,指令如下:
$ restore tbfy 32 /dev/rmt/0cbn
Restore命令举例:

从磁带备份中提取 /etc 目录,可使用以下命令:

  
restore -xf /dev/nst0 /etc


cpio 命令操作举例:

1. 拷贝当前目录中所有文件到磁带设备 /dev/rmt0,输入:

  
find . | /usr/sysv/bin/cpio -oc >/dev/rmt0

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

   
cat ar | /usr/sysv/bin/cpio -i -E Efile



3. 把/home目录备份到SCSI磁带设备中,输入下面的命令:
    $ls /home | cpio -o > /dev/st0


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



00 02 * * * ls /home | cpio -o > /dev/st0


dd命令举例:


1.把第一个硬盘的前 512 个字节存为一个文件:
    dd if=/dev/hda of=disk.mbr bs=512 count=1




2为软盘建立镜像文件

dd if=/dev/fd0 of=disk.img bs=1440k

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

 

cp命令举例:

1 将dir1下的所有目录包括子目录陆续地复制到dir2中。

  
#cp -a dir1 dir2

2.将一个目录中的内容复制到一个已有的目录中

  
$ cp -r /home/mc/* /export/home/mc

使用 restore 来执行还原
要还原使用 dump 保存的信息,可以使用 restore 命令。像  tar 一样, dump 能够列出( -t )归档文件的内容,并与当前文件作比较( -C )。使用 dump 时必须小心的地方是还原数据。有两种非常不同的还原方法,您必须使用正确的方法才能获得可预测的结果。

重建 (-r)
记住,在设计 dump 时考虑得更多的是文件系统,而不是单独的文件。因此,存在两种不同的文件还原风格。要重建一个文件系统,可使用 -r 命令行开关。设计重建的目的是为了能在空文件系统上操作,并将它还原为已保存的状态。在执行重建之前,您应该已经创建、格式化和装载(mount)了该文件系统。不应该对包含文件的文件系统执行重建。

下面是使用上面执行的转储来执行完全重建的例子。


restore -rf /dev/nst0



上面这个命令需要针对要还原的每个文件系统分别执行。

在需要的时候,可以重复这个过程来添加增量备份。

提取 (-x)
如果需要使用单独的文件而不是使用整个文件系统,您必须使用 -x 开关来提取它们。例如,要仅从我们的磁带备份中提取 /etc 目录,可使用以下命令:


restore -xf /dev/nst0 /etc




交互式还原 (-i)
restore 提供的另外一个特性是交互式模式。使用命令:


restore -if /dev/nst0



将把您置于交互式 shell 中,同时还显示了包含在该归档文件中的项。键入“help”将会显示一个命令列表。然后您就可以浏览并选择希望提取的项。务必记住,您提取的任何文件都将进入当前目录。


使用dump/restore恢复单个文件
1. 准备用dump备份/boot目录下的文件. 使用df /boot查看/boot所在的设备(以下假设为/dev/hda1)
2. 首先确认备份需要的空间. 查看一个0级备份需要的字节数,使用 -S
# dump -oS /dev/hda1

3. 备份到文件而非磁带. 确认在/var/tmp目录是否有足够的空间,执行
# dump -0u –f /var/tmp/dumpfile /dev/hda1

4. 检查/etc/dumpdates,查看完全备份的时间戳.
5. 使用restore检查备份文件的内容
# restore –tf /var/tmp/dumpfile

6. 我们可以使用restore的互动模式恢复特定文件到一个临时目录.
# mkdir /tmp/restored; cd /tmp/restored# restore –if /var/tmp/dumpfile

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文件.
from:

Red Hat Linux 133 实验翻译 摘选部分


阅读(2155) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~