三、ufsrestore 命令恢复文件和文件系统
1、命令执行过程及注意事项
ufsrestore 命令可以将文件从使用 ufsdump 命令创建的备份复制到磁盘上的当前工作目录下。
可以使用ufsrestore 命令从级别 0 转储和其后的增量转储重新装入整个文件系统分层结构。
还可以使用此命令从任何备份磁带恢复一个或多个单独的文件。
如果以超级用户身份运行 ufsrestore 命令,则可按原始属主、最后修改时间和模式(权限)恢复文件。
恢复文件和目录时,ufsrestore 命令将在当前工作目录中重新创建文件分层结构。
例如:
从 /export/doc/books 目录(其中 /export 是文件系统)备份的文件将相对于 /export 进行保存。换句话说,books 目录中的 book1 文件将在磁带上被另存为 ./doc/books/book1。此后,如果将。/doc/books/book1 文件恢复到 /var/tmp 目录,则该文件将被恢复到 /var/tmp/doc/books/book1。
恢复各个文件和目录时,应该将它们恢复到临时位置,如 /var/tmp 目录。验证文件后,可以将它们移至其正确位置。但是,可以将各个文件和目录恢复到其原始位置。如果执行此操作,请确保不会使用备份磁带中的旧版本覆写新文件。
为避免与其他用户冲突,您可能需要创建并转至一个子目录(如 /var/tmp/restore),将文件恢复到该子目录中。
如果要恢复分层结构,应该将文件恢复到一个临时目录中,这个临时目录必须位于将驻留这些文件的那个文件系统上。然后,在恢复文件之后,便可以使用 mv 命令移动其所属的整个分层结构。
注 �C
请勿在 /tmp 目录中恢复文件,即使是临时恢复也不允许。/tmp 目录通常作为 TMPFS 文件系统进行挂载。TMPFS 不支持 UFS 文件系统属性(如 ACL)。
2、以交互方式恢复文件
转至用于临时将文件恢复到的目录。
# cd /var/tmp
启动交互式恢复。
# ufsrestore if /dev/rmt/n
此时将显示某些提示性消息和 ufsrestore> 提示符。
创建要恢复的文件的列表。
列出目录的内容。
Ufsrestore> ls [directory-name]
转至目录。
Ufsrestore> cd directory-name
创建要恢复的文件和目录的列表。
Ufsrestore> add filenames
(可选的)从要恢复的文件列表中删除任何目录或文件(如果必要)。
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 提示符。
验证恢复的文件。
列出恢复的文件和目录。
# ls �Cl
此时将显示文件和目录的列表。
检查该列表,以确保列表中指定的所有文件和目录都已恢复。
将文件移至正确的目录。
示例说明如何从备份磁带中提取 /etc/passwd 和 /etc/shadow 文件。
# cd /var/tmp
# ufsrestore if /dev/rmt/0
ufsrestore> ls
ufsrestore> cd etc
ufsrestore> add passwd shadow
ufsrestore> verbose
verbose mode on
ufsrestore> extract
set owner/mode for `.’ [yn] n
ufsrestore> quit
# cd etc
# mv passwd /etc
# mv shadow /etc
# ls �Cl /etc
3、以非交互方式恢复特定文件
转至用于临时将文件恢复到的目录。
# 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
文件将被恢复到当前工作目录。
要维护当前目录的模式,请在 set owner/mode 提示符下键入 n 并按回车键。
set owner/mode for '.' [yn] n
验证恢复的文件。
列出恢复的文件和目录。
# ls -l
此时将显示文件和目录的列表。
检查该列表,以确保列表中指定的所有文件和目录都已恢复。
将文件移至正确的目录。
例:
# cd /var/tmp
# ufsrestore xvf /dev/rmt/0 ./etc/passwd ./etc/shadow
Specify next volume #:1
set owner/mode for `.' [yn] n
# cd etc
# mv passwd /etc
# mv shadow /etc
# ls -l /etc
4、恢复完整的文件系统
成为超级用户或承担等效角色。
如有必要,请取消挂载文件系统。
# 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 备份。如果备份需要多个磁带,则系统会提示您按数字顺序装入各磁带。
取出磁带并在驱动器中装入下一级别的磁带。
请始终从转储级别 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
newfs: construct a new file system /dev/rdsk/c0t0d0s7: (y/n) y
# mount /dev/dsk/c0t0d0s7 /mnt
# cd /mnt
# ufsrestore rvf /dev/rmt/0
# rm restoresymtable
# cd /
# umount /mnt
# ufsdump 0ucf /dev/rmt/0 /export/home
# mount /dev/dsk/c0t0d0s7 /export/home
# ls /export/home
四、使用 UFS 快照
1、快照概述
可以使用 fssnap 命令在挂载文件系统的同时备份文件系统。此命令可用于创建文件系统的只读快照。
运行 fssnap 命令时,此命令将创建一个虚拟设备和一个后备存储文件。可以使用现有的任何 Solaris 备份命令备份虚拟设备,此设备的外观和操作均与实际设备相同。后备存储文件是一个位图文件,其中包含自捕获快照以来已修改的预备快照数据副本。
UFS 快照功能为文件系统的备份提供了更高的可实现性及便利,这是因为文件系统始终保持挂载状态,并且该系统在备份过程中始终处于多用户模式下。然后,即可使用 tar 或 cpio 命令将 UFS 快照备份到磁带中进行更长久的存储。如果使用 ufsdump 命令执行备份,则系统应该处于单用户模式下,以便在执行备份时使文件系统保持不活动状态。
如果一个目录不是单独的文件系统,快照创建会失败。
2、如何创建 UFS 快照
成为超级用户或承担等效角色。
确保文件系统有足够的磁盘空间可用于后备存储文件。
# df -k
确保名称和位置相同的后备存储文件尚不存在。
# ls /backing-store-file
创建 UFS 快照。
# fssnap -F ufs -o bs=/backing-store-file /file-system
注 �C
后备存储文件必须驻留在与使用 UFS 快照捕获的文件系统不同的文件系统上。
检验是否已创建快照。
# /usr/lib/fs/ufs/fssnap -i /file-system
3、示例
以下示例说明如何创建 /usr 文件系统的快照。后备存储文件为 /scratch/usr.back.file。虚拟设备为 /dev/fssnap/1。
# fssnap -F ufs -o bs=/scratch/usr.back.file /usr
/dev/fssnap/1
以下示例说明如何将后备存储文件限制到 500 MB。
# fssnap -F ufs -o maxsize=500m,bs=/scratch/usr.back.file /usr
/dev/fssnap/1
4、查看与删除快照
列出所有当前快照。
例如:# /usr/lib/fs/ufs/fssnap -i
确定要删除的快照。
# /usr/lib/fs/ufs/fssnap -i
删除快照。
# fssnap -d /file-system
Deleted snapshot 1.
如果在创建快照时未使用 -o unlink 选项,请手动删除后备存储文件。
# rm /file-system/backing-store-file
以下示例说明如何删除快照并假定未使用 -o unlink 选项。
# fssnap -i
0 /export/home
1 /export
# fssnap -d /usr
Deleted snapshot 1.
# rm /var/tmp/export.snap0
5、备份快照
如何创建 UFS 快照的完整备份
# ufsdump 0ucf /dev/rmt/0 /snapshot-name
例如:
# ufsdump 0ucf /dev/rmt/0 /dev/rfssnap/1
检验是否已备份快照。
例如:
# ufsrestore tf /dev/rmt/0
如何创建 UFS 快照的增量备份
以增量方式备份 UFS 快照意味着仅备份自上一个快照以来修改的文件。使用带有 N 选项的 ufsdump 命令。此选项可指定为跟踪增量转储而插入 /etc/dumpdates 文件中的文件系统的设备名称。
以下 ufsdump 命令可指定用于创建文件系统增量备份的嵌入式 fssnap 命令。
成为超级用户或承担等效角色。
创建 UFS 快照的增量备份。
例如:
# ufsdump 1ufN /dev/rmt/0 /dev/rdsk/c0t1d0s0 `fssnap -F ufs -o raw,bs=/export/scratch,unlink /dev/rdsk/c0t1d0s0`
在本示例中,-o raw 选项用于显示原始设备而不是块设备的名称。通过使用此选项,可以更轻易地在要求使用原始设备的命令(如 ufsdump 命令)中嵌入 fssnap 命令。
检验是否已备份快照。
# ufsrestore ta /dev/rmt/0
6、从 UFS 快照中恢复数据。
使用 ufsrestore 命令恢复 UFS 快照,其方式与恢复数据的方式相同。
oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html