技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Linux --> compress指令并不是总是压缩文件

compress指令并不是总是压缩文件

浏览:2045次  出处信息

    用户观察到了一个很有意思的现象,某一个目录下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的参数。

    没有想到,这开发人员还这么考虑呀。

建议继续学习:

  1. vim几个小技巧(批量替换,列编辑)    (阅读:35893)
  2. ps - 按进程消耗内存多少排序    (阅读:11216)
  3. 100个常用的linux命令    (阅读:10099)
  4. 每个程序员都应该知道的8个Linux命令    (阅读:9373)
  5. 最受欢迎的10个 Linux 单行命令    (阅读:8824)
  6. Linux date 命令获取某日期的前一天    (阅读:8443)
  7. ps 命令常见用法    (阅读:7863)
  8. find命令的一点注意事项    (阅读:8141)
  9. Linux常用系统信息查看命令    (阅读:7309)
  10. Linux 常见高危操作    (阅读:7007)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1