![如何压缩已满的磁盘上的大文件?](https://linux22.com/image/1488175/%E5%A6%82%E4%BD%95%E5%8E%8B%E7%BC%A9%E5%B7%B2%E6%BB%A1%E7%9A%84%E7%A3%81%E7%9B%98%E4%B8%8A%E7%9A%84%E5%A4%A7%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我的磁盘已满,其中包含一个大文件,我想压缩它以释放空间。大多数压缩程序都要求我在磁盘上有足够的可用空间来存储压缩文件和原始文件。虽然 gzip 在完成时会删除原始文件,但它直到压缩文件写入后才会删除。我如何才能就地执行压缩,并在过程中截断原始文件?
我不想创建一个 RAM 磁盘来临时存储整个压缩文件,因为这需要很多额外的步骤,而且压缩文件可能大于我的可用内存。
答案1
简而言之,不。压缩文件需要一定程度的“故障安全”思维。如果压缩过程失败,它需要能够以不丢失文件的方式失败。如果文件压缩到一半失败会发生什么?有许多压缩工具可以使用临时文件夹(可定义)来创建压缩工作文件……直到过程完成……然后删除原始文件并最终将压缩文件放入正确的目标。
您永远找不到可以在压缩文件时动态重写文件的文件压缩工具。
答案2
我使用过很多压缩机,但我不太记得在可用的压缩机中看到过此功能作为可用选项。
理论上,可以这样做。使用 dd 命令(可下载用于 Microsoft Windows,并与许多 Unix 变体捆绑在一起)可以提取文件的特定部分,然后可以对其进行压缩。然后,需要重新调整原始文件的大小。从文件末尾截断可能比从文件开头截断更容易。(这是否属实可能取决于软件代码的实现方式。)如果属实,则以相反的顺序压缩块可能会快得多。
在实践中,我通常发现最好的方法是寻找方法来清理出足够的空间,以便同时拥有两个版本(压缩和未压缩)。(快速插入:我已经成为磁盘使用情况报告的粉丝:目录统计的安装程序, 或者韓識位統計系統在没有 Wine 的 Unix 中类似的东西。)然后,我通常还想留出空间来存放另一个未压缩的副本,这样我就可以解压我得到的副本并将其与原始副本进行比较。这可能相当有挑战性,并且可能涉及多个分区/磁盘。完成这项工作可能相当有挑战性,但如果我做到了,那么我可以删除两个大副本,此时我会感觉不那么拥挤了。
答案3
在 MS File Explore 中右键单击驱动器号,选择属性,选中“压缩此驱动器以节省磁盘空间”,单击“确定”。
如果幸运的话,会有足够的空间让 Windows 开始节省更多空间,最终甚至压缩您想要在磁盘上压缩的文件。
请注意 - 对此驱动器的所有访问都可能会产生轻微的性能影响。
答案4
如果您有拇指驱动器或外部硬盘驱动器,则可以解决这个问题,您应该可以开始使用。大多数压缩程序默认使用用户临时文件夹或系统的临时文件夹。在您的情况下,这将是整个磁盘。但是,每个现代压缩程序都应该允许您更改程序的工作目录。
以最受欢迎的压缩程序之一 7-zip 为例。在“工具\选项\文件夹”下,您可以将工作目录设置为另一个文件夹或驱动器。因此,如果您有一个大小合适的 U 盘或外部硬盘,您可以将其设置为工作目录并将文件保存在那里。