SD 卡被识别但不会挂载“无法读取超级块”

Aut*_*ton 10 filesystem mount sd-card data-recovery

尝试查看 SD 卡上的文件时,我收到以下消息。

## Unable to access “16 GB Volume” ##
Error mounting /dev/mmcblk0p1 at /media/automat0n/6366-3430: Command-line `mount -t "vfat" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush" "/dev/mmcblk0p1" "/media/automat0n/6366-3430"' exited with non-zero exit status 32: mount: /dev/mmcblk0p1: can't read superblock
Run Code Online (Sandbox Code Playgroud)

SD 卡用于我的相机,当它插入相机时,我可以查看它的所有文件和视频,所以我不相信 SD 已损坏。

我目前正在对 testdisk 进行分析,但我不确定我还能做些什么来从卡上获取文件。我宁愿不格式化卡并丢失我的数据。

任何帮助或建议将不胜感激。

Jay*_*Eye 8

在尝试其他任何操作之前,请将整个设备复制到一个安全的地方:

sudo dd if=/dev/mmcblk0 of=/var/tmp/safeplace bs=1024k
Run Code Online (Sandbox Code Playgroud)

如果dd出现错误,则您的设备或机器中的读卡器可能有问题。您是否尝试在其他机器上阅读它(我认为答案是“是”,所以请继续阅读!)

接下来,使用尝试读取分区表:

sudo parted -l /dev/mmcblk0

什么是分区类型?

  1. 如果是vfat,可能是超级块损坏了;尝试sudo fsck.vfat /dev/mmcblk0p1(检查手册页的选项)。

  2. 你真的是在 linux 机器上创建的吗?如果不是,则可能是 exFAT 文件系统。尝试:

    sudo dd if=/dev/mmcblk0p1 bs=16 count=1 | hd
    
    Run Code Online (Sandbox Code Playgroud)

    并查看前几个字节是否为“EXFAT”。如果是这样,请安装基于保险丝的 exfat:

    sudo apt-get install exfat-fuse
    
    Run Code Online (Sandbox Code Playgroud)

    如果 GUI 无法自动识别,请尝试手动安装。

如果这仍然不起作用,那么我们将不得不深入挖掘:)