标签 testdisk 下的文章

这篇文章介绍了 testdisk,这是恢复最近删除的文件(以及用其他方式修复分区)的工具之一,非常方便。

当你在 Linux 系统上删除一个文件时,它不一定会永远消失,特别是当你最近才刚刚删除了它的时候。

除非你用 shred 等工具把它擦掉,否则数据仍然会放在你的磁盘上 —— 而恢复已删除文件的最佳工具之一 testdisk 可以帮助你拯救它。虽然 testdisk 具有广泛的功能,包括恢复丢失或损坏的分区和使不能启动磁盘可以重新启动,但它也经常被用来恢复被误删的文件。

在本篇文章中,我们就来看看如何使用 testdisk 恢复已删除的文件,以及该过程中的每一步是怎样的。由于这个过程需要不少的步骤,所以当你做了几次之后,你可能会觉得操作起来会更加得心应手。

安装 testdisk

可以使用 apt install testdiskyum install testdisk 等命令安装 testdisk。有趣的是,它不仅是一个 Linux 工具,而且还适用于 MacOS、Solaris 和 Windows。

文档可在 cgsecurity.org 中找到。

恢复文件

首先,你必须以 root 身份登录,或者有 sudo 权限才能使用 testdisk。如果你没有 sudo 访问权限,你会在这个过程一开始就被踢出,而如果你选择创建了一个日志文件的话,最终会有这样的消息:

TestDisk exited normally.
jdoe is not in the sudoers file.  This incident will be reported.

当你用 testdisk 恢复被删除的文件时,你最终会将恢复的文件放在你启动该工具的目录下,而这些文件会属于 root。出于这个原因,我喜欢在 /home/recovery 这样的目录下启动。一旦文件被成功地还原和验证,就可以将它们移回它们的所属位置,并将它们的所有权也恢复。

在你可以写入的选定目录下开始:

$ cd /home/recovery
$ testdisk

testdisk 提供的第一页信息描述了该工具并显示了一些选项。至少在刚开始,创建个日志文件是个好主意,因为它提供的信息可能会被证明是有用的。下面是如何做的:

Use arrow keys to select, then press Enter key:
>[ Create ] Create a new log file
 [ Append ] Append information to log file
 [ No Log ] Don’t record anything

左边的 > 以及你看到的反转的字体和背景颜色指出了你按下回车键后将使用的选项。在这个例子中,我们选择了创建日志文件。

然后会提示你输入密码(除非你最近使用过 sudo)。

下一步是选择被删除文件所存储的磁盘分区(如果没有高亮显示的话)。根据需要使用上下箭头移动到它。然后点两次右箭头,当 “Proceed” 高亮显示时按回车键。

Select a media (use Arrow keys, then press Enter):
 Disk /dev/sda - 120 GB / 111 GiB - SSD2SC120G1CS1754D117-551
>Disk /dev/sdb - 500 GB / 465 GiB - SAMSUNG HE502HJ
 Disk /dev/loop0 - 13 MB / 13 MiB (RO)
 Disk /dev/loop1 - 101 MB / 96 MiB (RO)
 Disk /dev/loop10 - 148 MB / 141 MiB (RO)
 Disk /dev/loop11 - 36 MB / 35 MiB (RO)
 Disk /dev/loop12 - 52 MB / 49 MiB (RO)
 Disk /dev/loop13 - 78 MB / 75 MiB (RO)
 Disk /dev/loop14 - 173 MB / 165 MiB (RO)
 Disk /dev/loop15 - 169 MB / 161 MiB (RO)
>[Previous]  [  Next  ]  [Proceed ]  [  Quit  ]

在这个例子中,被删除的文件在 /dev/sdb 的主目录下。

此时,testdisk 应该已经选择了合适的分区类型。

Disk /dev/sdb - 500 GB / 465 GiB - SAMSUNG HE502HJ

Please select the partition table type, press Enter when done.
 [Intel  ] Intel/PC partition
