compress指令并不是总是压缩文件
用户观察到了一个很有意思的现象,某一个目录下10个小文件,每一个大概都只有几十个字节。都是纯文本。分别对这10个文件用compress指令压缩,结果发现其中一个压缩不成功,也没有给出任何报错信息。
将该文件传送到AIX 5上,使用compress压缩,则给出”file not change”的提示,依然没有压缩。
给文件重命名,也不行。另外创建一个文件,然后把文件内容复制过去,也不行。
我尝试用strace跟踪了compress压缩该文件的过程。发现压缩的确做了,但是最后却执行了unlink的操作,也就是把已经压缩好的文件删除了。
为什么要删除呢?先看看compress的帮助吧,发现有这样一个参数的说明:
-f Forces output file to be generated, even if one already.
exists, and even if no space is saved by compressing.
If -f is not used, the user will be prompted if stdin is.
a tty, otherwise, the output file will not be overwritten.
其中提到了压缩空间的问题。我猜测可能是压缩效率的问题。
于是用compress -f 的方式,果然压缩成功了。比较压缩前和压缩后的大小,结果发现压缩后的文件还比压缩前的文件要大。难怪,所以-f提高了即使没有压缩空间。
这倒是挺有意思,一来压缩一个文件,大小不减反增,比较少见。二来compress指令还去做比较?
于是下载了compress 4.2的源代码,大致看了一下,果然有这么一个判断:
以下是代码片段:
if (bytes_out >= bytes_in && !(force))
exit_code = 2;
bytes_out是压缩后的字节,bytes_in是读入的字节,也就是原始文件的大小。force对应的是-f的参数。
没有想到,这开发人员还这么考虑呀。
建议继续学习:
- vim几个小技巧(批量替换,列编辑) (阅读:35995)
- ps - 按进程消耗内存多少排序 (阅读:11356)
- 100个常用的linux命令 (阅读:10226)
- 每个程序员都应该知道的8个Linux命令 (阅读:9528)
- 最受欢迎的10个 Linux 单行命令 (阅读:8898)
- Linux date 命令获取某日期的前一天 (阅读:8519)
- ps 命令常见用法 (阅读:7951)
- find命令的一点注意事项 (阅读:8301)
- Linux常用系统信息查看命令 (阅读:7426)
- Linux 常见高危操作 (阅读:7115)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:mlsx 来源: Linux|系统管理|WEB开发
- 标签: compress 压缩 命令
- 发布时间:2009-12-17 22:13:42
- [70] IOS安全–浅谈关于IOS加固的几种方法
- [69] Twitter/微博客的学习摘要
- [64] 如何拿下简短的域名
- [63] Go Reflect 性能
- [63] android 开发入门
- [61] find命令的一点注意事项
- [59] 流程管理与用户研究
- [58] Oracle MTS模式下 进程地址与会话信
- [58] 图书馆的世界纪录
- [58] 读书笔记-壹百度:百度十年千倍的29条法则