Linux下的歸檔使用工具,用來打包和備份java
tar命令 能夠爲linux的文件和目錄建立檔案。利用tar,能夠爲某一特定文件建立檔案(備份文件),也能夠在檔案中改變文件,或者向檔案中加入新的文件。tar最初被用來在磁帶上建立檔案,如今,用戶能夠在任何設備上建立檔案。利用tar命令,能夠把一大堆的文件和目錄所有打包成一個文件,這對於備份文件或將幾個文件組合成爲一個文件以便於網絡傳輸是很是有用的。linux
首先要弄清兩個概念:打包和壓縮。打包是指將一大堆文件或目錄變成一個總的文件;壓縮則是將一個大的文件經過一些壓縮算法變成一個小文件。web
爲何要區分這兩個概念呢?這源於Linux中不少壓縮程序只能針對一個文件進行壓縮,這樣當你想要壓縮一大堆文件時,你得先將這一大堆文件先打成一個包(tar命令),而後再用壓縮程序進行壓縮(gzip bzip2命令)。算法
tar(選項)(參數)
-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=<範本樣式>:排除符合範本樣式的文件。
文件或目錄:指定要打包的文件或目錄列表。shell
- z:有gzip屬性的 - j:有bz2屬性的 - Z:有compress屬性的 - v:顯示全部過程 - O:將文件解開到標準輸出
下面的參數-f是必須的網絡
-f: 使用檔案名字,切記,這個參數是最後一個參數,後面只能接檔案名。app
tar -cf all.tar *.jpg # 這條命令是將全部.jpg的文件打成一個名爲all.tar的包。-c是表示產生新的包,-f指定包的文件名。 tar -rf all.tar *.gif # 這條命令是將全部.gif的文件增長到all.tar的包裏面去。-r是表示增長文件的意思。 tar -uf all.tar logo.gif # 這條命令是更新原來tar包all.tar中logo.gif文件,-u是表示更新文件的意思。 tar -tf all.tar # 這條命令是列出all.tar包中全部文件,-t是列出文件的意思
栗子:
1.保證文件權限不變和不覆蓋原有的文件的狀況下解壓
tar -xpkvf /app/release/2628312/*.tar -p不改變解壓後不改變以前權限 -k解壓後不覆蓋以前就有的文件
tar -cfv archive.tar foo bar # 從文件foo和bar建立archive.tar。 tar -tvf archive.tar # 詳細列出archive.tar中的全部文件。 tar -xf archive.tar # 從archive.tar提取全部文件。
壓縮: zip -r [目標文件名].zip [原文件/目錄名]
解壓: unzip [原文件名].zip
注:-r參數表明遞歸工具
打包:tar -cvf [目標文件名].tar [原文件名/目錄名]
解包:tar -xvf [原文件名].tar
注:c參數表明create(建立),x參數表明extract(解包),v參數表明verbose(詳細信息),f參數表明filename(文件名),因此f後必須接文件名。spa
方式一:利用前面已經打包好的tar文件,直接用壓縮命令。code
壓縮:gzip [原文件名].tar
解壓:gunzip [原文件名].tar.gz
方式二:一次性打包並壓縮、解壓並解包
打包並壓縮: tar -zcvf [目標文件名].tar.gz [原文件名/目錄名]
解壓並解包: tar -zxvf [原文件名].tar.gz
注:z表明用gzip算法來壓縮/解壓。
方式一:利用已經打包好的tar文件,直接執行壓縮命令:
壓縮:bzip2 [原文件名].tar
解壓:bunzip2 [原文件名].tar.bz2
方式二:一次性打包並壓縮、解壓並解包
打包並壓縮: tar -jcvf [目標文件名].tar.bz2 [原文件名/目錄名]
解壓並解包: tar -jxvf [原文件名].tar.bz2
注:小寫j表明用bzip2算法來壓縮/解壓。
方式一:利用已經打包好的tar文件,直接用壓縮命令:
壓縮:xz [原文件名].tar
解壓:unxz [原文件名].tar.xz
方式二:一次性打包並壓縮、解壓並解包
打包並壓縮: tar -Jcvf [目標文件名].tar.xz [原文件名/目錄名]
解壓並解包: tar -Jxvf [原文件名].tar.xz
注:大寫J表明用xz算法來壓縮/解壓。
方式一:利用已經打包好的tar文件,直接用壓縮命令:
壓縮:compress [原文件名].tar
解壓:uncompress [原文件名].tar.Z
方式二:一次性打包並壓縮、解壓並解包
打包並壓縮: tar -Zcvf [目標文件名].tar.Z [原文件名/目錄名]
解壓並解包: tar -Zxvf [原文件名].tar.Z
注:大寫Z表明用ncompress算法來壓縮/解壓。另,ncompress是早期Unix系統的壓縮格式,但因爲ncompress的壓縮率過低,現已過期。
壓縮:jar -cvf [目標文件名].jar [原文件名/目錄名]
解壓:jar -xvf [原文件名].jar
注:若是是打包的是Java類庫,而且該類庫中存在主類,那麼須要寫一個META-INF/MANIFEST.MF配置文件,內容以下:
Manifest-Version: 1.0
Created-By: 1.6.0_27 (Sun Microsystems Inc.) Main-class: the_name_of_the_main_class_should_be_put_here
而後用以下命令打包:
jar -cvfm [目標文件名].jar META-INF/MANIFEST.MF [原文件名/目錄名]
這樣之後就能用「java -jar [文件名].jar」命令直接運行主類中的public static void main方法了。
壓縮:7z a [目標文件名].7z [原文件名/目錄名]
解壓:7z x [原文件名].7z
注:這個7z解壓命令支持rar格式,即:
7z x [原文件名].rar
將文件所有打包成tar包 :
tar -cvf log.tar log2012.log 僅打包,不壓縮! tar -zcvf log.tar.gz log2012.log 打包後,以 gzip 壓縮 tar -jcvf log.tar.bz2 log2012.log 打包後,以 bzip2 壓縮
在選項f
以後的文件檔名是本身取的,咱們習慣上都用 .tar 來做爲辨識。 若是加z
選項,則以.tar.gz或.tgz來表明gzip壓縮過的tar包;若是加j
選項,則以.tar.bz2來做爲tar包名。
解壓目錄
去掉第一層目錄結構,要出除第二層,--strip-components 2
tar -xvf portal-web-v2.0.0.tar --strip-components 1 -C 指定目錄
查閱上述tar包內有哪些文件 :
tar -ztvf log.tar.gz
因爲咱們使用 gzip 壓縮的log.tar.gz,因此要查閱log.tar.gz包內的文件時,就得要加上z
這個選項了。
將tar包解壓縮 :
tar -zxvf /opt/soft/test/log.tar.gz
在預設的狀況下,咱們能夠將壓縮檔在任何地方解開的
只將tar內的部分文件解壓出來 :tar -zxvf /opt/soft/test/log30.tar.gz log2013.log
我能夠透過tar -ztvf
來查閱 tar 包內的文件名稱,若是單隻要一個文件,就能夠透過這個方式來解壓部分文件!
文件備份下來,而且保存其權限 :
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 -jcv -f filename.tar.bz2 要被壓縮的文件或目錄名稱 查 詢:tar -jtv -f filename.tar.bz2 解壓縮:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