当我尝试对存有重要文件的 SD 卡的写入速度进行基准测试时,我搞砸了。
sync; sudo dd if=/dev/zero of=/dev/sdb1 bs=1M count=1024; sync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 23.5386 s, 45.6 MB/s
^C
我意识到我直接写入了 /dev/sdb1,而不是写入已安装卡内的文件,因此由于担心覆盖数据,我在基准测试似乎结束(但事实并非如此)后立即取消了。现在它将自动安装,但不显示任何内容(无法在文件资源管理器中单击它,并且 gparted 仅将其显示为未知的 exfat 卡。
我能做些什么?
答案1
有很多恢复应用程序,我个人觉得那个最好photorec
用foremost
。Photorec 是软件包的一部分testdisk
,最重要的是可以从软件包中安装foremost
。
a) 光记录
现在只需运行$ photorec /dev/sdb
即可打开 photorec 的交互界面。
按回车键 ( [Proceed]
) 选择磁盘。在下一个屏幕中,系统会要求您选择一个分区。如果 photorec 找到正确的分区,您可以在此处选择要从中恢复文件的分区。如果它无法正确检测分区,只需选择No partition [Whole disk]
并再次按回车键即可执行[Search]
。在下一个屏幕中选择文件系统类型后,您需要选择一个目录来保存恢复的文件。使用 确认C
。
b) 最重要的
虽然 photorec 的工作原理是尝试使用锉雕,Foremost 的做法略有不同。它仍然使用文件雕刻概念,但它忽略了底层文件系统的类型,直接通过将驱动器的片段复制到 RAM 中来工作,然后扫描文件头类型。Foremost 带有许多内置标头来恢复大多数类型的常见文件,如果您想添加自定义页眉/页脚来检测不太常见的文件类型,Foremost 为您提供了此功能。
要使用图像上的默认选项运行 foremost,请运行以下命令:
$ foremost -i /dev/sdb -v
/dev/sdb1
如果您只想从该分区恢复文件,可以使用这里。
这会将所有恢复的文件保存到output
(首先将创建的新目录)。您可以使用标志指定另一个输出目录-o
,并-a
忽略错误/保存损坏的文件。
可选:过滤恢复的文件
这是可选的,但有时您只对特定类型的文件感兴趣,甚至更糟:恢复工具为您提供了数百万个文件,其中数千个文件看起来像是 JPEG 文件,但实际上它只是一个损坏的文件,根本不是图片。要过滤掉这些文件,您可以使用这我对 SuperUser 上的另一个问题的回答。
将来如何预防这种情况发生
dd
我看到人们经常弄乱他们的数据。这太容易了。我的建议:
#!/bin/bash
read -r -p "Have you checked at least TWICE if the parameters are correct? [y/N] " response
response=${response,,}
if [[ "$response" =~ ^(yes|y)$ ]]; then
dd "$@"
else
echo "Better be safe than sorry."
fi
将其另存为/usr/bin/sdd
或任何您想要的名称。chmod +x
然后。从现在开始,始终使用sdd
而不是dd
。