>[EFI GPT] EFI GPT partition map (Mac i386, some x86_64...)
 [Humax  ] Humax partition table
 [Mac    ] Apple partition map (legacy)
 [None   ] Non partitioned media
 [Sun    ] Sun Solaris partition
 [XBox   ] XBox partition
 [Return ] Return to disk selection

在下一步中,按向下箭头指向 “[ Advanced ] Filesystem Utils”。

[ Analyse  ] Analyse current partition structure and search for lost partitions
>[ Advanced ] Filesystem Utils
 [ Geometry ] Change disk geometry
 [ Options  ] Modify options
 [ Quit     ] Return to disk selection

接下来,查看选定的分区。

Partition                  Start        End    Size in sectors
> 1 P Linux filesys. data         2048  910155775  910153728 [drive2]

然后按右箭头选择底部的 “[ List ]”,按回车键。

[  Type  ]  [Superblock] >[  List  ]  [Image Creation]  [  Quit  ]

请注意,它看起来就像我们从根目录 / 开始,但实际上这是我们正在工作的文件系统的基点。在这个例子中,就是 /home

Directory /   <== 开始点

>drwxr-xr-x     0     0      4096 23-Sep-2020 17:46 .
 drwxr-xr-x     0     0      4096 23-Sep-2020 17:46 ..
 drwx———     0     0     16384 22-Sep-2020 11:30 lost+found
 drwxr-xr-x  1008  1008      4096  9-Jul-2019 14:10 dorothy
 drwxr-xr-x  1001  1001      4096 22-Sep-2020 12:12 nemo
 drwxr-xr-x  1005  1005      4096 19-Jan-2020 11:49 eel
 drwxrwxrwx     0     0      4096 25-Sep-2020 08:08 recovery
...

接下来,我们按箭头指向具体的主目录。

drwxr-xr-x  1016  1016      4096 17-Feb-2020 16:40 gino
>drwxr-xr-x  1000  1000     20480 25-Sep-2020 08:00 shs

按回车键移动到该目录,然后根据需要向下箭头移动到子目录。注意,如果选错了,可以选择列表顶部附近的 .. 返回。

如果找不到文件,可以按 /(就像在 vi 中开始搜索时一样),提示你输入文件名或其中的一部分。

Directory /shs     <== current location
                                                   Previous
...
 -rw-rw-r—  1000  1000       426  8-Apr-2019 19:09 2-min-topics
>-rw-rw-r—  1000  1000     24667  8-Feb-2019 08:57 Up_on_the_Roof.pdf

一旦你找到需要恢复的文件,按 c 选择它。

注意:你会在屏幕底部看到有用的说明:

Use Left arrow to go back, Right to change directory, h to hide deleted files
    q to quit, : to select the current file, a to select all files
    C to copy the selected files, c to copy the current file <==

这时,你就可以在起始目录内选择恢复该文件的位置了(参见前面的说明,在将文件移回原点之前,先在一个合适的地方进行检查)。在这种情况下,/home/recovery 目录没有子目录,所以这就是我们的恢复点。

注意:你会在屏幕底部看到有用的说明:

Please select a destination where /shs/Up_on_the_Roof.pdf will be copied.
Keys: Arrow keys to select another directory
      C when the destination is correct
      Q to quit
Directory /home/recovery    <== 恢复位置

一旦你看到 “Copy done! 1 ok, 0 failed” 的绿色字样,你就会知道文件已经恢复了。

在这种情况下,文件被留在 /home/recovery/shs 下(起始目录,附加所选目录)。

在将文件移回原来的位置之前,你可能应该先验证恢复的文件看起来是否正确。确保你也恢复了原来的所有者和组,因为此时文件由 root 拥有。

注意: 对于文件恢复过程中的很多步骤,你可以使用退出(按 q 或“[ Quit ]”)来返回上一步。如果你愿意,可以选择退出选项一直回到该过程中的第一步,也可以选择按下 ^c 立即退出。

恢复训练

使用 testdisk 恢复文件相对来说没有痛苦,但有些复杂。在恐慌时间到来之前,最好先练习一下恢复文件,让自己有机会熟悉这个过程。


