文件壓縮與解壓linux
tar命令算法
tar命令能夠爲linux的文件和目錄建立檔案。bash
利用tar,能夠爲某一特定文件建立檔案(備份文件),也能夠在檔案中改變文件,或者向檔案中加入新的文件。tar最初被用來在磁帶上建立檔案,如今,用戶能夠在任何設備上建立檔案。網絡
利用tar命令,能夠把一大堆的文件和目錄所有打包成一個文件,這對於備份文件或將幾個文件組合成爲一個文件以便於網絡傳輸是很是有用的。ide
首先要弄清兩個概念:打包和壓縮。spa
打包是指將一大堆文件或目錄變成一個總的大文件;壓縮則是將一個大文件經過一些壓縮算法變成一個小文件。ip
爲何要區分這兩個概念呢?這源於Linux中不少壓縮程序只能針對一個文件進行壓縮,這樣當你想要壓縮一大堆文件時,你得先將這一大堆文件先打成一個包(tar命令),而後再用壓縮程序進行壓縮(gzip bzip2命令)。get
語法結構it
tar (選項)(參數(新文件需打包文件))io
選項
-A或--catenate:新增文件到以存在的備份文件; -B:設置區塊大小; -c或--create:創建新的備份文件; -C<目錄>:這個選項用在解壓縮,若要在特定目錄解壓縮,可使用這個選項。 -d:記錄文件的差異; -x或--extract或--get:從備份文件中還原文件; -t或--list:列出備份文件的內容; -z或--gzip或--ungzip:經過gzip指令處理備份文件; -Z或--compress或--uncompress:經過compress指令處理備份文件; -f<備份文件>或--file=<備份文件>:指定備份文件; -v或--verbose:顯示指令執行過程; -r:添加文件到已經壓縮的文件; -u:添加改變了和現有的文件到已經存在的壓縮文件; -j:支持bzip2解壓文件; -v:顯示操做過程; -l:文件系統邊界設置; -k:保留原有文件不覆蓋; -m:保留文件不被覆蓋; -w:確認壓縮文件的正確性; -p或--same-permissions:用原來的文件權限還原文件; -P或--absolute-names:文件名使用絕對名稱,不移除文件名稱前的「/」號; -N<日期格式> 或 --newer=<日期時間>:只將較指定日期更新的文件保存到備份文件裏; --exclude=<範本樣式>:排除符合範本樣式的文件。
參數
文件或目錄:指定要打包的文件或目錄列表
例子: 備份
將文件所有打包成tar包
tar -cvf log.tar log2017.log #僅打包,不壓縮。 tar -zcvf log.tar.gz log2017.log #打包後,以gzip壓縮 tar -jcvf log.tar.bz2 log2017.log #打包後,以bzip2壓縮
在選項f以後的文件檔名是本身取的,咱們習慣上都用 .tar 來做爲辨識。 若是加z選項,則以.tar.gz或.tgz來表明gzip壓縮過的tar包;若是加j選項,則以.tar.bz2來做爲tar包名。
查閱上述tar包內有那些文件
tar -tvf log.tar #查看tar包內的文件,能夠查看兩種類型的壓縮包。 tar -ztvf log.tar.gz #查看tar包內的文件,以gzip壓縮格式的包。 tar -jtvf log.tar.bz2 #查看tar包內的文件,以bzip2壓縮格式的包。
文件備份下來,而且保存其權限:
tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log
這個-p的屬性是很重要的,尤爲是當您要保留本來文件的屬性時。
在文件夾當中,比某個日期新的文件才備份:
tar -N "2012/11/13" -zcvf log17.tar.gz test
備份文件夾內容是排除部分文件:
tar --exclude scf/service -zcvf scf.tar.gz scf/*
例子:解壓
將tar包解壓縮:
tar -zxvf /opt/soft/test/log.tar.gz
在預設的狀況下,咱們能夠將壓縮檔在任何地方解開的
只將tar內的部分文件解壓出來:
tar -zxvf /opt/soft/test/log30.tar.gz log2013.log
我能夠透過tar -ztvf來查閱 tar 包內的文件名稱,若是單隻要一個文件,就能夠透過這個方式來解壓部分文件!
總結:
其實最簡單的使用 tar 就只要記憶底下的方式便可:
壓 縮:tar -jcv -f filename.tar.bz2 要被壓縮的文件或目錄名稱 查 詢:tar -jtv -f filename.tar.bz2 解壓縮:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