我有一个 4GB 的 USB 驱动器,并且iso
向其中写入了一个文件。现在我想删除其中的数据。有什么方法可以恢复空间吗?
我使用 Linux 刻录了以下iso
文件这些说明。
当时我以为iso
如果想恢复存储空间,就只能用U盘来写,然后格式化U盘,结果我错了,这就像把iso
文件刻录到CD/DVD上,数据刻录了但不能删除,现在我失去了3GB的存储空间。
如何才能将闪存盘恢复为普通存储设备?
答案1
“刻录”一词不适用于 USB 闪存。尽管有些人仍然将写入 ISO 映像称为“刻录”,那根本就不重要。USB 存储器存储 ISO 映像内容的方式与存储常规文件的方式完全相同 - 也就是说,它们可以被擦除并用其他内容覆盖。
唯一的区别是 ISO 映像被写入在上面分区和文件系统信息,操作系统将使用这些信息来决定有多少可用空间。因此,操作系统现在看到的不是覆盖整个闪存的 4 GB 分区,而是 ISO 映像中的分区 - 即 Linux 的 ~1 GB 分区和 3 GB 的“未使用”空间。
在 Linux 上,你可以使用任何分区工具(例如图形分区)只是删除所有现有分区并创建一个全尺寸分区然后像往常一样用 FAT32 格式化该分区。
不幸的是,Windows 喜欢歧视可移动磁盘和 USB 记忆棒,但仍然可以使用dd
对于 Windows`,Windows 随后会要求“格式化”USB 棒。此命令将删除第一个兆字节,这足以让操作系统认为整个磁盘未分区。
dd.exe --filter=removable if=/dev/zero of=\\?\Device\Harddisk?\Partition0 bs=1M count=1
当然,dd.exe --list
先运行,然后将其替换Harddisk?
为 USB 驱动器的确切名称。(注意不要擦除系统磁盘的分区表,尽管--filter=removable
应该可以防止这种情况发生。)
答案2
这是因为它不是检测 USB 闪存驱动器,而是将其检测为具有多个分区的 USB 硬盘驱动器。
整个 USB 将是 /dev/sdb
分区将类似于 /dev/sdb1 /dev/sdb2 /dev/sdb3 等等......
因此您需要删除整个分区并创建单个分区。
请执行以下操作:-
sudo fdisk /dev/sdb
现在按 d 删除分区
Command (m for help):d
删除所有分区。
现在您可以通过 fdisk 或任何其他实用程序创建新的分区,而不会出现任何错误,因为分区已被删除。
答案3
当您使用 dd 将 ISO 映像写入 USB 闪存驱动器时,您会覆盖设备上的多个内容,包括分区表。通常可以使用简单的分区程序对其进行重新分区,但您应该确保分区程序检查实际磁盘的大小,而不是像某些分区程序那样相信分区表。在某些情况下,这样做可能有些复杂。
在我看来,避免这种复杂性的最简单方法是完全擦除 USB 闪存盘的分区:
dd if=/dev/zero of=/dev/sd[letter] bs=1M count=1
警告:请仔细检查[letter]
上面的部分是否是您要重新格式化的实际 USB 闪存驱动器的字母。在计算机的主存储设备上执行此操作,然后您将要丟失數據。
完成此操作后,您可以在闪存驱动器上重新创建分区并重新格式化它们。您的分区程序可能会抱怨闪存驱动器上没有分区表;这是正常的(dd
您刚刚运行的命令将其清除),您应该忽略它。