我在运行 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 上的另一个问题的回答。