via: https://www.networkworld.com/article/3575524/recovering-deleted-files-on-linux-with-testdisk.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

当你在系统中有意或无意地使用 shift + delete 组合键、删除选项,或是清空回收站的方式来删除一个文件时,该文件的内容并没有从硬盘(或是其它存储设备)上直接销毁。

它仅仅是从系统的目录结构中被移除,然后你在删除文件的目录下就看不到该文件了,但是这个文件仍然存在你磁盘中的某个位置上。

如果你有一个合适的工具和相关的专业知识,你就可以从电脑中恢复已丢失的文件。然而,随着你存储的文件越来越多,删除的文件将会被覆盖,你可能只能恢复最近删除的文件了。

在这篇文章中,我们将阐明如何在 Linux 系统中使用 TestDisk 来恢复硬盘上已删除或丢失的文件,它是非常优秀的修复工具,随一款免费的叫做 PhotoRec 的工具发布。

PhoteRec 工具用于从存储介质比如硬盘,数码相机和 cdrom 设备中恢复丢失的文件。(LCTT 译注:PhotoRec 的意思是 Photo Recovery,不是 Photo Recorder。)

在 Linux 系统中安装 TestDisk(PhotoRec)

在系统中执行以下相关的命令来安装 TestDisk

------- On Debian/Ubuntu/Linux Mint ------- 
$ sudo apt-get install testdisk
------- On CentOS/RHEL/Fedora ------- 
$ sudo yum install testdisk
------- On Fedora 22+ ------- 
$ sudo dnf install testdisk   
------- On Arch Linux ------- 
$ pacman -S testdisk             
------- On Gentoo ------- 
$ emerge testdisk  

如果你的 Linux 系统仓库中没有这个安装包,可以从 这里 下载然后在 Live CD 中运行即可。

这个安装包也可以在应急修复 CD 工具中找到,比如 Gparted LiveCD 、 Parted Magic 、 Ubuntu Boot CD 、 Ubuntu-Rescue-Remix 及其它工具等。

安装完成之后,使用 root 账号权限打开文本窗口,启动 PhotoRec,并指定已删除文件的分区:

$ sudo photorec /dev/sda3

你将会看到下面的交互界面:

PhotoRec Data Recovery Tool for Linux

Linux 系统 PhotoRec 数据恢复工具

使用左右箭头选择菜单选项,按回车键确认。要继续恢复操作,选择 [Proceed] 并单击 Enter。

你将看到下面的界面:

Select Partition to Proceed File Recovery

选择分区进行文件恢复

选择 [Options] 来查看可用的恢复选项,如下图所示:

Linux File Recovery Options

Linux 系统文件恢复选项

Q 返回,在下图界面,你可以指定你想要查询并恢复的文件扩展名。因此,选择 [File Opt],按回车键确认。

s 来选择或取消选择所有的文件扩展名,如果你已经取消选择了所有的文件扩展名,只需要使用向右箭头选择你想要恢复的文件类型即可(或者按向左箭头取消选择)。

例如,我想恢复所有系统中丢失的 .mov 类型的文件:

Specify Recovery File Type

指定恢复文件类型

b 键保存设置,之后你应该看到如下图所示信息。单击回车键返回(或者按 Q 键),再按 Q 键返回到主界面。

Save File Recovery Settings

保存文件恢复设置

现在选择 [Search] 开始文件恢复。在下图中,选择存储文件分区的文件系统类型,然后按回车键。

Select Filesystem to Recover Deleted Files

选择文件系统类型来恢复删除的文件

下一步,如下图所示,选择是仅对空闲空间还是整个分区进行分析。注意选择整个分区将会让操作过程变得更长更慢。选择合适的选项后,按回车键继续。

Choose Filesystem to Analyze

选择文件系统进行分析

选择一个目录用于存储将要恢复的文件,选择完成之后,按 C 键继续。选择不同分区的目录,以避免当更多的文件存储在这个分区时覆盖掉已删除的文件。

按向左箭头返回到根分区下。

Select Directory to Save Recovered Files

选择要保存恢复文件的目录

