天天看點

tar打包指令

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,如需轉載請自行聯系原作者

繼續閱讀