我使用的是 Debian Jessie,并且有一个 NTFS 的外部 USB 驱动器。我将它插入我的 Raspberry Pi,然后它自动重新启动(可能对于我正在使用的适配器来说功耗太高)。从那时起我就无法再访问我的 USB 驱动器了。我尝试在我的普通计算机上修复它
sudo ntfsfix /dev/sdb1
但它只会告诉我
Volume is corrupt. You should run chkdsk.
我有一台 Windows 计算机,但它也无法检测到驱动器。以下是更多信息:
$ ll /dev/sd*
> brw-rw---- 1 root disk 8, 0 Oct 28 12:07 /dev/sda
> brw-rw---- 1 root disk 8, 1 Oct 28 12:07 /dev/sda1
> brw-rw---- 1 root disk 8, 2 Oct 28 12:07 /dev/sda2
> brw-rw---- 1 root disk 8, 5 Oct 28 12:07 /dev/sda5
> brw-rw---- 1 root disk 8, 16 Oct 28 12:16 /dev/sdb
> brw-rw---- 1 root disk 8, 18 Oct 28 12:16 /dev/sdb2
> brw-rw---- 1 root disk 8, 19 Oct 28 12:16 /dev/sdb3
$ sudo fdisk -l
> Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> Disklabel type: dos
> Disk identifier: 0x0007f3b4
>
> Device Boot Start End Sectors Size Id Type
> /dev/sda1 * 2048 472016895 472014848 225.1G 83 Linux
> /dev/sda2 472018942 488396799 16377858 7.8G 5 Extended
> /dev/sda5 472018944 488396799 16377856 7.8G 82 Linux swap / Solaris
> Disk /dev/sdb: 1.8 TiB, 2000365289472 bytes, 3906963456 sectors
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> Disklabel type: dos
> Disk identifier: 0x6e697373
>
> Device Boot Start End Sectors Size Id Type
> /dev/sdb1 ? 1936269394 3772285809 1836016416 875.5G 4f QNX4.x 3rd part
> /dev/sdb2 ? 1917848077 2462285169 544437093 259.6G 73 unknown
> /dev/sdb3 ? 1818575915 2362751050 544175136 259.5G 2b unknown
> /dev/sdb4 ? 2844524554 2844579527 54974 26.9M 61 SpeedStor
>
> Partition table entries are not in disk order.
$ cat /etc/fstab
> # /etc/fstab: static file system information.
> #
> # Use 'blkid' to print the universally unique identifier for a
> # device; this may be used with UUID= as a more robust way to name devices
> # that works even if disks are added and removed. See fstab(5).
> #
> # <file system> <mount point> <type> <options> <dump> <pass>
> # / was on /dev/sda1 during installation
> UUID=4b0d4c23-d659-4d16-9396-b895c4964b12 / ext4 errors=remount-ro 0 1
> # swap was on /dev/sda5 during installation
> UUID=2cc71c90-2d55-4f49-bdb0-b25166d77014 none swap sw 0 0
> /dev/sdb1 /media/usb0 auto rw,user,noauto 0 0
分区应该是/dev/sdb1
,但正如您所看到的,它不在 中/dev
。另外,我不明白为什么fdisk
说它的类型是QNX4.x 3rd part
.有什么帮助我至少可以检索磁盘上的文件吗?
答案1
如果您能够从磁盘读取原始数据,则可以使用dd
创建磁盘克隆(或者dd_rescue
,如果dd
失败)。然后,您可以使用文件雕刻器,例如foremost
(对我来说,这在格式化和损坏的分区上都产生了良好的结果)。
要使用foremost
,您应该至少有 2.5 倍分区大小的空间来恢复为可用空间(您需要用于分区映像的空间和用于雕刻文件的空间)。
特别是如果您处理损坏的设备,则必须创建它的映像才能使用(防止因意外覆盖设备而导致数据丢失,并最大限度地减少因设备故障而导致的数据丢失)。
文件雕刻器的缺点是您可能需要手动重建文件的各个部分,或者需要使用替代数据(例如,无法重建的 JFIF 图像的预览)。
特别是对于 NTFS,您还可以尝试像这样的工具恒星凤凰NTFS数据恢复(我没有测试或使用过)。
答案2
从命令可以看出fdisk
,分区表全乱了。发生这种情况可能是因为在尝试访问驱动器时驱动器电源被切断。我安装了testdisk
,然后运行
sudo testdisk /dev/sdb
经过快速分析,该磁盘被正确识别为只有一个分区的 ntfs 磁盘,而不是 所建议的四个分区fdisk
。重写分区表testdisk
解决了问题。我现在可以访问所有文件,就好像什么都没发生过一样。
来源:https://linuxacademy.com/blog/linux/ntfs-partition-repair-and-recovery-in-linux/