Bz* 命令

bzip2是用来压缩和解压文件的一个命令, 它最大的优点在于超高的压缩效率.

bzip2VSgzip

  • bzip2压缩率更高
  • gzip速度更快
  • 在高压缩率下bzip2的速度更块一些(相比gzip)

压缩某个文件

  1. ls -l catshadow
  2. -rwxrwxr-x 1 mr mr 8.7K 11 11 15:49 catshadow*
  3. bzip2 catshadow
  4. ls -l catshadow.bz2
  5. -rwxrwxr-x 1 mr mr 2.8K 11 11 15:49 catshadow.bz2*

然后你就会发现原来的文件不见惹…

在压缩文件(.bz2)里面搜索 (bzgrep)

如果你压缩了某个日志文件, 想搜索里面的某条信息, 那你是不是应该先解压, 再用grep搜索?

然而,这条命令就把两者组合起来了:

  1. bzgrep grep-options -e pattern filename

我觉着这是不符合Unix哲学的, 把自己的事情做好就行了, 可是话又说回来, 你怎么知道我想做什么事呢?

  1. seq 99999 > numbers
  2. l numbers
  3. -rw-rw-r-- 1 mr mr 576K 1 5 20:28 numbers
  4. bzip2 numbers
  5. bzgrep 233 numbers.bz2
  6. 233
  7. 1233
  8. 2233
  9. 2330
  10. 2331
  11. ...
  12. ...

直接在文件里面搜索.

查看压缩文件的内容(不解压)

同样, 我们不解压也可以直接查看压缩文件的内容:

  1. bzcat numbers.bz2

或者:

  1. bzless numbers.bz2

或者:

  1. bzmore numbers.bz2

bz找不同

还有bzcmpbzdiff 这两个命令, 是用来找不同的.

  1. $ cmp System.txt.001 System.txt.002
  2. System.txt.001 System.txt.002 differ: byte 20, line 2
  3. $ bzcmp System.txt.001.bz2 System.txt.002.bz2
  4. - /tmp/bzdiff.csgqG32029 differ: byte 20, line 2
  1. $ bzdiff System.txt.001.bz2 System.txt.002.bz2
  2. 2c2
  3. < 0: ERR: Mon Sep 27 12:19:34 2010: gs(11153/1105824064):
  4. [chk_sqlcode.scp:92]: Database: ORA-01654: unable to
  5. extend index OPC_OP.OPCX
  6. _ANNO_NUM by 64 in tablespace OPC_INDEX1
  7. ---
  8. > 0: ERR: Wed Sep 22 09:59:42 2010:
  9. gs(11153/47752677794640): [chk_sqlcode.scp:92]: Database:
  10. ORA-01653: unable to extend table OPC_OP.
  11. OPC_HIST_MESSAGES by 64 in tablespace OPC_6
  12. 4,5c4
  13. < Retry. (OpC51-22)
  14. < Database: ORA-01654: unable to extend index
  15. OPC_OP.OPCX_ANNO_NUM by 64 in tablespace OPC_INDEX1
  16. ---
  17. > 0: ERR: Wed Sep 22 09:59:47 2010:
  18. gs(11153/47752677794640): [chk_sqlcode.scp:92]: Database:
  19. ORA-01653: unable to extend table OPC_OP.
  20. OPC_HIST_MESSAGES by 64 in tablespace OPC_6

这一部分我介绍的有点少, 是因为我本人用bz系列不是很多, 为了追求速度, 都是用tar的, 而且日常生活中也遇不到对比两个压缩文件内容的情况…