Ubuntu 上针对非 EXT* 格式的碎片整理工具

Ubuntu 上针对非 EXT* 格式的碎片整理工具

我有一个闪存驱动器,用于家庭和学校的一般用途。我只使用 Ubuntu,但在学校和其他家庭电脑上,他们使用 Winblows。因此,我的闪存驱动器采用 FAT32 格式,以便在两种类型的机器上轻松读取。但是,我想确保我的驱动器可以进行碎片整理。在 Ubuntu 上有什么方法可以做到这一点吗?

答案1

将所有数据从 USB 驱动器中移出,然后再将其复制回来,将确保没有碎片文件。

然而,这样做毫无意义,因为碎片不会影响固态硬盘的性能

答案2

如果你的电脑速度足够快,例如有 CPU VT 支持

启动 Windows 虚拟机来对你​​的 USB 密钥(例如 VBOX)进行碎片整理

答案3

对 USB 驱动器进行碎片整理的一个原因是,如果您的汽车音响将使用它作为音乐源。例如,如果您将一个文件夹添加到驱动器,您的音响可能不够智能,无法将其按字母顺序与较旧的文件夹对齐。如果您将曲目添加到文件夹中,您可能会在搜索音响上的驱动器时发现曲目丢失或位于驱动器上最后一个文件夹附近的某个地方。计算机读取驱动器的速度比汽车音响要快得多。读取 USB 驱动器的汽车音响具有非常基本的计算机协议,碎片化的驱动器会使其混乱。我知道我的两辆车上的两个不同的索尼音响就是这种情况。

将内容复制到计算机、从驱动器中删除文件,然后从计算机将它们返回到驱动器也无法正常工作。您最终会得到重复的文件夹!这是因​​为计算机在您的驱动器上放置的“这些文件已删除”的小标记会被汽车音响完全忽略。文件仍然存在,您的计算机足够聪明,如果您告诉它删除它们,它会忽略它们。汽车音响要笨得多。

现在,从理论上讲,如果您用 8 GB 的数据替换 8 GB 的数据,它应该会用该数据覆盖相同的扇区,并且不会弹出任何错误。但是,如果您添加了一个文件夹,并且新文件夹按字母顺序放在中间某个位置,那么您将以一种奇怪的方式偏移该文件夹之后的其余文件夹。用 8.2 GB 的数据替换 8 GB 的数据,中间有一个文件夹,这意味着新文件夹之后的 4 GB 将占据 USB 驱动器的略微不同的部分。您最终可能会得到驱动器复制文件夹的最后 0.2 GB。同样,如果您删除了一个文件夹,然后执行复制、删除和复制回的过程,您最终可能会得到列表末尾的几个文件夹重复。

我发现解决这个问题的唯一方法是格式化 USB 驱动器。在 Windows 中,您可以选择不执行“快速格式化”,因为这样只会在驱动器开头放置一个小注释,而不会更改任何数据。驱动器在计算机上看起来是空的,但您的汽车音响仍然会认为文件在上面或显示错误。因此,请使用需要一段时间的完整格式化程序(因为它会对整个驱动器进行处理)。这实际上会擦除驱动器,以便您可以开始清理。

在 ubuntu 中,有几种方法可以获得全新的 USB。gparted 是一种简单的图形工具,但它也会显示您的可启动驱动器,如果您不仔细查看所代表的驱动器并选择正确的驱动器进行格式化过程,您真的会搞砸您的计算机。usb 应该是 sdb1 或类似的名称,而不是 sda1,后者是您的主硬盘驱动器。不要弄乱名称中带有“sda”的任何东西,并确保你弄乱的东西与你的 USB 驱动器大小相同,并且如果你移除驱动器,它就会消失。(你必须刷新才能看到 gparted 中的变化)。

实际上,擦除 USB 驱动器的命令过程(在您从中复制所有内容之后)非常简单。

您需要 sudo,因此我只需执行“sudo su”作为我的第一个命令并输入我的密码即可。首先,您需要一些未随 ubuntu 预装的应用程序(出于某些不正当的原因)。输入以下内容:

apt-get 安装 dosfstools

这将安装格式化为 fat32 所需的东西并发挥神奇的作用。如果您已经拥有它,则不会发生任何变化。

然后执行以下命令:

fdisk -l

您将看到驱动器列表,包括内部驱动器和 USB。USB 可能是 sdb1 或带有“sdb”和数字的驱动器。您可以通过移除 USB 驱动器并重复该命令来仔细检查(智能)。如果 sdb 驱动器从第二个列表中消失,您就知道它是正确的。重新插入驱动器并再次执行 fdisk -l 以确保它以相同的 sdb 名称重新出现在同一个位置。我将在这些命令中使用“sdbx”,但您需要替换正确的驱动器名称,可以是 sdb1 或 sdc1,也可以是 fdisk -l 列表显示的任何名称。

接下来,输入命令

mkdosfs -F 32 -I /dev/sdbx

由于某种奇怪的原因,这真的非常快,你可能会认为它失败了。但如果你做对了,你不会看到任何错误。你可能必须卸载驱动器并重试格式化命令。如果你收到有关卸载驱动器或驱动器繁忙的错误,请关闭显示驱动器内容的所有窗口并键入

sudo 卸载 /dev/sdbx

我发誓,很久以前有人搞砸了代码,以至于卸载是用 umount 而不是 unmount 完成的。一个简单的拼写错误,现在和永远都会是那样。哈哈

使用 umount 卸载后,只需再次执行格式化代码。这次应该可以正常工作。完成此代码后,您可以关闭终端(完成后)并将内容复制回 USB 驱动器。我不确定为什么它在 ubuntu 中如此之快,而在 Windows 中却如此之慢。ubuntu 似乎与 Windows 中的“快速格式化”做同样的事情,但我知道事实上 Windows 中的快速格式化不起作用,而 ubuntu 中的这种快速格式化始终有效。

无论如何,希望这对某人有帮助

相关内容