运行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 资源管理器都无法继续复制。
我回到 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
拯救相当多的事情。
答案1
通常,I/O 错误意味着系统遇到了不可恢复的硬件错误。I/O 错误卷上的任何文件都应视为丢失。
话虽如此,数据恢复仍然是可能的(尽管有点困难)。幸运的是,有一些实用程序可以帮助您:
ddrescue
Ddrescue 是一款特殊的实用程序,可用于从故障卷中读取尽可能多的数据。如果您运行此程序,我强烈建议您写入映像文件,并以此为基础进行任何其他恢复操作(如果有的话)。photorec
虽然它的名字暗示它只用于照片,但photorec
如果有机会,它通常可以用来从驱动器中恢复更多内容。它可能无法从设备的任何错误扇区恢复数据,但它可能能够挽救一些东西。dd
DD(幽默地称为德艾塔德estroyer 是大多数(如果不是全部)现代 Linux 系统的内置实用程序。最坏的情况下,您可以尝试使用它dd
来制作闪存驱动器的映像,这可能会让一些更高级的恢复工具(或文件管理器)成功运行。确保您正确指定了命令,否则您将学到完全为什么这被称为数据毁灭者。
如果无法恢复,你可能可以使用dd
和其他实用程序将整个磁盘覆盖为零来恢复卡。众所周知(在极少数情况下)这实际上可以使驱动器恢复运行(尽管在此过程中会丢失驱动器的内容)。但是,几乎总是最好换一个新的驱动器。一旦驱动器发生故障,它就会失去它曾经拥有的任何信任。