下图显示正在被恢复的指定类型的已删除文件。你可以按回车键来停止操作。

注意:在恢复的过程中,你的系统会变得很慢,很可能会卡住一段时间,请耐心等待直至恢复完成。

Recovering Deleted Files in Linux

在 Linux 系统中恢复已删除的文件

最后, Photorec 工具将会显示出已恢复文件的数量及保存的路径。

Linux File Recovery Summary

Linux 文件恢复情况汇总

默认情况下,已恢复的文件将会以 root 账号权限保存,因此,你需要以提升权限的方式打开文件管理器来访问这些文件。

使用如下命令(指定你的文件管理器):

$ gksudo nemo
或
$ gksudo nautilus 

想了解更多的信息,访问 PhotoRec 官网: http://www.cgsecurity.org/wiki/PhotoRec

到此为止吧!在这篇文章中,我们阐明了使用 PhotoRec 工具来恢复磁盘中已删除或丢失文件每一个步骤。这是目前为止我使用过的最可靠和有效的恢复工具,如果你知道还有其它相似的工具,请在评论中跟大家分享。


作者简介:

Aaron Kili 是一个 Linux 系统及 F.O.S.S 爱好者,即将成为一名系统管理员及 Web 开发人员,他现在是 TecMint 网站的内容创建者,他喜欢使用电脑来工作,并且他坚信分享知识是一种美德。


via: http://www.tecmint.com/photorec-recover-deleted-lost-files-in-linux/

作者:Aaron Kili 译者:rusking 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

当用户意外地删除了一个仍然需要的文件时,大多数情况下,是没有简便的方法可以重新找回或重建这个文件。不过,幸运的是文件是可以通过一些方法恢复的。当用户删除了一个文件,该文件并没有消失,只是被隐藏了一段时间。

这里将解释它是如何工作的。在一个文件系统中,有一个叫做 文件分配表 的东西,这个表跟踪文件在存储单元(如硬盘, MicroSD 卡,闪存驱动器等等)中的位置。当一个文件被删除,文件系统将会在文件分配表中执行以下两个任务之一:这个文件在文件分配表上的条目被标记为 “自由空间” 或删除文件分配表里这个文件的条目,且将相应的空间被标记为自由空间 。现在,如果有一个新的文件需要被放置在一个存储单元上,操作系统将会把这个文件放置到标记为空位的地方。在新文件被写入到这个空位后,被删除的文件就彻底消失了。当需要恢复一个已经删除的文件时,用户绝对不能再对任何文件进行操作,因为假如该文件对应的“空位”被占用,这个文件就永远也不能恢复了。

恢复软件是如何工作的?

大多数的文件系统(在删除文件时)只是标记空间为空白。在这些文件系统下,恢复软件查看文件分配表这个文件,然后复制被删除的文件到另外的存储单元中。假如该文件被复制到其它需要恢复的被删除的存储单元中,那么用户将有可能会失去那个所需的删除文件。

文件系统很少会擦除文件分配表中的条目。假如文件系统真的这样做了, 这便是恢复软件在恢复文件了。恢复软件在存储单元中扫描文件头,所有文件都拥有一个特殊的编码字符串,它们位于文件的最前面,也被叫做 魔法数字。例如,一个编译的 JAVA 类文件的魔法数字在十六进制中是“CAFEBABE”。所以,假如要恢复该类型的文件,恢复软件会查找 “CAFEBABE” 然后复制文件到另一个存储单元。一些恢复软件可以查找某种特殊的文件类型。若用户想恢复一个 PDF 文件,则恢复软件将会查找十六进制的魔法数字 “25504446”,这恰恰是 ASCII 编码中的 “%PDF”。恢复软件将会查找所有的魔法数字,然后用户可以选择恢复哪个已删除的文件。

假如一个文件的部分被覆写了,则整个文件就会被损坏。通常这个文件可以被恢复,但是其中的内容可能已经没有什么用处。例如,恢复一个已损坏的 JPEG 文件将会是无意义的,因为图片查看器不能从这个损坏的文件产生一幅图片。因此,即使用户拥有了这个文件,该文件也将毫无用处。

