首页 > 代码库 > 文件的压缩、解压缩和打包命令

文件的压缩、解压缩和打包命令

压缩命令:     compress       gzip      bzip2      xz        等

解压缩命令:  uncompress   gunzip  bunzip2   unxz     等

打包(归档)命令: tar   cpio

     其中compress、gzip、bzip2和xz只能用于单个压缩文件,不能用于压缩目录

 

compress: .Z   最古老的压缩命令

  compress  /PATH/TO/FILENAME          -----> FILENAME.Z

  uncompress FILENAME.Z

 

gzip: .gz           
    gzip /PATH/TO/SOMEFILE:    压缩完成后会删除原文件
        -d: decompress
        -#:1-9,指定压缩比,默认是6;

    gunzip  相当于 gzip -d

    zcat  将信息解压到stdout压缩文件没有发生改变。

            即不解压的情况,查看文本文件的内容。

[root@localhost tar]# ls -lh
total 1.2M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
[root@localhost tar]# gzip messages
[root@localhost tar]# ls -lh
total 152K
-rw-------. 1 root root 152K Aug 12 10:44 messages.gz
[root@localhost tar]# gunzip messages.gz
[root@localhost tar]# ls -lh
total 1.2M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
[root@localhost tar]# gzip messages
[root@localhost tar]# gzip -d messages.gz
[root@localhost tar]# ls -lh
total 1.2M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
[root@localhost tar]# gzip messages
[root@localhost tar]# zcat messages.gz | wc -l
14026

 

bzip2: .bz2
比gzip有着更大压缩比的压缩工具,使用格式近似
    bzip2 /PATH/TO/SOMEFILE
        -d    
        -#: 1-9,默认是6
        -k: 压缩时保留原文件
        
    bunzip2 /PATH/TO/SOMEFILE.bz2
    bzcat         decompresses files to stdout

[root@localhost tar]# ls -lh
total 56K                                 -------比gzip压缩能力更强大。
-rw-------. 1 root root 55K Aug 12 10:44 messages.bz2
[root@localhost tar]# bzip2 -k messages
[root@localhost tar]# ls -lh
total 1.2M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
-rw-------. 1 root root  55K Aug 12 10:44 messages.bz2

 

xz: .xz
    xz /PATH/TO/SOMEFILE
        -d
        -#: 1-9, 默认是6
        -k: 压缩时保留原文件

    unxz               is equivalent to xz --decompress.
    xzcat/xzdec     is equivalent to xz --decompress --stdout.

[root@localhost tar]# xz messages
[root@localhost tar]# ls -lh
total 36K                 ------------------压缩能力更强
-rw-------. 1 root root 34K Aug 12 10:44 messages.xz
[root@localhost tar]# xz -dk messages.xz
[root@localhost tar]# ls -lh
total 1.2M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
-rw-------. 1 root root  34K Aug 12 10:44 messages.xz
[root@localhost tar]# unxz messages.xz -k
[root@localhost tar]# ls -lh
total 1.2M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
-rw-------. 1 root root  34K Aug 12 10:44 messages.xz

zip - package and compress (archive) files

zip: 既归档又压缩的工具              众多OS默认支持此功能

    zip is a compression and file  packaging  utility  for  Unix,  VMS,
    MSDOS,  OS/2, Windows 9x/NT/XP, Minix, Atari, Macintosh, Amiga, and
    Acorn RISC OS.  It is analogous to a combination of the  Unix  com-
    mands  tar(1)  and  compress(1)  and is compatible with PKZIP (Phil
    Katz’s ZIP for MSDOS systems).

    zip FILENAME.zip FILE1 FILE2 ...: 压缩后不删除原文件
    unzip FILENAME.zip   

[root@localhost tar]# ls -lh
total 1.2M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
-rw-------. 1 root root  34K Aug 12 10:44 messages.xz
[root@localhost tar]# zip messages.zip messages*
  adding: messages (deflated 87%)
  adding: messages.xz (deflated 0%)
[root@localhost tar]# ls -lh
total 1.4M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
-rw-------. 1 root root  34K Aug 12 10:44 messages.xz
-rw-r--r--. 1 root root 186K Aug 12 11:33 messages.zip
[root@localhost tar]# unzip messages.zip
Archive:  messages.zip
replace messages? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: messages                
replace messages.xz? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: messages.xz             
[root@localhost tar]# ls -lh
total 1.4M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
-rw-------. 1 root root  34K Aug 12 10:44 messages.xz
-rw-r--r--. 1 root root 186K Aug 12 11:33 messages.zip    

 

