1. 命令解析
命令用途:
tar命令用来将一组文件打包为单一文件或将打包后的文件进行解包,通过调用其他命令,tar也可以用来压缩及解压文件。
首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
命令格式:
tar [requires] [options] file
命令参数:
必要参数有如下:
-c 建立新的压缩文件
-d 记录文件的差别
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性
可选参数如下:
-b 设置区块数目
-C 切换到指定目录
-f 指定压缩文件
--help 显示帮助信息
--version 显示版本信息
2. 示例
2.1 打包文件 -c
[root@test 3rd]# ls
1.log 2.log 3.log f1
[root@test 3rd]# tar cvf log.tar *.log
1.log
2.log
3.log
[root@test 3rd]# ll
total 16
-rw-r--r-- 1 root root 0 May 9 10:26 1.log
-rw-r--r-- 1 root root 0 May 9 10:26 2.log
-rw-r--r-- 1 root root 0 May 9 10:26 3.log
-rw-r--r-- 1 root root 3 Apr 22 20:10 f1
-rw-r--r-- 1 root root 10240 May 9 10:26 log.tar
2.2 列出归档文件中有哪些文件 -t
[root@test 3rd]# tar tvf log.tar
-rw-r--r-- root/root 0 2017-05-09 10:26 1.log
-rw-r--r-- root/root 0 2017-05-09 10:26 2.log
-rw-r--r-- root/root 0 2017-05-09 10:26 3.log
2.3 向压缩归档文件末尾追加文件 -r
[root@test 3rd]# tar rvf log.tar 4.log
4.log
[root@test 3rd]# tar tvf log.tar
-rw-r--r-- root/root 0 2017-05-09 10:26 1.log
-rw-r--r-- root/root 0 2017-05-09 10:26 2.log
-rw-r--r-- root/root 0 2017-05-09 10:26 3.log
-rw-r--r-- root/root 0 2017-05-09 10:28 4.log
2.4 从压缩的文件中提取文件 -x
[root@test 3rd]# ls
log.tar
[root@test 3rd]# tar xvf log.tar
1.log
2.log
3.log
4.log
[root@test 3rd]# ls
1.log 2.log 3.log 4.log log.tar
2.5 更新原压缩包中的文件 -u
[root@test 3rd]# ls
1.log 2.log 3.log 4.log
[root@test 3rd]# echo '1' >1.log
[root@test 3rd]# ls
1.log 2.log 3.log 4.log
[root@test 3rd]# tail 1.log
1
[root@test 3rd]# tar cvf 1.tar 1.log
1.log
[root@test 3rd]# echo '2' > 1.log
[root@test 3rd]# tar uvf 1.tar 1.log
1.log
[root@test 3rd]# rm -rf 1.log
[root@test 3rd]# tar xvf 1.tar 1.log
1.log
1.log
[root@test 3rd]# tail 1.log
2
[root@test 3rd]# tar tvf 1.tar 1.log
-rw-r--r-- root/root 2 2017-05-09 11:07 1.log
-rw-r--r-- root/root 2 2017-05-09 11:07 1.log
2.6 压缩与解压缩文件gzip -z
[root@test 3rd]# ls
1.log 1.tar
[root@test 3rd]# tar zcvf 1.tar.gz 1.tar
1.tar
[root@test 3rd]# ll
total 20
-rw-r--r-- 1 root root 2 May 9 11:07 1.log
-rw-r--r-- 1 root root 10240 May 9 11:07 1.tar
-rw-r--r-- 1 root root 167 May 9 11:11 1.tar.gz
[root@test 3rd]# rm -rf 1.tar
[root@test 3rd]# tar zxvf 1.tar.gz
1.tar
[root@test 3rd]# ll
total 20
-rw-r--r-- 1 root root 2 May 9 11:07 1.log
-rw-r--r-- 1 root root 10240 May 9 11:07 1.tar
-rw-r--r-- 1 root root 167 May 9 11:11 1.tar.gz
2.7 压缩与解压缩文件bzip2 -j
[root@test 3rd]# ls
1.log 1.tar
[root@test 3rd]# tar jcvf 1.tar.bz2 1.tar
1.tar
[root@test 3rd]# ll
total 20
-rw-r--r-- 1 root root 2 May 9 11:07 1.log
-rw-r--r-- 1 root root 10240 May 9 11:07 1.tar
-rw-r--r-- 1 root root 154 May 9 11:13 1.tar.bz2
[root@test 3rd]# rm -rf 1.tar
[root@test 3rd]# tar jxvf 1.tar.bz2
1.tar
[root@test 3rd]# ll
total 20
-rw-r--r-- 1 root root 2 May 9 11:07 1.log
-rw-r--r-- 1 root root 10240 May 9 11:07 1.tar
-rw-r--r-- 1 root root 154 May 9 11:13 1.tar.bz2
2.8 解压部分文件
[root@test 3rd]# ls
1.log 2.log
[root@test 3rd]# tar cvf 1.tar *.log
1.log
2.log
[root@test 3rd]# ls
1.log 1.tar 2.log
[root@test 3rd]# rm -rf 1.log
[root@test 3rd]# tar xvf 1.tar 1.log
1.log
[root@test 3rd]# ls
1.log 1.tar 2.log
2.9 压缩部分文件(排除掉一些文件) --exclude
[root@test 3rd]# ls
1.log 2.log test
[root@test 3rd]# tar --exclude test -zcvf 1.tar.gz ./
./
./1.log
./2.log