分类:
2008-04-09 18:35:25
恢复文件和文件系统
第27 章• 恢复文件和文件系统(任务) 493
将包含要恢复文件的介质插入驱动器中,并检验是否是正确的介质。
# ufsrestore tf /dev/rmt/n ./path/filename ./path/filename
确保对每个filename 使用完整路径。如果文件在备份中,则会列出其名称和inode 编号。否
则,将出现一条消息,指明文件不在卷中。
如果同一磁带上有多个备份文件,请定位至磁带上要使用的备份文件。
# ufsrestore xfs /dev/rmt/n tape-number
确定要使用的磁带
以下示例说明如何检查/etc/passwd 文件是否在联机归档文件中。
# ufsrestore ta /var/tmp/root.archive ./etc/passwd
以下示例说明如何验证/etc/passwd 文件是否位于备份磁带中。
# ufsrestore tf /dev/rmt/0 ./etc/passwd
如何以交互方式恢复文件
成为超级用户或承担等效角色。
(可选)为安全起见,请对磁带进行写保护。
将卷1 磁带插入磁带机。
转至用于临时将文件恢复到的目录。
# cd /var/tmp
启动交互式恢复。
# ufsrestore if /dev/rmt/n
此时将显示某些提示性消息和ufsrestore> 提示符。
创建要恢复的文件的列表。
a. 列出目录的内容。
ufsrestore> ls [directory-name]
b. 转至目录。
ufsrestore> cd directory-name
4
5
示例27–1
1
2
3
4
5
6
恢复文件和文件系统
494 系统管理指南:设备和文件系统• 2006 年9 月
c. 创建要恢复的文件和目录的列表。
ufsrestore> add filenames
d. (可选的)从要恢复的文件列表中删除任何目录或文件(如果必要)。
ufsrestore> delete filename
(可选的)在恢复文件时显示文件名称。
ufsrestore> verbose
恢复文件。
ufsrestore> extract
ufsrestore 命令将询问您要使用的卷编号。
键入对应的卷编号并按回车键。如果您只有一个卷,请键入1 并按回车键。
Specify next volume #: 1
列表中的文件和目录将被提取并恢复到当前工作目录。
要维护当前目录的模式,请在set owner/mode 提示符下输入n。
set owner/mode for ‘.’? [yn] n
ufsrestore 命令执行其最后的清除时必须等待。
退出ufsrestore 程序。
ufsrestore> quit
随后将显示shell 提示符。
验证恢复的文件。
a. 列出恢复的文件和目录。
# ls -l
此时将显示文件和目录的列表。
b. 检查该列表,以确保列表中指定的所有文件和目录都已恢复。
将文件移至正确的目录。
以交互方式恢复文件
以下示例说明如何从备份磁带中提取/etc/passwd 和/etc/shadow 文件。
7
8
9
10
11
12
13
示例27–2
恢复文件和文件系统
第27 章• 恢复文件和文件系统(任务) 495
# cd /var/tmp
# ufsrestore if /dev/rmt/0
ufsrestore> ls
.:
.:
.sunw/ export/ net/ sbin/ usr/
Sources/ etools/ opt/ scde/ var/
b/ home/ ptools/ set/ vol/
bin kernel/ pkg/ share/
dev/ lib/ platform/ shared/
devices/ lost+found/ proc/ src/
etc/ mnt/ rtools/ tmp/
ufsrestore> cd etc
ufsrestore> add passwd shadow
ufsrestore> verbose
verbose mode on
ufsrestore> extract
Extract requested files
You have not read any volumes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume #: 1
extract file ./etc/shadow
extract file ./etc/passwd
恢复文件和文件系统
496 系统管理指南:设备和文件系统• 2006 年9 月
Add links
Set directory mode, owner, and times.
set owner/mode for ‘.’? [yn] n
ufsrestore> quit
# cd etc
# mv passwd /etc
# mv shadow /etc
# ls -l /etc
如何以非交互方式恢复特定文件
成为超级用户或承担等效角色。
(可选)为安全起见,请对磁带进行写保护。
将卷1 磁带插入磁带机。
转至用于临时将文件恢复到的目录。
# cd /var/tmp
恢复文件。
# ufsrestore xvf /dev/rmt/n filename
x 通知ufsrestore 在filename 参数中复制特定文件或目录。
v 在恢复文件时显示文件名。
f /dev/rmt/n 标识磁带设备名称。
filename 指定一个或多个文件名或目录名(以空格分隔)。例如:
./export/home/user1/mail ./export/home/user2/mail 。
键入文件所在的卷编号。按回车键。
Specify next volume #: 1
文件将被恢复到当前工作目录。
1
2
3
4
5
6
恢复文件和文件系统
第27 章• 恢复文件和文件系统(任务) 497
要维护当前目录的模式,请在set owner/mode 提示符下键入n 并按回车键。
set owner/mode for ’.’? [yn] n
验证恢复的文件。
a. 列出恢复的文件和目录。
# ls -l
此时将显示文件和目录的列表。
b. 检查该列表,以确保列表中指定的所有文件和目录都已恢复。
将文件移至正确的目录。
以非交互方式恢复特定文件
以下示例说明如何以非交互方式将passwd 和shadow 文件恢复到/var/tmp 目录。
# cd /var/tmp
# ufsrestore xvf /dev/rmt/0 ./etc/passwd ./etc/shadow
Verify volume and initialize maps
Media block size is 126
Dump date: Wed Jul 28 16:13:52 2004
Dumped from: the epoch
Level 0 dump of / on starbug:/dev/dsk/c0t0d0s0
Label: none
Extract directories from tape
Initialize symbol table.
Extract requested files
You have not read any volumes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
7
8
9
示例27–3
恢复文件和文件系统
498 系统管理指南:设备和文件系统• 2006 年9 月
Specify next volume #: 1
extract file ./etc/passwd
extract file ./etc/shadow
Add links
Set directory mode, owner, and times.
Specify next volume #:1
extract file ./etc/passwd
extract file ./etc/shadow
Add links
Set directory mode, owner, and times.
set owner/mode for ‘.’? [yn] n
# cd etc
# mv passwd /etc
# mv shadow /etc
# ls -l /etc
从远程磁带设备恢复文件
在使用ufsrestore 命令时,通过在远程磁带设备名的前面添加remote-host:,可以从远程磁
带机中恢复文件。
以下示例说明如何使用venus 系统中的远程磁带机/dev/rmt/0 来恢复文件。
# ufsrestore xf venus:/dev/rmt/0 ./etc/hosts
如何恢复完整的文件系统
有时文件系统会遭到严重损坏,因此必须进行完全恢复。通常,在出现磁盘故障后,需要
恢复完整的文件系统。在恢复软件之前,可能需要更换硬件。有关如何更换磁盘的信息,
请参见第247 页中的“SPARC: 添加系统磁盘或辅助磁盘(任务列表)”或第261 页中的
“x86: 添加系统磁盘或辅助磁盘(任务列表)”。
示例27–4
恢复文件和文件系统
第27 章• 恢复文件和文件系统(任务) 499
完全恢复文件系统(如/export/home)可能需要很长时间。如果已持续备份文件系统,则
可以将其恢复到上次增量备份时的状态。
注– 不能使用此过程来恢复根(/) 文件系统或/usr 文件系统。有关恢复这些文件系统的说
明,请参见第504 页中的“如何恢复根(/) 和/usr 文件系统”。
成为超级用户或承担等效角色。
如有必要,请取消挂载文件系统。
# umount /dev/rdsk/device-name
或:
# umount /file-system
创建新的文件系统。
# newfs /dev/rdsk/device-name
系统将询问您是否要在原始设备上构造新的文件系统。确认device-name 正确,以便不会破
坏其他文件系统。
有关更多信息,请参见newfs(1M) 手册页。
确认是否应该创建新的文件系统。
newfs: construct a new file system /dev/rdsk/cwtxdysz:(y/n)? y
将创建新的文件系统。
在临时挂载点上挂载新的文件系统。
# mount /dev/dsk/device-name /mnt
转到对应的挂载点目录。
# cd /mnt
(可选)为安全起见,请对磁带进行写保护。
将级别0 磁带的第一卷插入磁带机中。
恢复文件。
# ufsrestore rvf /dev/rmt/n
此时会恢复转储级别0 备份。如果备份需要多个磁带,则系统会提示您按数字顺序装入各
磁带。
1
2
3
4
5
6
7
8
9
恢复文件和文件系统
500 系统管理指南:设备和文件系统• 2006 年9 月
取出磁带并在驱动器中装入下一级别的磁带。
请始终从转储级别0 开始恢复磁带,并继续进行其他转储级别的恢复,直到到达最高的转
储级别。
按从低级别到高级别的顺序,对每个转储级别重复执行步骤8 到步骤10。
验证文件系统是否已恢复。
# ls
删除restoresymtable 文件。
# rm restoresymtable
系统将删除已创建且通过ufsrestore 命令执行检查点恢复的restoresymtable 文件。
转到其他目录。
# cd /
取消挂载最近恢复的文件系统。
# umount /mnt
取出最后一个磁带并在磁带机中插入未进行写保护的新磁带。
对最近恢复的文件系统执行级别0 备份。
# ufsdump 0ucf /dev/rmt/n /dev/rdsk/device-name
此时会执行级别0 备份。由于ufsrestore 命令将重定位文件并更改inode 分配,因此应始终
立即执行新创建文件系统的完整备份。
挂载恢复的文件系统。
# mount /dev/dsk/device-name mount-point
恢复的文件系统已挂载并且可以使用。
验证恢复且挂载的文件系统是否可用。
# ls mount-point
恢复完整的文件系统
以下示例说明如何恢复/export/home 文件系统。
# newfs /dev/rdsk/c0t0d0s7
newfs: /dev/rdsk/c0t0d0s7 last mounted as /export/home
10
11
12
13
14
15
16
17
18
19
示例27–5
恢复文件和文件系统
第27 章• 恢复文件和文件系统(任务) 501
newfs: construct a new file system /dev/rdsk/c0t0d0s7: (y/n)? y
819314 sectors in 867 cylinders of 15 tracks, 63 sectors
400.1MB in 55 cyl groups (16 c/g, 7.38MB/g, 3584 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 15216, 30400, 45584, 60768, 75952, 91136, 106320, 121504, 136688,
681264, 696448, 711632, 725792, 740976, 756160, 771344, 786528, 801712,
816896,
# mount /dev/dsk/c0t0d0s7 /mnt
# cd /mnt
# ufsrestore rvf /dev/rmt/0
Verify volume and initialize maps
Media block size is 126
Dump date: Thu Jul 29 10:14:00 2004
Dumped from: the epoch
Level 0 dump of /export/home on starbug:/dev/dsk/c0t0d0s7
Label: none
Begin level 0 restore
Initialize symbol table.
Extract directories from tape
Calculate extraction list.
Warning: ./lost+found: File exists
Make node ./rimmer
Make node ./rimmer/wdir
Make node ./lister
恢复文件和文件系统
502 系统管理指南:设备和文件系统• 2006 年9 月
Make node ./pmorph
Make node ./inquisitor
Make node ./kryten
Make node ./kryten/letters
Make node ./kryten/reports
Extract new leaves.
Check pointing the restore
extract file ./rimmer/words
extract file ./rimmer/words1
extract file ./rimmer/words2
extract file ./rimmer/words3
extract file ./rimmer/wdir/words
extract file ./rimmer/wdir/words1
extract file ./rimmer/wdir/words2
extract file ./rimmer/wdir/words3
.
.
.
Add links
Set directory mode, owner, and times.
Check the symbol table.
Check pointing the restore
# rm restoresymtable
恢复文件和文件系统
第27 章• 恢复文件和文件系统(任务) 503
# cd /
# umount /mnt
# ufsdump 0ucf /dev/rmt/0 /export/home
.
.
.
# mount /dev/dsk/c0t0d0s7 /export/home
# ls /export/home
如何恢复根(/) 和/usr 文件系统
成为超级用户或承担等效角色。
将新的系统磁盘添加到将在其中恢复根(/) 和/usr 文件系统的系统。
有关添加系统磁盘的详细说明,请参阅第248 页中的“SPARC: 如何连接系统磁盘并进行引
导”和第262 页中的“x86: 如何连接系统磁盘”。
在临时挂载点上挂载新的文件系统。
# mount /dev/dsk/device-name /mnt
转到/mnt 目录。
# cd /mnt
(可选)为安全起见,请对磁带进行写保护。
创建磁带设备的链接。
# tapes
恢复根(/) 文件系统。
# ufsrestore rvf /dev/rmt/n
系统将恢复转储级别0 磁带。
取出磁带并在驱动器中装入下一级别的磁带。
始终从转储级别0 开始按照从低转储级别到高转储级别的顺序持续恢复磁带。
1
2
3
4
5
6
7
8
恢复文件和文件系统
504 系统管理指南:设备和文件系统• 2006 年9 月
根据需要继续进行恢复。
# ufsrestore rvf /dev/rmt/n
系统将恢复下一级别磁带。
对每盒其他磁带,重复步骤8 和步骤9。
验证文件系统是否已恢复。
# ls
删除restoresymtable 文件。
# rm restoresymtable
系统将删除已创建且通过ufsrestore 命令执行检查点恢复的restoresymtable 文件。
转到根目录(/)。
# cd /
取消挂载新创建的文件系统。
# umount /mnt
检查新的文件系统。
# fsck/dev/rdsk /device-name
检查所恢复文件系统的一致性。
在根分区中创建引导块。
在SPARC 系统上:
# installboot /usr/platform/‘uname-i‘/lib/fs/ufs/bootblk
/dev/rdsk/device-name
有关更多信息,请参见installboot(1M) 手册页。
有关在基于SPARC 的系统上使用installboot 命令的示例,请参见示例27–6。
在x86 系统上:
# /sbin/installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/cwtxdysz
有关更多信息,请参见installgrub(1M)。
有关在基于x86 的系统上使用installgrub 命令的示例,请参见示例27–7。
在磁带机中插入新的磁带。
9
10
11
12
13
14
15
16
17
恢复文件和文件系统
第27 章• 恢复文件和文件系统(任务) 505
备份新的文件系统。
# ufsdump 0uf /dev/rmt/n /dev/rdsk/device-name
系统将执行转储级别0 备份。由于ufsrestore 命令将重定位文件并更改inode 分配,因此应
始终立即执行新创建文件系统的完整备份。
对/usr 文件系统重复步骤5 到16(如果必要)。
重新引导系统。
# init 6
将重新引导系统。
SPARC: 恢复根(/) 文件系统
本示例说明如何在SPARC 系统上恢复根(/) 文件系统。本示例假设系统是从本地CD 或从网
络进行引导的。
# mount /dev/dsk/c0t3d0s0 /mnt
# cd /mnt
# tapes
# ufsrestore rvf /dev/rmt/0
# ls
# rm restoresymtable
# cd /
# umount /mnt
# fsck/dev/rdsk /c0t3d0s0
# installboot /usr/platform/sun4u/lib/fs/ufs/bootblk
/dev/rdsk/c0t3d0s0
# ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t3d0s0
# init 6
18
19
20
示例27–6
恢复文件和文件系统
506 系统管理指南:设备和文件系统• 2006 年9 月
x86: 恢复根(/) 文件系统
本示例说明如何在x86 系统上恢复根(/) 文件系统。本示例假设系统是从GRUB 故障安全引
导会话、本地CD 或网络进行引导的。
# mount /dev/dsk/c0t3d0s0 /mnt
# cd /mnt
# tapes
# ufsrestore rvf /dev/rmt/0
# ls
# rm restoresymtable
# cd /
# umount /mnt
# fsck/dev/rdsk /c0t3d0s0
# /sbin/installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0t3d0s0
stage1written to partition 0 sector 0 (abs 2016)
stage2 written to to partition 0, 227 sectors starting 50 (abs 2066)
# ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t3d0s0
# init 6
示例27–7
恢复文件和文件系统
第27 章• 恢复文件和文件系统(任务) 507
508
UFS 备份和恢复命令(参考)
本章包含有关ufsdump 和ufsrestore 命令的参考信息。
以下是本章中信息的列表。
第509 页中的“ufsdump 命令的工作原理”
第513 页中的“指定ufsdump 命令选项和参数”
第513 页中的“ufsdump 命令和安全问题”
第514 页中的“指定ufsrestore 选项和参数”
有关执行备份的概述信息,请参见第24 章。
有关备份任务的信息,请参见第25 章。
ufsdump 命令的工作原理
备份文件系统时,ufsdump 命令将执行两遍操作。在第一遍操作中,此命令将扫描文件系统
的原始设备文件,并在内存中生成一个由目录和文件组成的表。然后,此命令会将该表写
入备份介质。在第二遍操作中,ufsdump 命令将按数字顺序遍历inode,读取文件内容并将
数据写入备份介质。
确定设备特征
ufsdump 命令只需要了解适当的磁带块大小以及检测介质结尾的方式。
检测介质结尾
ufsdump 命令可写入大小固定的记录序列。当ufsdump 命令收到通知,得知只写入了某个记
录的一部分时,即假定已经到达该介质的物理结尾。此方法适用于大多数设备。如果设备
无法通知ufsdump 命令仅写入了部分记录,则当ufsdump 命令尝试写入其他记录时会出现介
质错误。
28 第2 8 章
509
注–DAT 设备和8 毫米磁带设备会检测介质结尾,而盒式磁带设备和1/2 英寸磁带设备则不
会检测介质结尾。
ufsdump 命令将自动检测大多数设备的介质结尾。因此,通常不需要使用-c、-d、-s 和-t
选项来执行多卷备份。
如果ufsdump 命令不了解设备检测介质结尾的方式,则需要使用介质结尾选项。
为确保与restore 命令兼容,大小选项仍然可以强制ufsdump 命令在到达当前磁带或软盘的
结尾之前转至下一个磁带或软盘。
使用ufsdump 命令复制数据
ufsdump 命令仅从原始磁盘片中复制数据。如果文件系统仍然处于活动状态,则很可能不会
复制内存缓冲区中的任何数据。通过ufsdump 命令执行的备份不会复制空闲块,也不会生成
磁盘片的映像。如果符号链接指向其他片上的文件,则会复制该链接本身。
/etc/dumpdates 文件的作用
当ufsdump 命令与-u 选项结合使用时,可以维护和更新/etc/dumpdates 文件。
/etc/dumpdates 文件中的每行都将显示以下信息:
备份的文件系统
上次备份的转储级别
备份的周日期、日期和时间
例如:
# cat /etc/dumpdates
/dev/rdsk/c0t0d0s0 0 Wed Jul 28 16:13:52 2004
/dev/rdsk/c0t0d0s7 0 Thu Jul 29 10:36:13 2004
/dev/rdsk/c0t0d0s7 9 Thu Jul 29 10:37:12 2004
执行增量备份时,ufsdump 命令将检查/etc/dumpdates 文件以找到下一个较低转储级别的最
近一次备份的日期。然后,此命令将从该较低级别备份日期以来修改的所有文件复制到介
质。备份完成后,描述刚完成的备份的新信息行将取代描述该级别前一次备份的信息行。
请使用/etc/dumpdates 文件来验证备份是否正在进行。如果您的设备出现了问题,则此验
证特别重要。如果由于设备故障无法完成备份,则不会在/etc/dumpdates 文件中记录备
份。
如果需要恢复整个磁盘,请检查/etc/dumpdates 文件中的最近的备份日期和级别列表,以
便可以确定恢复整个文件系统所需的磁带。
ufsdump 命令的工作原理
510 系统管理指南:设备和文件系统• 2006 年9 月
注– /etc/dumpdates 文件是可编辑的文本文件。但是,如果要编辑该文件,请自担风险。如
果对文件所做的更改与归档文件磁带不匹配,则可能无法找到所需的磁带(或文件)。
备份设备(dump-file) 参数
dump-file 参数(与-f 选项对应)指定备份目标。该目标可以为以下设备之一:
本地磁带机
本地软盘驱动器
远程磁带机
远程软盘驱动器
标准输出
当目标不是缺省的本地磁带机/dev/rmt/0 时,请使用此参数。如果使用-f 选项,则必须为
dump-file 参数指定值。
注– dump-file 参数还可以指向本地磁盘或远程磁盘上的文件。如果操作有误,则错误使用情
况会充满整个文件系统。
本地磁带机或软盘驱动器
通常,dump-file 参数将为磁带设备或软盘指定原始设备文件。当ufsdump 命令写入输出设备
时,将创建一个可能跨多盒磁带或多个软盘的单个备份文件。
通过使用设备缩写,可以指定系统上的磁带设备或软盘。第一个设备始终为0。例如,如果
您具有SCSI 磁带控制器和一个使用中密度格式的QIC-24 磁带机,请使用以下设备名称:
/dev/rmt/0m
指定磁带设备名称时,还可以在名称的结尾处键入字母"n",以指示完成备份后磁带机不应
该反绕。例如:
/dev/rmt/0mn
如果要将多个文件置于磁带上,请使用“不反绕”选项。如果备份期间空间不足,则在
ufsdump 命令要求新磁带之前,该磁带不会反绕。有关设备命名约定的完整说明,请参见第
538 页中的“备份设备名称”。
远程磁带机或软盘驱动器
可以使用语法host:device 来指定远程磁带设备或远程软盘。如果本地系统上的超级用户有权
访问远程系统,则ufsdump 命令将写入远程设备。如果您通常以超级用户身份运行ufsdump
命令,则远程系统上的/.rhosts 文件中必须包括本地系统的名称。如果以user@host:device
格式指定设备,则ufsdump 命令将尝试以指定用户的身份访问远程系统上的设备。在这种情
况下,远程系统上的/.rhosts 文件中必须包括指定的用户。
以上文章转自于 : http://developers.sun.com.cn/