4.文件壓縮與解壓縮

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
相關文章
相關標籤/搜索