7zip 中“存储”压缩级别的优势

7zip 中“存储”压缩级别的优势

文件夹中有几千张图片,我想将它们存档到外部驱动器上。在谷歌上搜索压缩时,我发现可以将压缩级别设置为“存储”,这意味着数据不会被压缩。

这样做比将文件以未压缩的形式保留在 Windows 文件夹中有什么好处吗?这对 HDD 的性能有帮助吗?

答案1

这样做比将文件以未压缩的形式留在 Windows 文件夹中有什么好处吗?

是的。
作为Keltari 的回答请注意,人们可能会发现处理一个文件比处理多个文件更容易。实际上,如果一个人有一堆文件,他们通常只需将文件放入一个文件夹中,然后对该文件夹执行文件操作(例如复制)。包含文件的存档文件的一般概念与包含文件的目录/文件夹的概念非常相似。事实上,这些概念非常相似,以至于微软对 ZIP 文件的支持(内置于 WinXP(及更新版本)和一些添加了某些代码的 Win9x 系统的图形界面中)在微软的图形界面中被命名为“Microsoft 压缩文件夹”。

示例:当我使用基于 Web 的邮件软件 SquirrelMail 时,我可以上传文件。我可以一次上传多个文件。我不能只选择一堆文件并批量上传。如果我有 30 个文件要上传,我只需告诉 7-Zip 使用“存储”来压缩文件,这样我就不用浪费大量时间尝试压缩数据(如果我知道数据无法压缩),然后我可以轻松地在 SquirrelMail 中上传一个(压缩)文件。

有时,某些文件扩展名(例如,.exe)可能会被禁止,而档案可能会被允许(通过防火墙、电子邮件客户端使用的反恶意软件保护等)

但是,除了表面上“易于使用”之外,某些软件可能还有其他优势。如果文件存档格式包含压缩数据的文件完整性哈希,则可以在访问数据时检查文件完整性。这可以检测到如果不使用文件存档格式可能无法检测到的错误。

当然,理论上,文件系统可以包含存储文件哈希的元数据。这里的区别在于,文件系统通常不包含这种类型的数据,而档案则包含。因此,即使文件系统可以拥有这些数据,它们通常也不会拥有这些数据(至少,传统上许多较旧的文件系统类型不会拥有这些数据)。

存档软件普遍采用“存储”方法的另一个原因是,这种方法非常容易编程。因此,将其作为可用选项几乎没有什么坏处。

如果数据已备份,则存档通常会包含一个时间戳,这可以很容易地记录所包含文件的最旧时间。目录/文件夹可能没有相同类型的时间戳。或者,它们可能有。由于文件系统类型不同(例如,NTFS、exFAT、Ext3、Btrfs 和 ISO9660)和实现这些文件系统的操作系统不同,有时文件系统类型有多个日期(创建/修改/访问),人们可能不愿意相信目录的日期实际上反映了内容更新的时间(而不是其他含义,例如目录的创建、重命名或权限更改的时间,但不一定是数据修改的时间)。存档文件的时间戳通常是值得信赖的,特别是如果该时间是文件名的一部分。

它对 HDD 的性能有帮助吗?

但愿不会。毕竟,这种存储的文件通常有开销(来自一些称为“头”的数据),因此存档数据通常会稍微慢一点,而不是更快。但是,也可能存在例外:它可能会更快。

有时,某些代码会定位一个文件,这会花费很长时间(可能是因为它基本上是在对大量文件进行排序)。执行文件操作(复制/删除/等等)后,定位下一个文件会花费很长时间。通常可以通过使用针对处理此类情况进行了优化的软件(包括文件系统驱动程序)来避免此类问题。但是,在其他情况下,已知会发生这种情况。复制一个大文件的成本通常不会完全相同。(不过,至少从历史上看,有时处理大文件可能会产生很大的成本,这可能是更大的成本。)

使用存储而不是压缩的最大优势是存储速度更快。这是因为需要花费时间来执行数据压缩所需的计算。

