tar 打包,及打包压缩

  1. 命令语法
    tar [-zjxcvfpP] 打包的名称 要打包的文件或目录

  2. 命令描述
    首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
    为什么要区分这两个概念呢?这源于 Linux 中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar 命令),然后再用压缩程序进行压缩(gzip bzip2 命令)。
    tar 本身就是一个打包工具,可以把目录打包成一个文件,它把所有文件整合成一个大文件,方便复制或者移动。

  3. 命令选项
    -z 表示同时用 gzip 压缩;
    -j 表示同时用 bzip2 压缩;
    -J 表示同时用 xz 压缩;
    -x 表示解包或者解压缩;
    -t 表示查看 tar 包里的文件;
    -c 表示建立一个 tar 包或者压缩文件包。
    -v 表示可视化
    -f 后面跟文件名(即 -f filename 表示压缩后的文件名为 filename,或者解压缩文件 filename。需要注意的是,如果是多个参数组合的情况下,请把 -f 参数写到最后面)。
    -P 表示使用原文件的属性,压缩前什么属性压缩后还是什么属性。
    -p 表示可以使用绝对路径。
    –exclude filename 表示在打包或压缩时,不要将 filename 文件包括在内。可以写多个 exclude 用空格分开。

  4. 命令示例

  • 打包并解包
[root@localhost d6z]# ls
1.txt.bz2  2.txt  2.txt.zip  3.txt  4.txt  dl  dl.zip  test    
[root@localhost d6z]# tar -cvf dl.tar dl        //打包dl目录为dl.tar;
dl/
dl/dd/
dl/dd/passwd
dl/dddl/
dl/dddl/passwd
dl/passwd
dl/dl
[root@localhost d6z]# ls
1.txt.bz2  2.txt  2.txt.zip  3.txt  4.txt  dl  dl.tar  dl.zip  test
[root@localhost d6z]# du -sh dl.tar    //打包后的目录大小不变;
1.3M	dl.tar
[root@localhost d6z]# tar -xvf dl.tar    //解包,解包的时候会覆盖你原来的目录或文件《打包后的文件和原文件在同一目录下的情况》。
dl/
dl/dd/
dl/dd/passwd
dl/dddl/
dl/dddl/passwd
dl/passwd
dl/dl
[root@localhost d6z]# ls
1.txt.bz2  2.txt  2.txt.zip  3.txt  4.txt  dl  dl.tar  dl.zip  test

  • 查看打包后的目录列表
[root@localhost d6z]# tar -tf dl.tar        //查看打包后的目录列表。使用cat命令也可以查看文件的内容。
dl/
dl/dd/
dl/dd/passwd
dl/dddl/
dl/dddl/passwd
dl/passwd
dl/dl

  • 打包并不要将 filename 文件包括在内
[root@localhost d6z]# tar -cvf dddd.tar --exclude dl 3.txt 4.txt    //在打包时,不要将filename文件包括在内
3.txt
4.txt
[root@localhost d6z]# ls
1.txt.bz2  2.txt  2.txt.zip  3.txt  4.txt  dddd.tar  dl  dl.tar  dl.zip  test

  • tar 打包并压缩, 查看文件大小并查看打包压缩后的目录列表
[root@localhost d6z]# tar -czvf dl.tar.gz  dl 3.txt 4.txt    //使用tar打包,并使用gzip压缩
dl/
dl/dd/
dl/dd/passwd
dl/dddl/
dl/dddl/passwd
dl/passwd
dl/dl
3.txt
4.txt
[root@localhost d6z]# ls
1.txt.bz2  2.txt.zip  4.txt     dl      dl.tar.gz  test
2.txt      3.txt      dddd.tar  dl.tar  dl.zip
[root@localhost d6z]# du -sh dl.tar.gz    //打包压缩后的文件和目录的大小
988K	dl.tar.gz
[root@localhost d6z]# du -sh dl 3.txt 4.txt    //原文件和目录的大小
1.3M	dl
1.3M	3.txt
1.3M	4.txt

[root@localhost d6z]# tar -cjvf dl.tar.bz2  dl 3.txt 4.txt    //使用tar打包同时使用bzip2压缩。解压缩时把选项c换成x即可。
dl/
dl/dd/
dl/dd/passwd
dl/dddl/
dl/dddl/passwd
dl/passwd
dl/dl
3.txt
4.txt
[root@localhost d6z]# du -sh dl.tar.bz2        //打包压缩后的文件大小
392K	dl.tar.bz2

[root@localhost d6z]# tar -cJvf dl.tar.xz  dl 3.txt 4.txt    //使用tar打包,同时使用xz压缩。解压缩时把选项c换成x即可。 
dl/
dl/dd/
dl/dd/passwd
dl/dddl/
dl/dddl/passwd
dl/passwd
dl/dl
3.txt
4.txt
[root@localhost d6z]# ls
1.txt.bz2  2.txt.zip  4.txt     dl      dl.tar.gz  dl.zip
2.txt      3.txt      dddd.tar  dl.tar  dl.tar.xz  test

[root@localhost d6z]# du -sh dl.tar.xz        //打包压缩后的文件大小
64K	dl.tar.xz    
[root@localhost d6z]# tar -tf dl.tar.gz    //查看打包压缩后的目录列表
dl/
dl/dd/
dl/dd/passwd
dl/dddl/
dl/dddl/passwd
dl/passwd
dl/dl
3.txt
4.txt