如何修复只读USB驱动器?

god*_*dot 7 usb-drive usb read-only

我有只读 USB 驱动器,无法修复它。我已经阅读了一些关于它的文章并试图修复,但我不能。

我卸载了驱动器并用于dosfsck检查和修复 MS-DOS 文件系统,因为它是FAT文件系统并运行:

dosfsck -a /dev/sdb1
Run Code Online (Sandbox Code Playgroud)

它给出了输出:

fsck.fat 4.1 (2017-01-24) open: 只读文件系统

那么我能用它做什么呢?我可以修理还是该把它扔进垃圾桶了?

hun*_*eke 12

如果 USB 曾经是可写的,现在不再是可写的,这在我的脑海中暗示了 3 件事:

  1. 设备上的硬件开关已被切换。

    如果是这种情况,简单的解决方法是找到硬件开关(它们可能非常微妙),然后切换它。

  2. 发生了“不干净”的卸载,例如在操作系统完成向其写入数据之前将 USB 从插槽中拔出

    为了延长设备的使用寿命并提高性能,对大多数存储介质(包括 USB 驱动器)的写入都会进行缓冲。从本质上讲,这意味着除非您告诉操作系统弹出/卸载 USB 驱动器,否则您无法保证所有数据都已写入。此外,大多数文件系统都有标志来指示何时安装和卸载它们:在将驱动器从驱动器中拉出之前,始终告诉操作系统您要移除驱动器(“弹出”、“卸载”、“关闭”)投币口。

    因此,如果简单地检查和修复文件系统不起作用,那么您可以尝试将数据临时复制到其他地方,重新格式化 USB 驱动器,然后将数据复制回的笨拙方法。通过重新格式化,您将完全覆盖那里的内容,因此操作系统/文件系统将不会记得 USB 驱动器/文件系统在格式化之前是只读的。

    修复文件系统的一个细节。确保它没有先安装。您的命令集暗示它已安装。所以:

    sudo umount /dev/sdb1

    sudo dosfsck -a /dev/sdb1

  3. USB 磁盘本身正在消亡,而嵌入式固件正在保护您免于丢失任何数据。

    如果 USB 使用基于闪存的存储,则可能您已向设备写入足够多的次数,以至于现在无法再写入。写入基于闪存的过程是一个破坏性的过程,每个扇区只能进行多次重写。许多驱动器会“隐藏”这一事实,通过在内部拥有更大的存储空间(例如 16G 的总写入空间),但仅以较小的数量(例如 2G)呈现给操作系统。随着每个扇区开始磨损,固件会自动将数据移动到新的未使用扇区。然而,在写入过多之后,将没有更多可用的存储空间,智能固件实现将锁定驱动器以防止数据丢失。那时,您唯一的选择是将数据复制到新的闪存驱动器。