设备的位置:

在我们继续之前,下面的一些信息将会对指引恢复软件找到正确的存储单元起到一定的帮助。所有的设备均挂载在 /dev/ 目录下。操作系统赋予每个设备的名称(并不是管理员给予每个分区或设备的名称)遵循一定的命名规律。

第一个 SATA 硬盘的第二个分区的名称将会是 sda2。名称的第一个字母暗示了存储类型,在这里指的是 SATA,但字母 “s” 也可能指的是 SCSI、 FireWire(火线端口)或 USB。第二个字母 “d” 指的是 disk(硬盘)。第三个字母指的是设备序数,即字母 “a” 指的是第一个 SATA 而 “b” 指的是第二个。最后的数字代表分区。没有分区数字的设备名代表该设置的所有分区。对于上面的例子,对应的名称为 sda 。作为命名的第一个字母还可能是 “h” ,这对应 PATA 硬盘(IDE)。

以下为命名规律的一些例子。假如一个用户有一个 SATA 硬盘(sda),这个设备有 4 个分区- sda1、 sda2、 sda3 和 sda4 。该用户删除了第三个分区,但直到格式化第四个分区之前,第四个分区名 sda4 都将保留不变。然后该用户插入了一个带有一个分区 - 即sdb1- 的 usb 存储卡(sdb),又增加了一个带有一个分区 -hda1- 的 IDE 硬盘 ,接着该用户又增加了一个 SCSI 硬盘 - sdc1 。接着用户移除了 USB 存储卡(sdb)。现在,SCSI 硬盘的名称仍然为 sdc,但如果这个 SCSI 被移除接着再被插入,则它的名称将变为 sdb。虽然还有其他的存储设备存在, 那个 IDE 硬盘的名称仍会有一个 “a”, 因为它是第一个 IDE 硬盘,IDE 设备的命名与 SCSI、 SATA、 FireWire 和 USB 设备要分开计数。

使用 TestDisk 进行恢复:

每个恢复软件有其不同的功能,特征及支持的不同文件系统。下面是一些关于 使用 TestDisk 在各种文件系统中恢复文件的指南。

FAT16、 FAT32、 exFAT (FAT64)、 NTFS 以及 ext2/3/4:

TestDisk 是一个运行在 Linux、 *BSD、 SunOS、 Mac OS X、 DOS 和 Windows 等操作系统下的开源的自由软件。 TestDisk 可以从下面的链接中找到 :http://www.cgsecurity.org/wiki/TestDisk。TestDisk 也可以通过键入 sudo apt-get install testdisk 来安装。TestDisk 有着许多的功能,但这篇文章将只关注恢复文件这个功能。

使用 root 权限从终端中打开 TestDisk 可以通过键入 sudo testdisk 命令。

现在, TestDisk 命令行应用将会被执行。终端的显示将会改变。TestDisk 询问用户它是否可以保留日志,这完全由用户决定。假如一个用户正从系统存储中恢复文件,则不必保留日志。可选择的选项有“生成”、 “追加” 和 “无日志”。假如用户想保留日志,则日志将会保留在该用户的主目录。

