tar命令
通過SSH訪問服務(wù)器,難免會要用到壓縮,解壓縮,打包,解包等,這時候tar命令就是是必不可少的一個功能強(qiáng)大的工具。linux中最流行的tar是麻雀雖小,五臟俱全,功能強(qiáng)大。
tar命令可以為linux的文件和目錄創(chuàng)建檔案。利用tar,可以為某一特定文件創(chuàng)建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar最初被用來在磁帶上創(chuàng)建檔案,現(xiàn)在,用戶可以在任何設(shè)備上創(chuàng)建檔案。利用tar命令,可以把一大堆的文件和目錄全部打包成一個文件,這對于備份文件或?qū)讉€文件組合成為一個文件以便于網(wǎng)絡(luò)傳輸是非常有用的。
首先要弄清兩個概念:打包和壓縮。打包是指將一大堆文件或目錄變成一個總的文件;壓縮則是將一個大的文件通過一些壓縮算法變成一個小文件。
為什么要區(qū)分這兩個概念呢?這源于Linux中很多壓縮程序只能針對一個文件進(jìn)行壓縮,這樣當(dāng)你想要壓縮一大堆文件時,你得先將這一大堆文件先打成一個包(tar命令),然后再用壓縮程序進(jìn)行壓縮(gzip?bzip2命令)。
linux下最常用的打包程序就是tar了,使用tar程序打出來的包我們常稱為tar包,tar包文件的命令通常都是以.tar結(jié)尾的。生成tar包后,就可以用其它的程序來進(jìn)行壓縮。
1.命令格式:
tar[必要參數(shù)][選擇參數(shù)][文件]?
2.命令功能:
用來壓縮和解壓文件。tar本身不具有壓縮功能。他是調(diào)用壓縮功能實(shí)現(xiàn)的?
3.命令參數(shù):
必要參數(shù)有如下:
-A?新增壓縮文件到已存在的壓縮
-B?設(shè)置區(qū)塊大小
-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?確認(rèn)壓縮文件的正確性
?
可選參數(shù)如下:
-b?設(shè)置區(qū)塊數(shù)目
-C?切換到指定目錄
-f?指定壓縮文件
--help?顯示幫助信息
--version?顯示版本信息
?
4.常見解壓/壓縮命令
?
tar?
解包:tar?xvf?FileName.tar
打包:tar?cvf?FileName.tar?DirName
(注:tar是打包,不是壓縮!)
.gz
解壓1:gunzip?FileName.gz
解壓2:gzip?-d?FileName.gz
壓縮:gzip?FileName
.tar.gz?和?.tgz
解壓:tar?zxvf?FileName.tar.gz
壓縮:tar?zcvf?FileName.tar.gz?DirName
.bz2
解壓1:bzip2?-d?FileName.bz2
解壓2:bunzip2?FileName.bz2
壓縮:?bzip2?-z?FileName
.tar.bz2
解壓:tar?jxvf?FileName.tar.bz2
壓縮:tar?jcvf?FileName.tar.bz2?DirName
.bz
解壓1:bzip2?-d?FileName.bz
解壓2:bunzip2?FileName.bz
壓縮:未知
.tar.bz
解壓:tar?jxvf?FileName.tar.bz
壓縮:未知
.Z
解壓:uncompress?FileName.Z
壓縮:compress?FileName
.tar.Z
解壓:tar?Zxvf?FileName.tar.Z
壓縮:tar?Zcvf?FileName.tar.Z?DirName
.zip
解壓:unzip?FileName.zip
壓縮:zip?FileName.zip?DirName
.rar
解壓:rar?x?FileName.rar
壓縮:rar?a?FileName.rar?DirName?
?
5.使用實(shí)例
實(shí)例1:將文件全部打包成tar包
命令:
tar?-cvf?log.tar?log2012.log
tar?-zcvf?log.tar.gz?log2012.log
tar?-jcvf?log.tar.bz2?log2012.log
輸出:
[root@localhost?test]#?ls?-al?log2012.log
---xrw-r--?1?root?root?302108?11-13?06:03?log2012.log
[root@localhost?test]#?tar?-cvf?log.tar?log2012.log?
log2012.log
[root@localhost?test]#?tar?-zcvf?log.tar.gz?log2012.log
log2012.log
[root@localhost?test]#?tar?-jcvf?log.tar.bz2?log2012.log?
log2012.log
[root@localhost?test]#?ls?-al?*.tar*
-rw-r--r--?1?root?root?307200?11-29?17:54?log.tar
-rw-r--r--?1?root?root???1413?11-29?17:55?log.tar.bz2
-rw-r--r--?1?root?root???1413?11-29?17:54?log.tar.gz
說明:
tar?-cvf?log.tar?log2012.log????僅打包,不壓縮!?
tar?-zcvf?log.tar.gz?log2012.log???打包后,以?gzip?壓縮?
tar?-zcvf?log.tar.bz2?log2012.log??打包后,以?bzip2?壓縮?
在參數(shù)?f?之后的文件檔名是自己取的,我們習(xí)慣上都用?.tar?來作為辨識。?如果加?z?參數(shù),則以?.tar.gz?或?.tgz?來代表?gzip?壓縮過的?tar包;?如果加?j?參數(shù),則以?.tar.bz2?來作為tar包名。
?
實(shí)例2:查閱上述?tar包內(nèi)有哪些文件
命令:
tar?-ztvf?log.tar.gz
輸出:
[root@localhost?test]#?tar?-ztvf?log.tar.gz
---xrw-r--?root/root????302108?2012-11-13?06:03:25?log2012.log
說明:
由于我們使用?gzip?壓縮的log.tar.gz,所以要查閱log.tar.gz包內(nèi)的文件時,就得要加上?z?這個參數(shù)了。
?
實(shí)例3:將tar?包解壓縮
命令:
tar?-zxvf?/opt/soft/test/log.tar.gz
輸出:
[root@localhost?test3]#?ll
總計(jì)?0[root@localhost?test3]#?tar?-zxvf?/opt/soft/test/log.tar.gz
log2012.log
[root@localhost?test3]#?ls
log2012.log
[root@localhost?test3]#
?
說明:
在預(yù)設(shè)的情況下,我們可以將壓縮檔在任何地方解開的
?
實(shí)例4:只將?/tar?內(nèi)的?部分文件解壓出來
命令:
tar?-zxvf?/opt/soft/test/log30.tar.gz?log2013.log
輸出:
[root@localhost?test]#?tar?-zcvf?log30.tar.gz?log2012.log?log2013.log?
log2012.log
log2013.log
[root@localhost?test]#?ls?-al?log30.tar.gz?
-rw-r--r--?1?root?root?1512?11-30?08:19?log30.tar.gz
[root@localhost?test]#?tar?-zxvf?log30.tar.gz?log2013.log
log2013.log
[root@localhost?test]#?ll
-rw-r--r--?1?root?root???1512?11-30?08:19?log30.tar.gz
[root@localhost?test]#?cd?test3
[root@localhost?test3]#?tar?-zxvf?/opt/soft/test/log30.tar.gz?log2013.log
log2013.log
[root@localhost?test3]#?ll
總計(jì)?4
-rw-r--r--?1?root?root?61?11-13?06:03?log2013.log
[root@localhost?test3]#
說明:
我可以透過?tar?-ztvf?來查閱?tar?包內(nèi)的文件名稱,如果單只要一個文件,就可以透過這個方式來解壓部分文件!
?
實(shí)例5:文件備份下來,并且保存其權(quán)限
命令:
tar?-zcvpf?log31.tar.gz?log2014.log?log2015.log?log2016.log?
輸出:
[root@localhost?test]#?ll
總計(jì)?0
-rw-r--r--?1?root?root??????0?11-13?06:03?log2014.log
-rw-r--r--?1?root?root??????0?11-13?06:06?log2015.log
-rw-r--r--?1?root?root??????0?11-16?14:41?log2016.log
[root@localhost?test]#?tar?-zcvpf?log31.tar.gz?log2014.log?log2015.log?log2016.log?
log2014.log
log2015.log
log2016.log
[root@localhost?test]#?cd?test6
[root@localhost?test6]#?ll
[root@localhost?test6]#?tar?-zxvpf?/opt/soft/test/log31.tar.gz?
log2014.log
log2015.log
log2016.log
[root@localhost?test6]#?ll
總計(jì)?0
-rw-r--r--?1?root?root?0?11-13?06:03?log2014.log
-rw-r--r--?1?root?root?0?11-13?06:06?log2015.log
-rw-r--r--?1?root?root?0?11-16?14:41?log2016.log
[root@localhost?test6]#
說明:
這個?-p?的屬性是很重要的,尤其是當(dāng)您要保留原本文件的屬性時
實(shí)例6:在?文件夾當(dāng)中,比某個日期新的文件才備份
命令:
tar?-N?"2012/11/13"?-zcvf?log17.tar.gz?test
輸出:
[root@localhost?soft]#?tar?-N?"2012/11/13"?-zcvf?log17.tar.gz?test
tar:?Treating?date?`2012/11/13'?as?2012-11-13?00:00:00?+?0?nanoseconds
test/test/log31.tar.gz
test/log2014.log
test/linklog.log
test/log2015.log
test/log2013.log
test/log2012.log
test/log2017.log
test/log2016.log
test/log30.tar.gz
test/log.tar
test/log.tar.bz2
test/log.tar.gz
說明:
?
實(shí)例7:備份文件夾內(nèi)容是排除部分文件
命令:
tar?--exclude?scf/service?-zcvf?scf.tar.gz?scf/*
輸出:
[root@localhost?test]#?tree?scf
scf
|--?bin
|--?doc
|--?lib
`--?service
??? ?`--?deploy
??????? ? |--?info
??????? ? `--?product
?
7?directories,?0?files
[root@localhost?test]#?tar?--exclude?scf/service?-zcvf?scf.tar.gz?scf/*?
scf/bin/
scf/doc/
scf/lib/
[root@localhost?test]#
轉(zhuǎn)載于:https://www.cnblogs.com/is-Tina/p/8722084.html
總結(jié)
- 上一篇: 提高Service提高进程优先级别,不被
- 下一篇: HTTP服务器