有朋友带来了这个WD My Passport 外置硬盘找我看看我是否可以恢复她的文件。断电后,设备“无法工作”。根据她的证词,当设备连接时,Windows“识别”驱动器(无论这意味着什么),但她“看不到她的文件”。
在我的 Ubuntu 14.10 机器上,我得到了以下结果:
$ lsusb
Bus 004 Device 002: ID 1058:0748 Western Digital Technologies, Inc. My Passport 1TB USB 3.0
这两个设备在驱动器连接时出现,但在移除后消失:
crw-rw---- 1 root disk 21, 3 Jan 11 19:30 sg3
crw------- 1 root root 21, 4 Jan 11 19:30 sg4
/dev/
我可能错过了子目录中或子目录之一中的其他内容。我不知道以下文件是否相关,因为即使拔掉驱动器后它仍然存在:
$ ls -la /dev/usb
crw------- 1 root root 180, 0 Jan 11 19:00 hiddev0
我拆解了外壳,希望获得一个 SATA 或 IDE 接口连接到驱动器,但该设备的 PCB 上有 USB 3.0 连接。有一些似乎是空的跳线(就像旧 IDE 驱动器上的跳线一样),但无法从外壳外部访问它们。
尝试安装此驱动器的下一步是什么?理想情况下,我希望将dd
其内容转移到一个安全的地方,然后fsck
进行一些祈祷。我不确定该设备的格式是 FAT 还是 NTFS,因为 Western Digital 似乎销售具有任一分区类型的设备。如果我尝试安装错误的 FAT 或 NTFS 类型,/dev/sg3
是否会造成任何额外损坏?/dev/sg4
编辑:/dev/sg3
且/dev/sg4
不会安装设备。这是挂载尝试的结果:
$ ls -la | grep sg
drwxr-xr-x 2 root root 140 Jan 11 20:43 bsg
crw-r--r-- 1 root root 1, 11 Jan 11 19:00 kmsg
crw-rw---- 1 root disk 21, 0 Jan 11 19:00 sg0
crw-rw----+ 1 root cdrom 21, 1 Jan 11 19:00 sg1
crw-rw---- 1 root disk 21, 2 Jan 11 19:00 sg2
crw-rw---- 1 root disk 21, 3 Jan 11 20:43 sg3
crw------- 1 root root 21, 4 Jan 11 20:43 sg4
$ mkdir ~/inbal
$ sudo mount -t ntfs /dev/sg
sg0 sg1 sg2 sg3 sg4
$ sudo mount -t ntfs /dev/sg4 ~/inbal
[sudo] password for dotancohen:
Error reading bootsector: Illegal seek
Failed to sync device /dev/sg4: Invalid argument
Failed to mount '/dev/sg4': Illegal seek
$ sudo mount -t ntfs /dev/sg3 ~/inbal
Error reading bootsector: Illegal seek
Failed to sync device /dev/sg3: Invalid argument
Failed to mount '/dev/sg3': Illegal seek
$ sudo mount -t vfat /dev/sg4 ~/inbal
mount: /dev/sg4 is not a block device
$ sudo mount -t vfat /dev/sg3 ~/inbal
mount: /dev/sg3 is not a block device
答案1
我知道这是一个老问题,这个答案实际上应该是我没有足够声誉的评论,但我认为应该在这里给出某种警告:
即使尝试以只读方式安装也可能会导致对驱动器进行写访问!
最好的例子是以只读方式安装 Reiserfs 分区(!):这将改变磁盘上的至少一个字节,可以通过比较安装前后拍摄的分区映像轻松验证这一点。刚刚在 Reiserfs 版本 3.6.24 中再次出现。我猜想这是某种增加的安装计数器。
我在旧的 NTFS 驱动程序中看到了类似的情况,但在再次卸载分区后,磁盘上的更改被恢复。请注意:我们谈论的是只读安装!
因此,当尝试救援磁盘时,dd
(或类似的)发生在任何安装尝试之前,甚至是只读尝试。
问题中描述的情况的另一个障碍是内核无法建立任何块设备来访问驱动器。
ls
正如您从的列表中看到的/dev
,这些sg*
文件是字符设备。它们用于使用 SCSI 命令与较低级别的设备进行通信。例如,参见SCSI-通用-HOWTO。此类设备不能在 mount 命令中使用。
如果在 中看不到该驱动器的块设备/proc/partitions
,则大多数诊断和救援工具(如 Smartmontools、hdparm
、testdisk
、甚至)都dd
将被排除。
我担心你需要一个非常优秀的巫师才能做到这一点。