在接着的屏幕中,存储设备以 /dev/*的方式被罗列出来。对于我的系统,系统的存储单元为 /dev/sda,这意味着我的存储单元为 一个 SATA硬盘(sd)且它是第一个硬盘(a)。每个存储单元的容量以 Gigabyte(千兆字节)为单位显示的。使用上下键来选择一个存储设备然后点击进入。

下一屏显示出一个列有分区表(也叫做分区映射表)的清单。正如文件有文件配置表,分区有着分区表。分区是存储设备上的分段。例如在几乎所有的 Linux 系统中,至少存在两种分区类型 - EXT3/4 和 Swap 。每一个分区表将会在下面被简要地描述。TestDisk 并不支持所有类型的分区表,所以这并不是完整的列表。

  • Intel - 这类分区表在 Windows 系统和许多的 Linux 系统中非常普遍,它也常常称作 MBR 分区表。
  • EFI GPT - 这种类型的分区表通常用在 Linux 系统中。对于 Linux 系统,这种分区表是最为推荐的, 因为逻辑分区或扩展分区的概念并不适用于 GPT (GUID Partition Table) 分区表。 这意味着,如果每个分区中有一个 Linux 系统,一个 Linux 用户可以从多种类型的 Linux 系统中进行多重启动。当然使用 GPT 分区表还有其他的优势,但那些已超出了本文的讨论范围。
  • Humax - Humax 分区映射表适用于韩国公司 Humax 生产的设备。
  • Mac - Apple 分区映射表 (APM) 适用于 Apple 的设备。
  • None - 某些设备并没有分区表。例如,许多 Subor 游戏控制台不使用分区映射表。如果一个用户试图以其它分区表类型从这类设备中恢复文件,用户就会困扰 TestDisk 为何找卟到任何的文件系统或者文件。
  • Sun - Sun 分区表适用于 Sun 系统。
  • Xbox -Xbox 适用于使用 Xbox 分区映射表的存储设备。

假如用户选择了 “Xbox” ,尽管他的系统使用了 GPT 分区表, 那么 TestDisk 将不能找到任何分区或文件系统。假如 TestDisk 按照用户的选择执行,则它可能猜测错误。(下面的图片显示的是当分区表类型错误时的输出)

当用户为他们的设备选择了正确的选项,则在下一屏中,选择 “高级” 选项。

现在,用户将看到一个列有用户存储设备中所有的文件系统或分区的列表。假如用户选择了错误的分区映射表,则在这一步中用户就将会知道他们做出了错误的选择。假如没有错误,通过移动文字光标来高亮选择含有被删除文件的分区。使用 左右键来高亮位于终端底部的 “列表”。接着,按下回车确认。

新的一屏便会呈现出列有文件和目录的列表。那些白色的文件名就是未被删除的文件,而红色的文件名是那些已被删除的文件。最右边的一列是文件的名称,从右到左方向的接着一列是文件的创建日期,再往左的一列是文件的大小(以 byte/ 比特为单位),最左边带有“-”,“d” ,“r”, “w” 和"x"的一列则代表的是文件的权限情况。“d” 表示该文件为一个目录,其他的权限术语与本文关系不大。在列表的最顶端以“.”代表的一项表示当前目录,第二行以".."代表的一项表示当前目录的上级目录,所以用户可以通过选择目录所在行到达该目录。

举个例子,我想进入"Xaiml\_Dataset" 目录,该目录基本上由被删除的文件组成。通过按键盘上的 "c"键,我将恢复文件 "computers.xaiml",接着我被询问选择一个目标目录,当然,我应该放置该文件到另一个分区中。现在,当我在我的家目录时,按下了“c”键。(选择目标目录时)哪个目录被高亮并没有什么影响,当前目录就是目标目录,在屏幕的上方,将会显示“复制完成”的消息。在我的家目录中便会有一个名为"Xaiml\_Dataset"的目录,里面里有一个 Xaiml 文件。 假如我在更多的已删除文件上按“c” 键,则这些文件将会被放置到新的文件夹中而无需再向我询问目标目录。

当这些步骤完成后,重复按“q”键直到看到正常的终端模样。目录"Xaiml\_Dataset" 只能被 root 用户访问。为了解决这个问题,使用 root 权限改变该目录及其子目录的权限。做完这些后,文件便被恢复了且用户可以访问它们。

特别的 ReiserFS:

为了从 ReiserFS 文件系统中恢复一个文件,首先需将分区中的所有文件做一个备份。因为如果发生某些错误, 这个方法可能会引起文件丢失。接着执行下面的命令,其中 DEVICE指的是那些以 sda2 形式命名的设备。一些文件将被放入 lost+found 目录而其他则会保存到原先被删除的位置。

reiserfsck --rebuild-tree --scan-whole-partition /dev/DEVICE

恢复被某个程序打开的删除文件:

假设用户意外地删除了一个文件,且该文件被某个程序打开。虽然在硬盘中该文件被删除了,但这个程序正使用着位于 RAM 中的该文件的副本。幸好,我们有两种简单的解决方法来恢复该文件。

假如这个软件有保存功能,如文本编辑器,则用户可以重新保存该文件,这样,文本编辑器可以将该文件写入硬盘中。

假设在音乐播放器中有一个 MP3 文件,而该音乐播放器并不能保存该 MP3 文件,则这种情形下需要比先前花更多的时间来恢复文件。不幸的是,这种方法并不能保证在所有的系统和应用中有效。首先,键入下面的命令。

lsof -c smplayer | grep mp3

上面的命令会列出所有由 smplayer 使用的文件,这个列表由 grep 命令通过管道搜索 mp3 。命令的输入类似于下面:

smplayer  10037 collier  mp3    169r      8,1  676376  1704294 /usr/bin/smplayer

现在,键入下面的命令来直接从 RAM(在 Linux 系统中,/proc/映射到 RAM)中恢复文件,并复制该文件到选定的文件夹中。其中 cp 指的是复制命令,输出中的数字 10037 来自于进程数,输出中的数字 169 指的是文件描述符,"~/Music/"为目标目录,最后的 "music.mp3" 为用户想恢复的文件的名称。

cp /proc/10037/fd/169 ~/Music/music.mp3

真正的删除:

为确保一个文件不能被恢复,可以使用一个命令来 “擦除” 硬盘。擦除硬盘实际上是向硬盘中写入无意义的数据。例如,许多擦除程序向硬盘中写入零,随机字母或随机数据。不会有空间被占用或丢失,擦除程序只是对空位进行重写覆盖。假如存储单元被文件占满而没有空余空间,则所有先前被删除的文件将会消失而不能恢复。

擦除硬盘的目的是确保隐私数据不被他人看见。举个例子,一个公司可能预订了一些新的电脑,总经理决定将旧的电脑卖掉,然而,新的电脑拥有者可能会看到公司的一些机密或诸如信用卡号码,地址等顾客信息。幸好,公司的电脑技术人员可以在卖掉这些旧电脑之前,擦除这些硬盘。

为了安装擦除程序 secure-delete,键入 sudo apt-get install secure-delete,这个命令将会安装一个包含 4 个程序的程序集,用以确保被删除的文件不能被恢复。

  • srm - 永久删除一个文件。使用方法: srm -f ./secret\_file.txt
  • sfill - 擦除空白空间。使用方法: sfill -f /mount/point/of/partition
  • sswap - 擦除 swap 空间。使用方法: sswap -f /dev/SWAP\_DEVICE

假如电脑实际去清除那些删除的文件,那么就需要花费更长的时间去执行删除任务。将某些空间标记为空位是快速且容易的,但使得文件永远消失需要花费一定的时间。例如,擦除一个存储单元,可能需要花费几个小时的时间(根据磁盘容量大小)。总之,现在的系统工作的就挺好,因为即便用户清空了垃圾箱,他们仍然有另一次机会来改变他们当初的想法(或错误)。


via: http://www.linux.org/threads/undelete-files-on-linux-systems.4316/

作者:DevynCJohnson 译者:FSSlc 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

我们时不时需要帮助我们的朋友、家人、熟人、商业伙伴或者其他杂七杂八的人摆脱使用Windows的时候遇到的困境。尽管我们不像他们一样日常遇到各种问题,却经常是在他们有难的时候会求助的人。此外,甚至我们自己的Windows分区/驱动器也会出现问题(毕竟,有时候我们还是需要玩儿会儿游戏,而且,尽管Steam在努力,但Linux还不是游戏玩家的梦想之地),但愿不会如此。下面让我们看一两个我们可能会遇到的状况,那时我们可以用手边的Linux环境和一些NTFS分区恢复工具来修复它们。

简单修复

Windows 系统通常能很好的处理异常的“冷重启”(断电,关闭插线板的电源,或家里的小人儿手指随意按导致关机)。事实上,至今为止,最有效的修复Windows桌面问题的方法就是简单的重启系统。但是,Windows分区偶尔会显示系统需要进行驱动器一致性检测。不这么做的话,在几次重启后可能会引起文件系统状况恶化而使系统变得更糟。众所周知,Windows文件系统检查超级慢,而且经常不得不做好几次才能清理掉文件系统的“脏(dirty)”标志。

下面介绍一个叫“ntfsfix”的小工具,在基于Debian的系统(如 Ubuntu)可以通过下面的命令下载:

sudo apt-get install ntfsfix

或者在基于RPM的系统(如 Red Hat 或 CentOS)中通过下面的命令下载:

sudo yum install ntfsfix

这个‘ntfsfix’工具能快速的修复常见的错误以及NTFS分区不一致的问题。最常用的命令不用带任何参数。 它也可以报出来那些没有修复掉的项,然后我们能通过以下选项来修复它们:

  • -b: 清除磁盘上的坏的扇区 (可以在从一个旧磁盘往新的磁盘上克隆之后使用)
  • -d: 清除“脏”标志。“脏”标志是Linux不能挂载一个Windows分区的最常见的原因,通常发生在Windows断电前没有正常关机的情况。
  • -n: 除了在标准输出上显示它要完成的(换句话说,就是需要修复哪些)之外不做任何事。

过去Windows在启动前,用NTFS Disk Check来重置“脏”标志,常常要花几个小时。而‘ntfsfix’完成这个仅仅只需要大约三秒的时。

深度修复

不幸的是, 并非所有的问题都能被快速修复。事实上,有非常多的昂贵的磁盘恢复软件(通常属于“磁盘取证”类的软件,因为是在筛选损坏磁盘的时候调查人员使用的)用来修复那些加电但不能启动或者不能访问文件系统的磁盘。

有一个神奇的工具,免费而强大(而且如果在你本地电脑使用的话,可以放到一个可引导的救援Live CD里面)可以用来恢复你的Windows NTFS分区(而且,也能恢复EXT2/3/4,FAT/FAT32、exFAT、HFS和SunFS文件系统)。这个工具叫做TestDisk,在Debian和CentOS 的软件仓库中可用。Red Hat的软件仓库中并没有这个软件,但是安装它很容易。

sudo apt-get install testdisk

在基于 RPM 的系统(如 Red Hat 或 CentOS):

sudo yum install testdisk

这个工具简直无与伦比。如果驱动器加电并且运转了,甚至当驱动器有物理损坏时,这个小工具仍会奇迹般的取出一些文件来。 你可以通过一个旧式风格的命令“sudo testdisk /dev/sdX”来启动它,这里‘X’是你的驱动器号,之后你会看到下面的界面:

TestDisk在终端中运行

这个工具使用起来很简单,只需要根据菜单提示进行操作,而且它是交互式的。它会扫描你指定的某个分区,然后把重建的目录和文件显示出来,然后你可以标记,并存到另外一磁盘或者分区里面。我已经成功地从Windows,OSX和linux分区里面恢复过文件,这些分区要么因为这种或那种原因不能启动,要么害怕启动之后可能彻底完蛋,总之,这些分区用不了多久就会彻底完蛋了。

说句实在的,你不能期望文件系统100%的恢复,尤其是你的驱动器已经有损坏了,不过至少聊胜于无吧,而且不用像去请专业人员处理那样花很多钱(实际上一分也不用花)。所以如果你的驱动器现在有问题了,那你可以用下这个工具。

结束语

当你使用Linux的时候,磁盘修复要容易得多,当然也便宜的多,要么用USB转接器连接有问题的磁盘,要么从一个LiveCD启动,然后用CD里面的修复工具。本文中我们谈到的所有的工具都是免费使用,而且是在持续开发(更新)中。您可以在下面留言,谈一下你曾经不得不使用什么工具来从您磁盘的问题中恢复。

via: http://blog.linuxacademy.com/linux/ntfs-partition-repair-and-recovery-in-linux/

本文由 LCTT 原创翻译,Linux中国 荣誉推出

译者:younel0925 校对:jasminepeng