如何压缩仅包含少量数据的超大文件

如何压缩仅包含少量数据的超大文件

我买了一个 250 GB 的 SSD,对其进行了完整格式化,安装了 Win10,然后使用在 Linux 终端中输入命令进行备份,以防我的 SSD 在某些时候损坏,所以现在我有一个大小约为 250 GB 的磁盘映像文件,如下所示:

| --- some data (approx. 17 GB) --- | ------ no data at all, only nulls ------ |

我开始使用压缩文件压缩并期望压缩会足够聪明地给我一个。压缩大约 17 GB 的大小,但经过几个小时的压缩和我的。压缩已经超过 50 GB,我中断了该过程并来这里询问您是否还有其他可能的方法来做到这一点。

答案1

你确定驱动器的空白部分只包含空值吗?那里可能有很多已删除的垃圾。分发包中的内容无疑是压缩存储的。它被解压缩以进行安装,然后文件被复制达到目标后,所有临时垃圾都会被删除。因此,我预计删除的数据至少与安装大小一样大 - 即交换文件占用的空间。

除此之外,当涉及到高度可压缩的数据时,我发现在非常糟糕的情况下压缩档案会使其进一步缩小。大多数压缩器都有一个字典项的最大长度,当文件中的冗余大大超过这个长度时(就像您的问题与您想象的一样),您最终会得到压缩的字典条目的代码运行。(请注意,我也看到了压缩包含大量小文件的档案带来的一点好处——文件不再压缩,但内部数据却压缩了。)

话虽如此,您需要做的是复制您的分区,然后尽可能缩小复制的分区(如果可以,删除您的交换和休眠文件),然后对结果执行您所做的事情。

答案2

您不能假设磁盘上的任何空白区域只包含 0 或完全一致的数据。删除文件不会自动将 0 写入其占用的磁盘区域,它只会将指向该数据的任何指针标记为无效,并等待其他需要在该空间写入数据的东西。与此同时,无论数据在哪里,从技术上讲仍然在那里,但获取起来更加困难。

您也不能假设新磁盘将被归零,数据很可能是制造和测试过程中的完全随机的垃圾。

如果您确实必须以这种方式生成磁盘映像,那么您需要首先自己用一致的数据填充该空白空间。

在 Windows 上,您可以下载一个名为删除并且它有一个选项可以正确地对磁盘进行零填充:sdelete -z

对于较大的磁盘来说,这将非常耗时,并且可能需要数小时甚至数天,具体取决于磁盘的大小。

更明智的选择是使用能够理解磁盘格式的工具,并且只存储真正需要存储的数据,而忽略磁盘上的“空白”空间。

  • Macrium 反射
  • 克隆兹拉
  • Acronis Trueimage

这些都是其中的一部分,但是还有很多磁盘映像软件。

相关内容