运行fsck.fat /dev/block/mmcblk0p1
,我的故障 SD 卡的设备,我得到这个:
fsck.fat 3.0.28 (2015-05-16)
Read 512 bytes at 0:Input/output error
这是否意味着文件永久不可读?
运行fsck
返回以下内容:
e2fsck: Attempt to read block from filesystem resulted in short read while trying to open /dev/mmcblk0p1
Could this be a zero-length partition?
ddrescue
无法保存任何东西。输出df
:
Filesystem 1K-blocks Used Available Use% Mounted on
udev 4002028 0 4002028 0% /dev
tmpfs 805008 9496 795512 2% /run
/dev/sda5 176456296 55779936 111689840 34% /
tmpfs 4025024 598760 3426264 15% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 4025024 0 4025024 0% /sys/fs/cgroup
/dev/sda1 98304 51376 46928 53% /boot/efi
tmpfs 805008 92 804916 1% /run/user/1000
/dev/mmcblk0p1 15343104 13967392 1375712 92% /media/qwr/9016-4EF8
更新:情况变得奇怪了。在我的 Windows 机器上,似乎整个 SD 卡都是可读的。但是,复制文件非常慢,偶尔会恢复到正常传输速度。我设法复制了我主要追求的文件(我上次备份后拍摄的照片),但在某个时间点之后,无论我等待多长时间,Windows Explorer 都不会继续复制。
我回到 Ubuntu,令我惊讶的是,fsck.fat
实际上运行成功了。运行它几次会给出以下组合:Has a large number of bad entries. (128/133)
, Free cluster summary wrong (42991 vs. really 43267)
, Orphaned long file name part
, Contains a free cluster (144584). Assuming EOF.
,Start does point to root directory. Deleting dir.
ddrescue
现在运行良好,所以我暂时让它继续运行。
奇怪的是,它看起来像是休眠和非休眠,或者暂停和恢复,等待可能会让 Ubuntuddrescue
拯救相当多的东西。
通常,I/O 错误意味着系统遇到了不可恢复的硬件错误。I/O 错误卷上的任何文件都应视为丢失。
话虽如此,数据恢复仍然是可能的(尽管有点困难)。幸运的是,有一些实用程序可以帮助您:
ddrescue
Ddrescue 是一个特殊的实用程序,可用于从故障卷中尽可能多地读取。如果您运行此程序,我强烈建议您写入映像文件,并为任何其他恢复操作(如果可能的话)处理该文件。
photorec
虽然它的名字暗示它只是用于照片,
photorec
但如果有机会,它通常可以用来从驱动器中恢复更多。它可能无法从设备的任何错误扇区中恢复数据,但它可能能够挽救一些东西。dd
DD(
幽默地称为Data D estroyer)是大多数(如果不是全部)现代 Linux 系统的内置实用程序。在最坏的情况下,您可以尝试使用制作闪存驱动器的映像,这可能允许一些更高级的恢复工具(或文件管理器)成功运行。确保您正确指定了命令,否则您将确切了解为什么这被称为 Data Destroyer。dd
如果无法恢复,您可以通过使用
dd
和其他实用程序来恢复卡,用零覆盖整个磁盘。众所周知(在某些极少数情况下)实际上会使驱动器恢复运行(尽管在进行过程中会丢失驱动器的内容)。但是,购买新驱动器几乎总是一个更好的主意。一旦驱动器发生故障,它就会失去任何曾经拥有的信任。