archive: 归档,归档本身并不意味着压缩

tar: .tar   归档工具

    GNU  ‘tar’  saves  many  files  together into a single tape or disk archive,

    and can restore individual files from the archive.

    -c: 创建归档文件
    -f FILE.tar: 归档文件(目的文件)               use archive file or device ARCHIVE
    -x: 展开归档                                           extract files from an archive
    --xattrs: 归档时,保留文件的扩展属性信息
    -t: 不展开归档,直接查看归档了哪些文件       --list    list the contents of an archive

    -v, --verbose
              verbosely list files processed


    -z, --gzip
              filter the archive through gzip
    -zcf: 归档并调用gzip压缩
    -zxf: 调用gzip解压缩并展开归档,-z选项可省略


    -j, --bzip2
              filter the archive through bzip2
    -jcf: bzip2
    -jxf: 调用bzip2解压缩并展开归档,-z选项可省略
    

    -J, --xz
              filter the archive through xz
    -Jcf: xz   rhel6
    -Jxf:

       tar -cf archive.tar foo bar
              # Create archive.tar from files foo and bar.

       tar -tvf archive.tar
              # List all files in archive.tar verbosely.

       tar -xf archive.tar
              # Extract all files from archive.tar.

[root@localhost tar]# ls -lh
total 1.4M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
-rw-------. 1 root root  34K Aug 12 10:44 messages.xz
-rw-r--r--. 1 root root 186K Aug 12 11:33 messages.zip

[root@localhost tar]# tar -cf messeages.tar messages*
[root@localhost tar]# ls -lh
total 2.7M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
-rw-------. 1 root root  34K Aug 12 10:44 messages.xz
-rw-r--r--. 1 root root 186K Aug 12 11:33 messages.zip
-rw-r--r--. 1 root root 1.4M Aug 12 11:57 messeages.tar
[root@localhost tar]# tar -xvf messeages.tar
messages
messages.xz
messages.zip
[root@localhost tar]# ls -lh
total 2.7M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
-rw-------. 1 root root  34K Aug 12 10:44 messages.xz
-rw-r--r--. 1 root root 186K Aug 12 11:33 messages.zip
-rw-r--r--. 1 root root 1.4M Aug 12 11:57 messeages.tar

[root@localhost tar]# rm -f messages.tar

[root@localhost tar]# tar -zcvf messages.tar.gz mess*
messages
messages.xz
messages.zip
[root@localhost tar]# ls -lh
total 1.7M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
-rw-r--r--. 1 root root 362K Aug 12 12:26 messages.tar.gz
-rw-------. 1 root root  34K Aug 12 10:44 messages.xz
-rw-r--r--. 1 root root 186K Aug 12 12:17 messages.zip
messages
messages.xz
messages.zip
[root@localhost tar]# ls -lh
total 1.7M
-rw-------. 1 root root 1.2M Aug 12 10:44 messages
-rw-r--r--. 1 root root 362K Aug 12 12:26 messages.tar.gz
-rw-------. 1 root root  34K Aug 12 10:44 messages.xz
-rw-r--r--. 1 root root 186K Aug 12 12:17 messages.zip

...

 

cpio - copy files to and from archives

[root@localhost tar]# cp /boot/initramfs-2.6.32-573.el6.x86_64.img .

[root@localhost tar]# file /boot/initramfs-2.6.32-573.el6.x86_64.img
/boot/initramfs-2.6.32-573.el6.x86_64.img: gzip compressed data, from Unix, last modified: Wed Jan  6 08:43:04 2016, max compression

[root@localhost tar]# mv initramfs-2.6.32-573.el6.x86_64.img initramfs-2.6.32-573.el6.x86_64.img.gz
[root@localhost tar]# gzip -d initramfs-2.6.32-573.el6.x86_64.img.gz

[root@localhost tar]# file initramfs-2.6.32-573.el6.x86_64.img
initramfs-2.6.32-573.el6.x86_64.img: ASCII cpio archive (SVR4 with no CRC)

 

文件的压缩、解压缩和打包命令