个人工具

UbuntuHelp:DataRecovery/zh

来自Ubuntu中文

61.175.228.173讨论2008年10月23日 (四) 09:07的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航, 搜索




如果你有文件被删除或在错误和格式化中丢失,不管是从硬盘、分区、光驱还是记忆卡中丢失,都能通过 Ubuntu 软件库中的 free-libre 这个软件恢复。以下将介绍如何通过这个软件恢复丢失的数据。此教程适用于 Ubuntu 7.04 和 7.10。

基本原则

你最好不要再去写出错的设备,除非你知道硬件哪里出错了。以下这些软件将试着从你出错或者摔坏的硬件中恢复数据。如果你的数据非常重要,而且以下这些软件不起作用,请寻求专业帮助而不要在这个设备中写入任何数据。如果你的硬件已经损坏,建议你先对其做个镜像备份,在从镜像中恢复数据。恢复数据时,你将需要另外一个存储设备,而且它的存储空间必须大于等于你所要恢复的那个存储设备的空间。你应该通过安装在其他位置的操作系统或一个 live CD 来运行这些软件。一个 Ubuntu 的 live CD 就很不错。如果你这台机器没有足够的内存或者不能上网,你可以使用一个专门用来数据恢复的 live CD -- Ubuntu-rescue-remix。在这个CD中含有以下介绍的所有软件。

Parted

通过命令行运行 parted 来恢复你的分区。在改变你硬盘的分区表时,请确认你的所有分区都没有被挂载。包括交换分区。最简单的方法就是通过 live CD 来运行这个命令。Parted在 Ubuntu 的基本系统中默认安装。一旦进入桌面,打开一个终端然后运行以下语句卸载交换分区:

sudo swapoff -a

然后运行 parted 并告诉它要处理那个设备。例如:如果你的硬盘驱动 /dev/sda 是你想恢复的驱动,那么运行:

sudo parted /dev/sda

然后,使用修复选项:rescue START END,START 是指你认为该分区开始的地方而 END 为结束的地方。如果 parted 找到一个可能的分区,它将询问你是否要将它加入分区表中。

Testdisk

另外,testdisk 这个软件也许也能恢复您的分区。使用任何方法来安装以下这个软件包:

testdisk

运行 testdisk,它将在你的电脑,并提供一个菜单式的界面帮助你恢复丢失的分区。

sudo testdisk

损坏的文件系统或驱动上恢复数据

摘自 /usr/share/doc/gnuddrescue/README:GNU ddrescue 是一个数据恢复工具。它把数据从一个文件或一个数据块设备(硬盘、光驱等)复制到另一个里面,当读取错误时,它将努力修复这些数据。除非你要求,它不会截断输出文件。所以,每次你操作同一个输出文件时,请使用日志文件,这样它会按照日志文件的记录将数据复制全。ddrescue 的最基本操作是全自动的,也就是说,你不必遇到一个错误时停止运行它看完记录再重复运行。如果你使用它的记录文件方式,那么数据恢复的效果很高(只有需要的数据块被读取)。你也可以在任何时候暂停修复,而且在以后任何时候可以继续前面的修复操作而不必从头开始。 自动合并备份:如果你有一个文件、光驱等的多个出错备份,你可以用 ddresce 依次对它们进行修复,每次都使用相同的输出文件,这样你很有可能能获得一个完整的无错的文件。因为不同的备份在同一个地方出错的可能性非常低。如果使用记录文件,你在第二次以及随后的修复过程中,ddrescue只读取需要修复的地方以提高效率。ddresce - 将数据从一个文件或数据块设备中复制到另外一个。它不同与 gnuddrescue,这个文档只适合于gunddrescue。使用任何方法安装一下软件包。

gddrescue

以如下方式运行gnuddrescue:

ddrescue [选项] infile outfile [日志文件]

如果/dev/sda不可读,你将需要另外一个磁盘或存储介质,而且这个磁盘有比出错的硬盘更大的空间以存储输出文件。

sudo ddrescue -r 3 /dev/sda /media/usbdrive/image /media/usbdrive/logfile

随后运行:

sudo ddrescue -r 3 -C /dev/sda /media/usbdrive/image /media/usbdrive/logfile

gnuddrescue将根据日志文件只读取那些有错误的位置。在以上两种情况中,-r 选项意思是当 gddrescue 遇到错误时尝试读取的次数(-1 为无限次)。其他例子:以下两个例子来自于 ddrescue 自带说明页面中。例一:将/dev/hda2上的一个ext2分区恢复至/dev/hdb2上。

ddrescue -r3 /dev/hda2 /dev/hdb2 logfile
e2fsck -v -f /dev/hdb2
mount -t ext2 -o ro /dev/hdb2 /mnt

例二:恢复位于/dev/cdrom中的光盘数据

ddrescue -b 2048 /dev/cdrom cdimage logfile 

将光盘镜像写入一张新的光盘。

从修复镜像中提取文件