这种看法很大程度上是基于较旧的技术。实际上,如果 CPU 足够快(这样压缩数据就不需要花费太多时间),并且数据压缩到一定程度,需要写入磁盘/从磁盘读取的数据就更少,那么压缩可以节省时间。CPU 快速压缩较大的数据,加上压缩数据的缓慢写入,可能比未压缩数据的缓慢写入更快。

还可能存在其他因素,例如较易损坏的设备(如硬盘)的使用较少(“磨损”)。

压缩(和存储压缩数据)或存储(未压缩数据)是否更快取决于:压缩速度、压缩效率(压缩后数据会变小多少)以及写入/读取大量数据的速度。结果往往会随时间而变化,具体取决于 CPU 速度、算法效率(不同的算法,以及可能为这些算法使用的不同选项)和存储速度的差异。

一般来说,解压缩通常比压缩快得多(因为它只是根据已知结果重新创建数据,而不涉及太多探索/猜测),因此如果您必须写入数据一次然后读取多次,则压缩通常是值得的。对于其他情况,许多人认为使用压缩没有什么好处。

因为 CPU 功率是充分地比以往更快,但存储似乎使用得更少了。(人们通常至少可以忍受最低限度/快速压缩的成本。)但是,存档程序(如 7-Zip)通常希望继续支持“存储”,以便人们仍然可以访问(提取/修改)使用存储技术的存档,因为它可能对某些人有帮助(在旧系统上),因为它可以用于其他任务(快速创建数据组合,而不必浪费时间尝试压缩不太可能压缩的数据),并且因为存储是一个简单的过程,所以几乎没有动机将其删除,所以该选项往往仍然可用。

答案2

假设你可能偶尔会从外部驱动器访问单个文件(比如旅行照片),那么没有理由压缩将它们整合到一个档案中。

这些并不适用于您的情况,但一般来说,使用“存储”压缩方法将多个文件分组到单个存档中以进行存档或网络传输有一些优点:

  • 如果通过电子邮件发送附件或复制到 USB 进行分发,则更容易管理单个文件。例如,您可以根据行程存档旅行照片,然后可以轻松地将正确的存档复制/邮寄给同一行程的其他人,而无需忘记包含一些照片(或混合其他照片)。
  • 避免文件传输开销:进行网络文件传输时的协商协议会给每个文件的传输增加很大的开销。
  • 减少块设备的空间浪费:很久以前,当 FAT 文件系统的块大小为 32kB 时,这是一个重大问题(因此,即使是 500b 的图标也会占用 32kB 的磁盘空间)。如今,块大小应该为 4kB 或更小,浪费通常不是什么大问题。

将不可压缩的数据存储到档案中不会对 HDD 性能有帮助,除非是一些不太重要的事情,例如操作系统必须检查单个文件权限,而整个档案的单一权限则需要更长的时间等等。

答案3

我假设您问的是 zip 归档程序。

设置存储的压缩级别,允许您将所有文件放入一个档案(文件)中,但不压缩它。

  • 与保留目录层次结构相比,其优点是它现在是一个文件,因此更容易管理,例如通过电子邮件发送时。
  • 与压缩相比,其优点如下:
    • 如果您存储已经压缩的数据(例如大多数图像格式,例如 jpeg、png),则在尝试压缩时文件可能会增大,并且需要大量处理。
    • 如果将档案存储在另一个档案/存储库中,则如果其全部由外部档案/存储库压缩,则可能会获得更好的压缩效果。
    • 如果您将其存储在修订控制系统中,那么能够看到修订之间的更改,将导致整体存储库更小。

答案4

如果出现任何数据损坏,未压缩的档案不太可能被彻底破坏。正如我在现有的答案,即使某些文件的校验和不匹配,7zip 也能从存档中提取所有文件。当然,存储在受损坏影响的空间中的数据仍将被破坏,但包含损坏运行的文件的其余部分仍然可以恢复。

如果你使用旧方法LZW 压缩例如,文件损坏部分之后的所有数据都无法恢复。即使只有一个字节被清零,解压缩器的字典也不会与压缩器的字典匹配,错误之后出现的所有内容都会是垃圾。(更有可能的是,解压缩器会崩溃。)其他压缩算法可能对损坏不太敏感,但即使是手动挽救未压缩的档案也是微不足道的。

相关内容