Tar指令用于将多個檔案或者目錄打包成一個打的檔案。同時還可以通過gzip/bzip2的支援,将該檔案進行壓縮。Window中winrar也可以解壓tar.gz檔案。
文法:(隻講解幾個常用的參數)
打包壓縮:
Tar [-j|-z][cv] [-f 建立的檔案名] 被打封包件名/目錄
打包壓縮(排除不想打包的檔案或者目錄):
Tar[-j|-z] [cv] [-f 建立的檔案名] --exclude=不想打包的目錄或檔案名 被打封包件名/目錄
隻打包目錄中比某時刻新的檔案:
Tar[-j|-z] [cv] [-f 建立的檔案名] –newer-mtime=”2017/08/15” 被打包的檔案名/目錄
檢視檔案名:
Tar[-j|-z] [tv] [-f 建立的檔案名]
解壓:
Tar[-j|-z] [xv] [-f 建立的檔案名] [ -C 指定的解壓目錄]
單獨解壓包中的某個檔案:
Tar[-j|-z] [xv] [-f 打封包件.tar.gz|打封包件.tar.bz2] 待解壓檔案名
-j:通過bzip2支援進行壓縮/解壓,檔案字尾名最好為:tar.bz2。
-z: 通過gzip支援進行壓縮/解壓,檔案字尾名最好為:tar.gz。
特殊用法:(将待處理檔案一邊打包一邊解壓縮到目标目錄中)
Tar [-cv] [-f 建立的檔案名] 被打包的檔案名/目錄 | tar [-xv][-f 建立的檔案名]
執行個體:
<code>[root@localhost ~]</code><code># tar -zcp -f/root/etc.tar.gz /etc</code>
<code>tar</code><code>: Removing leading `/' from member names</code>
<code>[root@localhost ~]</code><code>#</code>
去除某目錄下不想打包的檔案或目錄:
<code>[root@localhost ~]</code><code># tar -zc -f/root/system.tar.gz --exclude=/root/etc* --exclude=/root/system.tar.bz2 /etc/root </code>
<code>tar</code><code>: </code><code>/root/system</code><code>.</code><code>tar</code><code>.gz: </code><code>file</code> <code>changed aswe </code><code>read</code> <code>it</code>
<code>[root@localhost ~]</code><code># ll system*</code>
<code>-rw-r--r--. 1 root root 18985797 Aug 2100:02 system.</code><code>tar</code><code>.bz2</code>
<code>-rw-r--r--. 1 root root 41838107 Aug 2100:04 system.</code><code>tar</code><code>.gz</code>
<code>[root@localhost ~]</code><code># tar -jtv -f/root/system.tar.bz2 | grep 'root/etc'</code>
<code>[root@localhost ~]</code><code># tar -zc -f/root/etcnewer.tar.gz --newer-mtime='2017/08/15' /etc/* </code>
<code>[root@localhost ~]</code><code># ll etc*</code>
<code>-rw-r--r--. 1 root root 73144 Aug 21 00:11etcnewer.</code><code>tar</code><code>.bz2</code>
<code>-rw-r--r--. 1 root root 86501 Aug 21 00:12etcnewer.</code><code>tar</code><code>.gz</code>
<code>[root@localhost ~]</code><code># tar -ztv -f /root/etcnewer.tar.gz |head -n 3</code>
<code>drwxr-xr-x root</code><code>/root</code> <code>0 2017-07-19 09:30 etc</code><code>/abrt/</code>
<code>drwxr-xr-x root</code><code>/root</code> <code>0 2017-07-19 09:30 etc</code><code>/abrt/plugins/</code>
<code>drwxr-xr-x root</code><code>/root</code> <code>0 2017-07-19 09:35 etc</code><code>/acpi/</code>
查找包中的檔案:
檢視包中前3個檔案名
<code>[root@localhost ~]</code><code># tar -ztv -f/root/etc.tar.gz |head -n 3</code>
<code>drwxr-xr-x root</code><code>/root</code> <code>0 2017-08-20 22:51 etc/</code>
<code>drwxr-xr-x root</code><code>/root</code> <code>0 2017-07-19 09:30 etc</code><code>/ghostscript/</code>
<code>drwxr-xr-x root</code><code>/root</code> <code>0 2017-07-19 09:30etc</code><code>/ghostscript/8</code><code>.70/</code>
管道符号後接grep 指定搜尋檔案
<code>[root@localhost ~]</code><code># tar -jtv -f/root/etc.tar.bz2 | grep 'shadow'</code>
<code>---------- root</code><code>/root</code> <code>820 2017-07-19 09:39 etc</code><code>/shadow-</code>
<code>---------- root</code><code>/root</code> <code>622 2017-07-19 09:39 etc</code><code>/gshadow-</code>
<code>---------- root</code><code>/root</code> <code>632 2017-07-19 10:04 etc</code><code>/gshadow</code>
<code>---------- root</code><code>/root</code> <code>841 2017-07-19 10:04 etc</code><code>/shadow</code>
<code>[root@localhost whx]</code><code># tar -jxv -f/root/etc.tar.bz2 etc/shadow</code>
<code>etc</code><code>/shadow</code>
<code>[root@localhost whx]</code><code># ll</code>
<code>total 12</code>
<code>drwxr-xr-x. 2 root root 4096 Aug 20 23:59etc</code>
<code>-rw-r--r--. 1 root root 30 Aug 17 23:44 xx01.gz</code>
<code>-rw-r--r--. 1 root root 30 Aug 17 23:45 xx02.gz</code>
<code>[root@localhost whx]</code><code># ll etc</code>
<code>total 4</code>
<code>----------. 1 root root 841 Jul 19 10:04shadow</code>
解壓整個包:
<code>[root@localhost~]</code><code># tar -jx -f /root/etc.tar.bz2 -C /root/whx1</code>
<code>[root@localhost whx1]</code><code># ll</code>
<code>drwxr-xr-x. 113 root root 12288 Aug 20 22:51 etc</code>
特殊用法:(将待處理檔案一邊打包一邊解壓縮到目标目錄tmp中)
<code>[root@localhost tmp]</code><code># tar -cf xx /etc | tar -xf xx</code>
<code>[root@localhost tmp]</code><code># ll xx*</code>
<code>-rw-r--r--. 1 root root 38696960 Aug 2100:26 xx</code>
tar除了能将多個檔案或目錄打包成大檔案之外,還能夠打包到某些特别的裝置中,例如将檔案打包到一次性讀取/寫入的裝置錄音帶機中,tar -cv -f /dev/st0 /home /root/etc。由于不能使用cp指令來複制檔案到錄音帶機這類裝置中,此時利用tar指令将檔案打包到錄音帶機是很好的選擇。
小知識:tarfile指利用tar指令打包但沒有進行壓縮的檔案,tarball是指利用tar指令打包并壓縮的檔案。
本文轉自 天黑順路 51CTO部落格,原文連結:http://blog.51cto.com/mjal01/1958056,如需轉載請自行聯系原作者