使用ext4magic.
使用ext4文件系统恢复磁盘上已删除文件的另一种替代方法是使用ext4magic。
此应用程序也很简单。
应用程序的最基本语法如下:
$ sudo ext4magic [device] -f [folder_to_scan] -r -d [output_folder]
如果我想从名为files的文件夹恢复已删除的文件,则该命令将类似于这个:
$ sudo ext4magic /dev/sdb1 -r -d files
从已删除的分区中恢复文件
通常,Linux用户经常同时安装多个系统,并且在安装过程中,它们可能会错误地删除分区。
但是,如何从这些已删除的分区中恢复文件?
为此,我们需要使用名为testdisk的工具恢复分区。
testdisk是一个强大的分区分析和数据恢复实用程序。
Debian和Ubuntu等大多数Linux发行版都配有TestDisk。
另一方面,应用程序是跨平台,支持大量分区表,例如英特尔,MSDO和MAC。
这些是最流行的分区表。
此外,它支持许多文件系统,如NTFS,EXT4和其他非流体文件系统,如BEOS和Reiserfs。
删除文件时,删除文件占用的群集列表,标记可用于使用的这些扇区。
如果群集未被覆盖,TestDisk可以恢复文件。
首先,开始应用程序:
$ testdisk
接下来,我们可以选择为日志创建新文件。
如果要创建一个,请选择"创建"选项,然后按Enter键。
如果我们不想要日志文件,请选择"无日志"选项。
接下来,将扫描系统识别的磁盘或者分区。
在这种特殊情况下,SDA是我们想要恢复的分区。
testdisk识别各种类型的分区表。
除非我们使用的是专业化的,否则通常是英特尔。
在下一个屏幕中,我们将看到程序具有的一系列选项。
对于这种特殊情况,我们需要选择"分析"选项。
使用此选项,该程序将彻底地分析磁盘以查找结构。
然后,它会询问我们要做的搜索类型。
通常,选择快速搜索选项。
如果我们很幸运,我们将看到已删除的分区。
如果没有,我们必须选择更深入的搜索。
然后,选择写入选项以编写分区表。
完成后,重新启动系统,我们将备份分区!
请注意,在这些步骤期间,可能需要很长时间。
它取决于磁盘大小。
根据文件系统的类型,此分区可能具有,将遵循特定的指令。
他们稍后会详述。
从NTFS恢复已删除的文件
NTFS是Windows文件系统。
我们有一个名为ntfsundelete的工具,非常简单。
首先,我们需要扫描磁盘或者分区。
例如:
$ sudo ntfsundelete /dev/sda1
然后,我们将能够使用以下命令恢复已删除的文件:
$ sudo ntfsundelete [HD_Or_partition] -u -m [filename]
使用debugfs
也可以使用Debugfs工具恢复已删除的文件。
此工具还使用已删除文件的inode编号。
但是,它只适用于ext4文件系统。
它的操作也很简单。
首先,我们必须输入分区或者设备。
$ debugfs [device]
例如,
$ sudo debugfs /dev/sdb1
然后,经过一段时间,我们将能够登录Debugfs控制台以搜索最近删除的文件。
$ debugfs: lsdel
在第一个列中,我们将看到该设备中已删除文件的inode号码。
然后,使用以下命令还原它:
$ debugfs mi <inode_number>
在内存文件中恢复(使用inode)
如果删除另一个进程使用的文件,则可以使用inode将其从内存中还原。
必须建立一些初始条件。
首先,删除的文件必须由另一个进程保持打开。
然后,我们必须验证该过程并最终恢复并更改其权限。
在这种情况下,我将使用nano编辑器创建一个名为example.txt的文件并添加一些文本:
$ nano example.txt
然后保存更改并打开另一个终端窗口并使用该文件。
例如,具有较少的命令。
$ less example.txt
打开另一个终端会话,删除文件并确保它已删除:
$ rm example.txt $ ls example.txt
如我们所见,文件不再存在。
但我们将能够恢复它。
为此,让我们获取与文件inode相关的进程的数量。
$ lsof | grep example.txt
我们将注意到使用该文件的进程和命令(较少的命令)。
从该图像中,我们必须注意第二和第四个值。
这些是分别的过程的PID和文件的描述符。
然后,使用以下命令恢复:
$ ls -l /proc/2325/fd/4
然后将其复制到我们想要的任何位置,这足以恢复它。
$ sudo cp /proc/2325/fd/4 .
接下来,检查结果并打开文件:
这样,我们可以恢复仍在内存上的删除文件并由inode的进程使用。
从ext4恢复已删除的文件(使用extundelete)
ext4是大多数Linux发行版的默认文件系统。
它是非常快的,技术特征是Linux内核的优势。
从ext4文件系统中恢复文件的使用工具之一是extundelete。
extundelete是一个开源应用程序,允许使用ext3或者ext4文件系统从分区或者磁盘中恢复已删除的文件。
它易于使用,默认安装在大多数Linux发行版上。
要恢复某个文件,只需使用以下命令:
$ sudo extundelete [device] -restore-file [pathfile]
例如:
$ sudo extundelete /dev/sdb1 -restore-file home/angelo/other.txt
如果要恢复文件夹中的所有文件,请使用通配符:
$ extundelete /dev/sda6 -restore-file home/angelo/*
但如果要在分区或者磁盘上还原所有文件,则下一个命令就足够了:
$ extundelete /dev/sda6 -restore-all
因此,恢复的文件将位于recovered_files目录上。
这样,我们可以使用extundelete恢复已删除的文件。
恢复覆盖文件(使用Scalpel)
Scapel是另一个开源工具,允许我们从格式化的驱动器,覆盖文件甚至损坏的驱动器中恢复文件。
它以其速度和效率而闻名。
从这个意义上讲,它是一种考虑的替代方案。
手术刀在没有文件系统的帮助下拼接文件。
它试图提取文件的页眉和页脚,并尝试使用某种精心设计的算法猜出整个文件结构。
像TestDisk一样,它在大多数Linux发行版的官方存储库中提供。
因此,其安装减少到终端和分布的包装管理器的使用。
使用Scapel最快和最简单的方法如下:
$ scalpel [device] -o [output_folder]
output_folder指定Scapel将放置所有恢复的文件的位置。
请注意,ScalPel将创建输出目录本身。
但Scapel如何知道哪些文件恢复?
嗯,它在应用程序配置文件中定义。
此配置文件通常位于以下位置:
/etc/scalpel/scalpel.conf
并且我们可以使用我们喜欢的文本编辑器打开它,并且我们只需要取消注释行以定义要搜索的文件格式。
我们取消注释的文件格式化,ScalPel将搜索它。
接下来,运行完整的scarpel命令,以及在输出文件夹中,我们将看到恢复的文件。
$ sudo scalpel /dev/sdb1 -o recovered_files1
从FAT32恢复文件
另一个常见的Windows文件系统是FAT32.
我们可以使用TESTDISK恢复FAT32的文件。
所以再次运行TestDisk作为root用户并将磁盘传递为参数:
$ sudo testdisk [partition/HD]
然后继续如上所述的步骤来恢复文件。
从SD卡恢复已删除的文件
通常,在SD卡上,常常注意到它们用于多媒体文件。
因此,建议为这些文件使用更专业的程序。
在这种情况下,我们将使用称为Photorec的应用程序,该应用程序包含在TestDisk中。
首先,将SD卡插在PC上。
接下来,运行Photorec作为root:
$ sudo photorec [device]
然后,我们将看到以下图像。
选择媒体并继续并按Enter键。
接下来,选择分区。
并选择选项,然后按Enter键。
在那里,我们将看到恢复选项:
按Q返回上一个屏幕。
有必要选择要恢复的文件类型。
这是通过选择文件opt选项来实现的。
按S键选择并取消选择所有格式。
我们还可以使用右键选择要恢复的文件类型。
要保存所选选项,请按B键。
使用Q键返回主菜单。
然后,在主菜单上,选择启动进程的搜索选项。
并选择文件系统。
然后,我们将呈现两个选项。
自由和整体。
通常,免费就足够了。
如果我们想进行深度分析,请选择整体,但请记住,它将减慢过程。
现在,有必要选择将保存文件的位置。
为此,请按C键。
选择目的地后,将开始恢复过程。
请记住,系统将崩溃和冻结。
所以请耐心。
从外部驱动器恢复已删除的文件
现在让我们想象我们有一个外部闪存驱动器,并且错误地,我们已从其中删除了一些文件。
如何恢复它们?
我们将使用testdisk命令。
此外,我们可以将闪存驱动器添加为像这样的参数:
$ sudo testdisk /dev/sdb
接下来,选择"继续"。
然后,选择分区表类型。
然后,选择要恢复文件的高级选项。
下一步是选择分区和取消删除选项。
然后,我们将在分区上看到所有已删除的文件。
现在,选择目标文件夹以放置恢复的文件。
我们需要在第一个选项上按C将文件放在当前目录上。