损坏的驱动盘镜像已经做好了,现在可以从中恢复文件了。

Foremost

Foremost 是一个命令行工具。它可以从很多文件系统中(包括fat,ext3,NTFS等)恢复文件。它能够从 live CD中直接安装并运行。从光盘启动,将软件仓库调整为universe repository,然后安装 foremost。使用any method来安装以下软件包:

foremost

Foremost能够从一个驱动的镜像或者直接从这个驱动中恢复文件。如果这个驱动存在硬件错误,那么先用gnuddrescue这个软件将这个驱动进行修复并做一个镜像。比如你那些丢失的文件在hda,你需要在其他的驱动上创建一个可写的文件夹,以便存放你恢复的数据。(比如说一个大容量的USB移动硬盘sdb)

sudo mount /dev/sdb1 /recovery
sudo mkdir /recovery/foremost

然后运行foremost:

sudo foremost -i /dev/hda -o /recovery/foremost

如果要从一个镜像中恢复文件,用镜像的文件名代替驱动名就可以了:

sudo foremost -i image -o /recovery/foremost

The recovered files will then be owned by root. Change their ownership so that you can use them: 这些修复的文件所有者为root,你需要改变其所有者为你的当前用户才能使用:

sudo chown -R youruser:youruser /recovery/foremost

使用 -w 选项来获得一个关于可修复文件的统计:

sudo foremost -w -i /dev/hda -o /recovery/foremost

使用 -t 选项可以只修复特定文件格式的文件:

sudo foremost -t jpg -i /dev/hda -o /recovery/foremost

可用的格式:jpg:支持JFIF、Exif等在现代数码相机上常用的格式。gif、png、bmp:支持windows bmp格式。avi、exe:支持windows PE二进制文件,同时也会提取他们编译时产生的DLL和EXE文件。mpg:支持大部分MPEG文件(必须以0x000001BA作为开始)。wav、riff:因为AVI和RIFF使用相同的文件格式RIFF,所以会同时提取。注意如果分开提取的话,速度会快得多。wmv:注意同时也会提取-wma文件因为他们有相同的格式。mov、pdf、ole:它会提取所有是OLE文件结构的文件。包括PowerPoint, Word, Excel, Access, 和StarWriter。doc:注意它将会比ole更有效。如果你希望忽略其他所有ole文件就使用它。zip:它也将提取.jar文件因为他们使用相同的格式。Open Office dosc使用zip'd XML文件所以也将被提取。它包括SXW, SXC, SXI,以及SX?(所有没有确定的OpenOffice files)。rar,htm,cpp:C源代码文件。这是非常简单的归类,它也会生成其他非C代码文件。all:运行所有预定义的方法来提取文件(当没有加-t选项时,这是默认值)。

Photorec

Photorec是本一个可以从数码相机存储卡甚至硬盘中恢复损坏的图片的软件。现在它扩展成能搜索非视频和音频的文件。它能搜索80中不同的文件类

型。Photorec是Testdisk软件包的组成部分。按照any method安装以下软件包:

testdisk

用Photorec来处理一个镜像文件:

sudo photorec imagefilename

如果想用它来从一个设备中直接恢复文件,不使用任何参数运行photorec后,有一个菜单出来供你选择。

sudo photorec

Ntfsprogs ===

Ntfsundelete can recover deleted files from an NTFS filesystem From the manpage:
<pre>EXAMPLES

Look for deleted files on /dev/hda1.

ntfsundelete /dev/hda1

Look for deleted documents on /dev/hda1.

ntfsundelete /dev/hda1 -s -m '*.doc'

Look for deleted files between 5000 and 6000000 bytes, with at least
90% of the data recoverable, on /dev/hda1.

ntfsundelete /dev/hda1 -S 5k-6m -p 90

Look for deleted files altered in the last two days

ntfsundelete /dev/hda1 -t 2d

Undelete inodes 2, 5 and 100 to 131 of device /dev/sda1

ntfsundelete /dev/sda1 -u -i 2,5,100-131

Undelete inode number 3689, call the file 'work.doc' and put it in the
user's home directory.

ntfsundelete /dev/hda1 -u -i 3689 -o work.doc -d ~

Save MFT Records 3689 to 3690 to a file 'debug'

ntfsundelete /dev/hda1 -c 3689-3690 -o debug

</pre>
=== Magicnumber ===

Need info.

recoverjpeg

Need info.

sleuthkit and autopsy

Need info.

Autopsy

Autopsy can be run from the live cd, but you must specify an address to which you can connect remotely. You must also specify an external disk on which it can save the extracted information. Example, assuming you have an external disk mounted to /media/disk with an autopsy folder on it and your ip address is 192.168.0.1: sudo autopsy -d /media/disk/autopsy 192.168.0.1

Sleuthkit

Extract unallocated (deleted) blocks from a disk or disk image dls inputimage &gt; outputimage Use any tool to search the output image for files.