tar 打包,及打包压缩
-
命令语法
tar [-zjxcvfpP] 打包的名称 要打包的文件或目录 -
命令描述
首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于 Linux 中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar 命令),然后再用压缩程序进行压缩(gzip bzip2 命令)。
tar 本身就是一个打包工具,可以把目录打包成一个文件,它把所有文件整合成一个大文件,方便复制或者移动。 -
命令选项
-z 表示同时用 gzip 压缩;
-j 表示同时用 bzip2 压缩;
-J 表示同时用 xz 压缩;
-x 表示解包或者解压缩;
-t 表示查看 tar 包里的文件;
-c 表示建立一个 tar 包或者压缩文件包。
-v 表示可视化
-f 后面跟文件名(即 -f filename 表示压缩后的文件名为 filename,或者解压缩文件 filename。需要注意的是,如果是多个参数组合的情况下,请把 -f 参数写到最后面)。
-P 表示使用原文件的属性,压缩前什么属性压缩后还是什么属性。
-p 表示可以使用绝对路径。
–exclude filename 表示在打包或压缩时,不要将 filename 文件包括在内。可以写多个 exclude 用空格分开。 -
命令示例
- 打包并解包
[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