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几个小技巧(批量替换,列编辑) (阅读:36144)
- ps - 按进程消耗内存多少排序 (阅读:11473)
- 100个常用的linux命令 (阅读:10407)
- 每个程序员都应该知道的8个Linux命令 (阅读:9689)
- 最受欢迎的10个 Linux 单行命令 (阅读:8977)
- Linux date 命令获取某日期的前一天 (阅读:8599)
- ps 命令常见用法 (阅读:8038)
- find命令的一点注意事项 (阅读:9512)
- Linux常用系统信息查看命令 (阅读:7544)
- Linux 常见高危操作 (阅读:7225)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:mlsx 来源: Linux|系统管理|WEB开发
- 标签: compress 压缩 命令
- 发布时间:2009-12-17 22:13:42
-
[82] memory prefetch浅析
-
[53] 转载:cassandra读写性能原理分析
-
[51] 深入浅出cassandra 4 数据一致性问
-
[51] 基本排序算法的PHP实现
-
[46] 字符引用和空白字符
-
[42] Inline Form Labels
-
[41] 获取Dom元素的X/Y坐标
-
[41] MySQL半同步存在的问题
-
[40] javascript插入样式
-
[40] JS中如何判断字符串类型的数字