compression - 缓存以更快地重新压缩给定编辑/添加/删除的文件夹
问题描述
概括
假设我在一个文件夹中有大量文件,我想在发送到服务器之前对其进行压缩/压缩。将它们压缩在一起后,我意识到我想添加/删除/修改文件。可以避免从头开始经历整个压缩过程吗?
细节
我想可能有某种方法可以缓存部分压缩过程(无论是还是) .zip
,以使压缩增量,即使它导致次优压缩。例如,考虑朴素字典编码压缩算法。我想应该可以在单个文件上使用编码字典,而无需重新处理所有文件。我还想象这种缓存机制提供的压缩损失会随着更多文件的添加/删除/编辑而增加。.gz
.bzip2
类似问题
这个问题有两个问题:
- 一个C 实现,这意味着它是可能的
- 一个与 C# 相关的问题,这意味着可以通过先压缩单个文件来实现?
- 一个PHP 实现,这意味着没有特殊的文件系统是不可能的
- 一个特定于 Java 的相邻问题,这意味着它是半可能的?
解决方案
查阅手册页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 存档的内容而不是当前目录的内容。
推荐阅读
- reactjs - 如何在反应电子应用程序中使用 cookie?
- php -
htaccess 中的 HTTP_HOST 条件会破坏 PHP - java - RandomAccessFile 没有从文件中读取任何内容
- laravel-lighthouse - 无法在 Laravel 8 全新安装上安装 Lighthouse
- flutter - 禁用时 Flutter FlutButton 样式不起作用
- powershell - 使用 PowerShell 将日志行从起始字符串提取到第一个时间戳
- python - 一个对象可以从一个类提升到另一个类吗?(从学徒到绝地大师)
- ruby-on-rails - 如何在 ERB(Rails)中注入 data-inject-svg?
- html - 在移动屏幕上看不到完整的幻灯片
- javascript - 如何在 Firebase 函数中实现模块化常量