1.ziphtml
功能:兼容unix和windows,能夠一次性壓縮多個文件windows
語法:zip 壓縮後的路徑文件 須要壓縮的文件1 文件2bash
經常使用選項:ide
-r:遞歸壓縮工具
解壓縮:spa
unzip 須要解壓的文件 (默認解壓到當前目錄)3d
unzip 須要解壓的文件 -d 解壓後的路徑unix
示例:htm
[root@localhost tmp]# zip /tmp/123.zip /etc/* [root@localhost tmp]# unzip 123.zip -d test/ [root@localhost tmp]# ls test/ etc
2.gzip遞歸
功能:只能壓縮單個文件,壓縮速度相對較快,壓縮率較低,cpu消耗相對較低
語法:gzip 須要壓縮的文件
gzip 須要壓縮的文件1 須要壓縮的文件2
經常使用選項:
-c:保留源文件壓縮和解壓縮
-v:打印詳細信息
-d 解壓縮的參數
-t 檢查壓縮文件,看是否有錯誤
-# 壓縮等級1-9,越高越好,但也越慢,默認是6
解壓縮:
gunzip 須要解壓的文件
gzip -d 須要解壓的文件
查看壓縮文件:
zcat
問題1:gzip工具能不能壓縮一個目錄?
答案是不能的
示例:
[root@localhost tmp]# gzip * #壓縮當前目錄下的全部文件 [root@localhost tmp]# ll #只有目錄沒有壓縮 total 207200 -rw-r--r--. 1 0 0 32 May 20 13:33 1addf98dffa.gz -rw-r--r--. 1 0 0 31 May 20 13:35 1ddf67dfdf.gz -rw-r--r--. 1 0 0 71460 Jun 4 11:49 20170609.tar.gz -rw-r--r--. 1 0 0 31 May 20 13:33 3dfdf7ghhn.gz drwxr-xr-x. 2 0 0 4096 Jun 4 11:30 etc [root@localhost tmp]# gzip -d * #解壓當前目錄的全部文件
3.bzip2
功能:只能壓縮單個文件,壓縮率相對較高,壓縮速度相對慢 cpu消耗相對較高
語法:
bzip2 須要壓縮的文件
bzip2 須要壓縮的文件1 須要壓縮的文件2
經常使用選項:
-c 將壓縮過程當中產生的數據輸出到屏幕上
-d 解壓縮參數
-k 保留原文件
-z 壓縮的參數
-v 顯示壓縮比
-# 壓縮等級1-9,和gzip同樣
解壓縮:
bunzip2 須要解壓的文件
bzip2 -d 須要解壓的文件
查看壓縮文件
bzcat
示例:
[root@localhost tmp]# bzip2 -v9 123.zip #打印壓縮比 123.zip: 1.082:1, 7.392 bits/byte, 7.59% saved, 240313 in, 222064 out. [root@localhost tmp]# ls 123.zip.bz2 123.zip.bz2 [root@localhost tmp]# ls 123.zip #可是原文件沒有了 ls: cannot access 123.zip: No such file or directory [root@localhost tmp]# bunzip2 123.zip.bz2 [root@localhost tmp]# bzip2 -z -k 123.zip #加-k就保留了原文件 [root@localhost tmp]# ls 123* 123.zip 123.zip.bz2
4.tar
功能:打包工具
語法:tar [OPTION...] [FILE]...
參數:
-c:建立一個tar包
--delete : 從歸檔文件 (而非磁帶) 中刪除
-f:指定包名
-z:調用gzip壓縮工具壓縮
-j:調用bzip2壓縮工具壓縮
-v:顯示詳細信息
-x:解壓
-t:查看tar包內容
-r:追加文件到tar包
-J:調用xz壓縮工具
-C:指定解壓的路徑
-p :使用原文件的原來屬性(屬性不會依據使用者而變)
-P :可使用絕對路徑來壓縮!
說明:
參數前面-無關緊要
示例:
#把/etc目錄下的文件所有打包成爲/tmp/etc.tar,打包壓縮名能夠隨便起,常規是以tar,便於區分 [root@localhost ~]# tar cvf /tmp/etc.tar /etc #只打包,不壓縮 [root@localhost ~]# ll /tmp/etc.tar -rw-r--r--. 1 root root 27013120 Jun 4 16:50 /tmp/etc.tar [root@localhost ~]# tar zcvf /tmp/etc.tar.gz /etc #打包並以gzip壓縮,.tgz也是同樣 [root@localhost ~]# ll /tmp/etc.tar.gz -rw-r--r--. 1 root root 9181726 Jun 4 16:52 /tmp/etc.tar.gz [root@localhost ~]# tar jcvf /tmp/etc.tar.bz2 /etc #打包並以bzip2壓縮,.tbz2也是同樣 [root@localhost ~]# ll /tmp/etc.tar.bz2 -rw-r--r--. 1 root root 8161113 Jun 4 16:55 /tmp/etc.tar.bz2 #如何查看打包或者壓縮文件裏都有哪些文件 [root@localhost tmp]# tar tf etc.tar.gz #帶t就是查看,帶f是指定報名 [root@localhost tmp]# tar tvf etc.tar.gz #v是詳細信息,就想ls -l的長格式打印 #解壓tar包到指定路徑 [root@localhost tmp]# tar xf etc.tar.gz -C /home/test #-C是指定路徑 #往tar包追加內容 [root@localhost tmp]# tar -r /var -f etc.tar.gz #實踐證實不能對壓縮文件進行追加 tar: Cannot update compressed archives tar: Error is not recoverable: exiting now [root@localhost tmp]# tar -r /var/cache -f etc.tar #對打包的tar追加報錯 tar: Removing leading `/' from member names [root@localhost tmp]# tar -rP /var -f etc.tar #追加進去了,這裏用到了P選項 #釋放tar包指定文件到指定目錄 [root@localhost etc]# tar xvf etc.tar etc/passwd -C /tmp [root@localhost tmp]# tar xvf etc.tar.gz etc/passwd -C /tmp #壓縮文件也是同樣的方式 etc/passwd #排除文件後再壓縮文件 [root@localhost tmp]# tar zcvf /tmp/var.tar.tgz /var --exclude=*.html [root@localhost tmp]# tar tf var.tar.tgz |grep -E "*.html" #過濾出來的,但不是以.html結尾的 var/www/error/contact.html.var var/www/error/HTTP_FORBIDDEN.html.var var/www/error/HTTP_VARIANT_ALSO_VARIES.html.var
注意:
tar工具儘可能使用相對路徑,參數f最好放到最後
5 練習:
一、找出/etc下面以.conf結尾的文件,並將其複製到/home下的backup目錄中
[root@localhost tmp]# mkdir /home/backup [root@localhost tmp]# find /etc/ -type f -name "*.conf" -exec cp {} /home/backup \; [root@localhost tmp]# ls /home/backup
二、將/home/backup下的全部文件所有打包並壓縮到/tmp目錄下名字爲「5天之後的日期.tar.gz」
[root@localhost tmp]# tar czvf /tmp/$(date +%Y%m%d --date='5 days').tar.gz /home/backup/* [root@localhost tmp]# date +%Y%m%d 20170604 [root@localhost tmp]# ll total 653284 -rw-r--r--. 1 root root 0 May 20 21:33 1addf98dffa -rw-r--r--. 1 root root 0 May 20 21:35 1ddf67dfdf -rw-r--r--. 1 root root 71460 Jun 4 19:49 20170609.tar.gz
三、將/tmp下剛剛壓縮的包解壓到新建目錄/tmp/test中,並打包成「當前的系統時間.tar」
[root@localhost backup]# mkdir test [root@localhost backup]# tar xf 20170609.tar.gz -C test/ [root@localhost backup]# tar cvf ./$(date +%T).tar * [root@localhost backup]# ls *.tar 19:56:09.tar
四、將/tmp/find.test文件追加到剛剛打好的tar包裏
[root@localhost tmp]# cd /tmp [root@localhost tmp]# touch find.test [root@localhost tmp]# tar -r find.test -f /tmp/test/home/backup/19\:56\:09.tar [root@localhost tmp]# tar tf /tmp/test/home/backup/19\:56\:09.tar xcompose.conf xim.conf yum.conf find.test