1. 创建驱动器映像

1. 创建驱动器映像

我在运行 debian 的无头树莓派上有一个 USB,但是在没有卸载的情况下重新启动后(挂载的文件夹上正在运行程序),我无法再使用 USB。以下是我的 Ubuntu 18.04 上的输出:

lsusb,驱动器在那里:

Bus 001 Device 005: ID 090c:3000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.)

ll /dev/disk/by-id/usb-Silicon_Motion_Inc._USB_MEMORY_BAR-0\:0,显示链接到/dev/sdb

/dev/disk/by-id/usb-Silicon_Motion_Inc._USB_MEMORY_BAR-0:0 -> ../../sdb

file /dev/sdb:

/dev/sdb: block special (8/16)

然而,mount /dev/sdb folder显示:

mount: /home/steamos/TOSH: no medium found on /dev/sdb.

我发现以下信息看起来像问题所在 blockdev --report /dev/sdb::

RO    RA   SSZ   BSZ   StartSec            Size   Device
rw   256   512  4096          0               0   /dev/sdb

如果udevadm info -a -n /dev/sdb可以帮助:

looking at device '/devices/pci0000:00/0000:00:01.3/0000:01:00.0/usb1/1-7/1-7:1.0/host10/target10:0:0/10:0:0:0/block/sdb':
KERNEL=="sdb"
SUBSYSTEM=="block"
DRIVER==""
ATTR{alignment_offset}=="0"
ATTR{capability}=="51"
ATTR{discard_alignment}=="0"
ATTR{events}=="media_change"
ATTR{events_async}==""
ATTR{events_poll_msecs}=="-1"
ATTR{ext_range}=="256"
ATTR{hidden}=="0"
ATTR{inflight}=="       0        0"
ATTR{range}=="16"
ATTR{removable}=="1"
ATTR{ro}=="0"
ATTR{size}=="0"
ATTR{stat}=="       0        0        0        0        0        0        0        0        0        0        0"

所以问题出在设备尺寸和ATTR{stat}== 0 0 0 0...

dmesg -w显示:

[33490.303624] usb 1-7: USB disconnect, device number 5
[33510.836920] usb 1-7: new high-speed USB device number 6 using xhci_hcd
[33511.432630] usb 1-7: New USB device found, idVendor=090c, idProduct=3000
[33511.432634] usb 1-7: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[33511.432636] usb 1-7: Product: SM3255AA MEMORY BAR 
[33511.432638] usb 1-7: Manufacturer: Silicon Motion,Inc. 
[33511.438206] usb-storage 1-7:1.0: USB Mass Storage device detected
[33511.438372] scsi host10: usb-storage 1-7:1.0
[33512.473781] scsi 10:0:0:0: Direct-Access              USB MEMORY BAR   1000 PQ: 0 ANSI: 0 CCS
[33512.474222] sd 10:0:0:0: Attached scsi generic sg2 type 0
[33512.474975] sd 10:0:0:0: [sdb] Attached SCSI removable disk

如何恢复 USB 上的文件?

答案1

如何恢复 USB 上的文件?

尽管我希望您能够完全保存驱动器,但我还是想回答这个问题。

1. 创建驱动器映像

这是一个非常重要的步骤,它将防止你造成更多的伤害而不是好处。即使在您继续尝试修复驱动器之前,这也是一个好主意。我们稍后要做的文件恢复将在磁盘映像上执行,而不是在真实磁盘上执行。要创建磁盘映像,只需发出以下命令:(状态标志是可选的,它显示正在dd运行的进度统计信息)

$ sudo dd if=/dev/sdb of=sdb.img bs=1M status=progress

2. 执行文件恢复

有很多恢复应用程序,我个人发现它们photorec效果foremost最好。photorec通常是包的一部分testdisk。在 debian 上,您可以按如下方式安装两者:

$ sudo apt-get install testdisk foremost

a) 摄影

现在只需运行$ photorec sdb.img即可打开 photorec 的交互界面。

按回车键 ( [Proceed]) 选择磁盘映像。在下一个屏幕中,系统会要求您选择一个分区。如果 photorec 找到正确的分区,您可以从此处选择要恢复文件的分区。如果它没有正确检测到分区,只需选择No partition [Whole disk]并再次按回车键即可执行[Search].在下一个屏幕中选择文件系统类型后,您需要选择保存恢复的文件的目录。用 确认C

完成后,继续步骤 3。

b) 最重要的是

虽然 photorec 的工作原理是尝试在使用中查找驱动器和媒体的“数据块”文件雕刻,最重要的是做得有点不同。它仍然使用文件雕刻概念,但它忽略底层文件系统的类型,并直接通过将驱动器的段复制到 RAM 中来工作,然后扫描 RAM 中的文件头类型。 Foremost 附带了大量内置标头来恢复大多数类型的常见文件,如果您想添加自定义页眉/页脚来检测不太常见的文件类型,foremost 为您提供了此功能。

要使用图像上的默认选项运行最重要的,请运行以下命令:

$ foremost -i sdb.img -v

这会将所有恢复的文件保存到output(首先将创建的新目录)。您可以使用该标志指定另一个输出目录-o,并-a忽略错误/保存损坏的文件。

3.过滤恢复的文件

这是可选的,但有时您只对特定类型的文件感兴趣,甚至更糟:恢复工具为您提供一百万个文件,其中数千个看起来像是 JPEG 文件,但实际上它只是一个损坏的文件文件,根本不是图片。要过滤掉这些,您可以使用我对 SuperUser 上的另一个问题的回答。

相关内容