首页 > 解决方案 > 缓存以更快地重新压缩给定编辑/添加/删除的文件夹

问题描述

概括

假设我在一个文件夹中有大量文件,我想在发送到服务器之前对其进行压缩/压缩。将它们压缩在一起后,我意识到我想添加/删除/修改文件。可以避免从头开始经历整个压缩过程吗?

细节

我想可能有某种方法可以缓存部分压缩过程(无论是还是) .zip,以使压缩增量,即使它导致次优压缩。例如,考虑朴素字典编码压缩算法。我想应该可以在单个文件上使用编码字典,而无需重新处理所有文件。我还想象这种缓存机制提供的压缩损失会随着更多文件的添加/删除/编辑而增加。.gz.bzip2

类似问题

这个问题有两个问题:

  1. 一个C 实现,这意味着它是可能的
  2. 一个与 C# 相关的问题,这意味着可以通过先压缩单个文件来实现?
  3. 一个PHP 实现,这意味着没有特殊的文件系统是不可能的
  4. 一个特定于 Java 的相邻问题,这意味着它是半可能的?

标签: compression

解决方案


查阅手册页zip,有几个相关的命令:

更新

-u
--update

仅当 zip 存档中的现有条目的修改时间比 zip 存档中已有的版本更新时才替换(更新)该条目。例如:

    zip -u stuff *

将在当前目录中添加任何新文件,并更新自上次创建/修改 zip 存档 stuff.zip 以来已修改的所有文件(请注意,当您执行此操作时,zip 不会尝试将 stuff.zip 打包到自身中)。

请注意,不带输入文件参数的 -u 选项的作用类似于 -f (freshen) 选项。

删除

-d
--delete

从 zip 存档中删除(删除)条目。例如:

    zip -d foo foo/tom/junk foo/harry/\* \*.o

将删除条目foo/tom/junk、以 开头的 foo/harry/所有文件以及以 .o 结尾的所有文件(在任何路径中)。请注意,shell 路径名扩展已被反斜杠禁止,因此 zip 可以看到星号,从而使 zip 能够匹配 zip 存档的内容而不是当前目录的内容。


推荐阅读