三、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 命令移动其所属的整个分层结构。


注 –


请勿在 /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 –l


此时将显示文件和目录的列表。


检查该列表,以确保列表中指定的所有文件和目录都已恢复。


将文件移至正确的目录。


示例说明如何从备份磁带中提取 /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 –l /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


注 –


后备存储文件必须驻留在与使用 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