下一页 上一页 目录

7. 准备将数据写入其他地方

如果您选择走这条路,您需要确保在某处有一个救援分区——用来写出您恢复的文件的新副本的地方。 希望您的系统上有多个分区:可能有一个根分区、一个 /usr 和一个 /home。 有了这么多选择,您应该没有问题:只需在其中一个上创建一个新目录即可。

如果您只有一个根分区,并且所有内容都存储在该分区上,那么情况会稍微尴尬一些。 也许您有一个可以使用的 MS-DOS 或 Windows 分区? 或者您的内核中安装了内存盘驱动程序,也许是以模块的形式? 要使用内存盘(假设内核版本高于 1.3.48),请说出以下内容

# dd if=/dev/zero of=/dev/ram0 bs=1k count=2048
# mke2fs -v -m 0 /dev/ram0 2048
# mount -t ext2 /dev/ram0 /mnt

这将创建一个 2MB 的内存盘卷,并将其挂载到 /mnt

简短的警告:如果您使用 kerneld(或其在 2.2.x 及更高版本 2.1.x 内核中的替代品 kmod)来自动加载和卸载内核模块,那么在您将任何文件从内存盘复制到非易失性存储之前,请不要卸载内存盘。 一旦您卸载它,kerneld 就会认为它可以卸载该模块(在通常的等待期之后),一旦发生这种情况,内存将被内核的其他部分重新使用,从而丢失您刚刚花费数小时辛苦恢复的数据。

如果您有 Zip、Jaz 或 LS-120 驱动器或类似的东西,那么它可能是救援分区位置的不错选择。 否则,您只能坚持使用软盘。

您可能需要的另一件事是一个可以从分区设备中间读取必要数据的程序。 在紧要关头,dd 可以完成这项工作,但是要从例如 800 MB 分区中的 600 MB 处开始读取,dd 坚持读取但忽略前 600 MB。 即使在快速磁盘上,这也要花费相当长的时间。 我的解决方法是编写一个程序,该程序将寻址到分区的中间。 它被称为 fsgrab;您可以在 我的网站Metalab(及其镜像站点)上找到源代码包。 如果您想使用此方法,本迷你教程的其余部分假设您已安装 fsgrab

如果您尝试恢复的所有文件都不超过 12 个块长(其中一个块通常为一千字节),那么您将不需要 fsgrab

如果您需要使用 fsgrab 但又不想下载和构建它,那么将 fsgrab 命令行转换为 dd 命令行是相当简单的。 如果我们有

fsgrab -c 计数 -s 跳过 设备

那么相应的(但通常慢得多的)dd 命令是

dd bs=1k if=设备 count=计数 skip=跳过

我必须警告您,虽然 fsgrab 对我来说运行完美,但我对它的性能不承担任何责任。 它实际上只是一个非常快速和粗糙的临时解决方案,只是为了让事情能够工作。 有关缺乏保证的更多详细信息,请参阅随附的 COPYING 文件(GNU 通用公共许可证)中的“无保证”部分。


下一页 上一页 目录