tar命令主要用於對文件或目錄進行打包或解包html
參數web |
含義ide |
說明網站 |
-zspa |
ziphtm |
使用zip進行解壓或壓縮ip |
-jget |
bzip2cmd |
使用bzip2進行解壓或壓縮it |
-c |
create |
建立一個打包文件 |
-x |
extract |
打開一個打包的文件 |
-v |
verbose |
顯示具體過程 |
-f |
file |
指定文件 |
-C |
directory DIR |
指定解壓的目錄 |
-p |
permissions |
保持文件的全部屬性 |
-P |
absolute-names |
保持絕對路徑開頭的"/" |
-X |
--exclude |
排除不處理的文件 |
將文件打包
[root@localhost test]# tar zcf etc.bak.tar.gz /etc
tar: Removing leading `/' from member names
tar
Removing leading `/' from hard link targets
[root@localhost test]# ll
-rw-r--r-- 1 root root 7829778 10月 6 21:58 etc.bak.tar.gz
說明:將/etc目錄進行打包使用zip進行壓縮,在文件名最後要聲明tar.gz格式,是使用zip壓縮的
[root@localhost test]# tar jcf etc.bak.tar.bz2 /etc
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
[root@localhost test]# ll
-rw-r--r-- 1 root root 6964526 10月 6 22:00 etc.bak.tar.bz2
-rw-r--r-- 1 root root 7829778 10月 6 21:58 etc.bak.tar.gz
說明:顯然bzip2要比zip的壓縮率要高,可是時間會久一些,解壓的時間也會久一些,根據須要來選擇壓縮的格式
注意:上面不管用zip或bzip2打包壓縮文件都會有下面一個提示(解包的時候有時也會提示)
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
這個信息是正常的,打包時不保留絕對路徑開頭的/,防止在還原的時候把/給覆蓋了,能夠加--absolute-names參數也就是-P參數,建議不加
有兩種方法能夠不讓它提示
[root@localhost test]# tar zcfP etc.bak2.tar.gz /etc/ #加-P參數,保留絕對路徑的/(不推薦使用)
[root@localhost test]# tar jcf etc.bak2.tar.bz2 /etc&>/dev/null 2>&1 #重定向走(推薦)
將文件解包
[root@localhost test]# tar zxf etc.bak.tar.gz #這樣解壓,默認解壓到當前目錄
[root@localhost test]# tar jxf etc.bak.tar.bz2 -C /tmp/ #指定解壓的目錄
[root@localhost test]# ls -d /tmp/etc/
/tmp/etc/
注意:打包的格式要對應解包時的格式,使用zip打包就要使用z參數解包,不能使用j參數解包,驗證下:
[root@localhost test]# tar jxf etc.bak.tar.gz
bzip2: (stdin) is not a bzip2 file.
tar: Child returned status 2
tar: Error is not recoverable: exiting now
排除不壓縮或解壓的文件或目錄
[root@localhost test]# tar zcfp etc.new.tar.gz /etc/ --exclude=/etc/services [root@coral coral]#tar zxvf etc_bak.tar.gz
[root@localhost test]# tar zxf etc.new.tar.gz
[root@localhost test]# ls etc/services
ls: 沒法訪問etc/services: 沒有那個文件或目錄
說明:使用—exclude參數排除不壓縮的文件
注意:注意的是在指定—exclude=目錄名時,不要加上/,好比sysconfig/這樣,會不成功的,把它當成文件就OK了
生產案例:打包網站程序,排除掉裏面全部.doc結尾的文件
[root@localhost www]# tar zcfp web.tar.gz /beyondjie.com--exclude=\*.doc
tar打包錯誤案例
[root@localhost test]# tar -zcvf www_bak_$(date +%T).tar.gz/var/www/html/
rcmd: getaddrinfo: Temporary failure in name resolution
tar: www_bak_22\:22\:41.tar.gz: Cannot open: Input/output error
tar: Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error exit delayed from previous errors
說明:雖然能夠顯示data的%T時間,可是打包時不能使用%T,若是須要打包時指定時分秒,以下「
[root@localhost test]#tar -zcvf www_bak_$(date +%H-%M%S).tar.gz/var/www/html/