我正在尝试解压外部硬盘上的 tar 文件,这花的时间太长了。
该文件压缩后为 100GB,解压后为 500GB。
我在 Windows 命令行上使用以下命令:
wsl
cd f
tar -xzvf filename.tgz
似乎有一些从外部驱动器到主系统硬盘驱动器的写入操作,然后再返回。
这似乎浪费时间。有什么办法可以避免吗?
答案1
您没有说“太长”是什么意思……但无论如何:在外部硬盘上写入 500 GB 应该需要一些时间。假设您的磁盘连接到 USB 3,并且它可以维持 120 MB/s 的连续写入速度(这是一个不错的性能),则写入 500 GB 需要一个多小时。如果连接到 USB 2,则大约需要 5 个小时。
但是由于要解压的文件位于同一个磁盘上,磁盘无法连续写入输出文件,它还必须读取输入文件。它不仅不能同时读写,而且读写头还必须在输入文件和输出文件之间不断来回移动:这是部分随机访问,而 HDD 在这方面表现很差。在这种情况下,性能会严重下降。
而且,如果解压后的数据由大量小文件组成,情况就更糟了,因为每个写入的文件都有固定的开销成本。
此外,根据你正在运行的 PC,瓶颈可能是 CPU如果它不够强大(这是一个 gzip 压缩的档案,并且解压缩不是免费的)。
最后,你没有说你的驱动器型号是什么,但现在很多驱动器都是SMR 驱动器,即“叠瓦式磁记录”。SMR 技术允许更高的记录密度,因此容量更大,但代价是:写入性能可能相当糟糕。为了解决这个问题,这些驱动器包含可变数量的写入缓存,具有良好的写入性能。但是当一次写入大量数据时,一旦缓存填满,性能就会再次下降。
所以,你看,许多档案解压速度不如您所愿的潜在原因。对于大多数原因,您无能为力……但至少,您应该将档案文件放在与目标驱动器不同的驱动器上(如果可能,放在内部驱动器上):这将抑制随机访问问题。将文件复制到内部驱动器所花费的时间可能会在解压过程中恢复。
编辑 正如评论中所建议的,我添加了另一个潜在原因:驱动器上的文件系统可能存在碎片。