1. 程式人生 > >tar打包命令

tar打包命令

linux 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 新建的文件名]

實例:

打包壓縮:

[[email protected] ~]# tar -zcp -f/root/etc.tar.gz /etc
tar: Removing leading `/‘ from member names
[[email protected] ~]#

去除某目錄下不想打包的文件或目錄:

[[email protected] ~]# tar -zc -f/root/system.tar.gz --exclude=/root/etc* --exclude=/root/system.tar.bz2 /etc/root    
tar: Removing leading `/‘ from member names
tar: /root/system.tar.gz: file changed aswe read it
[[email protected]
/* */ ~]# ll system* -rw-r--r--. 1 root root 18985797 Aug 2100:02 system.tar.bz2 -rw-r--r--. 1 root root 41838107 Aug 2100:04 system.tar.gz [[email protected] ~]# tar -jtv -f/root/system.tar.bz2 | grep ‘root/etc‘ [[email protected] ~]#

只打包目錄中比某時刻新的文件:

[[email protected] ~]# tar -zc -f/root/etcnewer.tar.gz --newer-mtime=‘2017/08/15‘  /etc/*     
tar: Removing leading `/‘ from member names
[[email protected] ~]# ll etc*
-rw-r--r--. 1 root root 73144 Aug 21 00:11etcnewer.tar.bz2
-rw-r--r--. 1 root root 86501 Aug 21 00:12etcnewer.tar.gz
[[email protected] ~]# tar -ztv -f /root/etcnewer.tar.gz |head -n 3
drwxr-xr-x root/root         0 2017-07-19 09:30 etc/abrt/
drwxr-xr-x root/root         0 2017-07-19 09:30 etc/abrt/plugins/
drwxr-xr-x root/root         0 2017-07-19 09:35 etc/acpi/

查找包中的文件:

查看包中前3個文件名

[[email protected] ~]# tar -ztv -f/root/etc.tar.gz |head -n 3
drwxr-xr-x root/root         0 2017-08-20 22:51 etc/
drwxr-xr-x root/root         0 2017-07-19 09:30 etc/ghostscript/
drwxr-xr-x root/root         0 2017-07-19 09:30etc/ghostscript/8.70/

管道符號後接grep 指定搜索文件

[[email protected] ~]# tar -jtv -f/root/etc.tar.bz2 | grep ‘shadow‘
---------- root/root       820 2017-07-19 09:39 etc/shadow-
---------- root/root       622 2017-07-19 09:39 etc/gshadow-
---------- root/root       632 2017-07-19 10:04 etc/gshadow
---------- root/root       841 2017-07-19 10:04 etc/shadow

單獨解壓包中的某個文件:

[[email protected] whx]# tar -jxv -f/root/etc.tar.bz2 etc/shadow
etc/shadow
[[email protected] whx]# ll
total 12
drwxr-xr-x. 2 root root 4096 Aug 20 23:59etc
-rw-r--r--. 1 root root   30 Aug 17 23:44 xx01.gz
-rw-r--r--. 1 root root   30 Aug 17 23:45 xx02.gz
[[email protected] whx]# ll etc
total 4
----------. 1 root root 841 Jul 19 10:04shadow

解壓整個包:

[[email protected]~]# tar -jx -f /root/etc.tar.bz2 -C /root/whx1
[[email protected] ~]#
[[email protected] whx1]# ll
total 12
drwxr-xr-x. 113 root root 12288 Aug 20 22:51 etc

特殊用法:(將待處理文件一邊打包一邊解壓縮到目標目錄tmp中)

[[email protected] tmp]#  tar -cf xx /etc | tar -xf xx
tar: Removing leading `/‘ from member names
[[email protected] tmp]# ll xx*
-rw-r--r--. 1 root root 38696960 Aug 2100:26 xx

tar除了能將多個文件或目錄打包成大文件之外,還能夠打包到某些特別的設備中,例如將文件打包到一次性讀取/寫入的設備磁帶機中,tar -cv -f /dev/st0 /home /root/etc。由於不能使用cp命令來復制文件到磁帶機這類設備中,此時利用tar命令將文件打包到磁帶機是很好的選擇。


小知識:tarfile指利用tar命令打包但沒有進行壓縮的文件,tarball是指利用tar命令打包並壓縮的文件。

本文出自 “天黑順路” 博客,請務必保留此出處http://mjal01.blog.51cto.com/12140495/1958056

tar打包命令