1. 命令解析
命令用途:
tar命令用來將一組文件打包為單一文件或?qū)⒋虬蟮奈募M行解包莱没,通過調(diào)用其他命令蝗肪,tar也可以用來壓縮及解壓文件轻掩。
首先要弄清兩個概念:打包和壓縮补鼻。打包是指將一大堆文件或目錄變成一個總的文件剃执;壓縮則是將一個大的文件通過一些壓縮算法變成一個小文件誓禁。
為什么要區(qū)分這兩個概念呢?這源于Linux中很多壓縮程序只能針對一個文件進行壓縮肾档,這樣當你想要壓縮一大堆文件時摹恰,你得先將這一大堆文件先打成一個包(tar命令),然后再用壓縮程序進行壓縮(gzip bzip2命令)怒见。
命令格式:
tar [requires] [options] file
命令參數(shù):
必要參數(shù)有如下:
-c 建立新的壓縮文件
-d 記錄文件的差別
-r 添加文件到已經(jīng)壓縮的文件
-u 添加改變了和現(xiàn)有的文件到已經(jīng)存在的壓縮文件
-x 從壓縮的文件中提取文件
-t 顯示壓縮文件的內(nèi)容
-z 支持gzip解壓文件
-j 支持bzip2解壓文件
-Z 支持compress解壓文件
-v 顯示操作過程
-l 文件系統(tǒng)邊界設(shè)置
-k 保留原有文件不覆蓋
-m 保留文件不被覆蓋
-W 確認壓縮文件的正確性
可選參數(shù)如下:
-b 設(shè)置區(qū)塊數(shù)目
-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