Linux基礎(day20)

6.5 zip壓縮工具

zip目錄概要

  • zip支持壓縮目錄
  • zip 1.txt.zip 1.txt 壓縮文件
  • zip -r 123.zip 123/ 壓縮文件到指定目錄下
  • unzip 1.txt.zip 解壓文件
  • unzip 123.zip -d /root/456/ 解壓文件到制定目錄
  • unzip -l 123.zip 查看壓縮文件列表

zip壓縮文件或目錄

  • 在linux和windows中都有一個zip壓縮工具,可是linux下不支持解壓windos下的rar文件(默認不支持,須要安裝工具才能夠)
  • 安裝zip包——>yum install -y zip
[root@hf-01 d6z]# mkdir -p /tmp/hf/han/hanfeng
[root@hf-01 d6z]# cd /tmp/hf
[root@hf-01 hf]# touch 1.txt
[root@hf-01 hf]# touch /tmp/hf/han/wu.txt
[root@hf-01 hf]# touch /tmp/hf/han/hanfeng/66.txt
[root@hf-01 hf]# cd /tmp/d6z
[root@hf-01 d6z]# ls /tmp
12.txt  1.txt  2.txt.bz2  d6z  ha.txt.xz  hf  mysql.sock  vim.txt
[root@hf-01 d6z]# cp -r /tmp/hf .
[root@hf-01 d6z]# ls
1.txt  4.txt  5.txt  8.xt  hf
[root@hf-01 d6z]# tree hf/
hf/
├── 1.txt
└── han
    ├── hanfeng
    │   └── 66.txt
    └── wu.txt

2 directories, 3 files
[root@hf-01 d6z]# cp 1.txt hf/han/hanfeng/
[root@hf-01 d6z]# du -sh hf/
1.5M	hf/

zip壓縮文件

  • zip 1.txt.zip 1.txt 壓縮文件
[root@hf-01 d6z]# zip 1.txt.zip 1.txt
  adding: 1.txt (deflated 74%)
[root@hf-01 d6z]# du -sh 1.txt.zip
388K	1.txt.zip
[root@hf-01 d6z]# ls
1.txt  1.txt.zip  4.txt  5.txt  8.xt  hf

zip壓縮目錄

  • zip -r hafe.zip 8.txt hf 壓縮文件和目錄
[root@hf-01 d6z]# zip -r hafe.zip 8.txt hf
	zip warning: name not matched: 8.txt
  adding: hf/ (stored 0%)
  adding: hf/han/ (stored 0%)
  adding: hf/han/hanfeng/ (stored 0%)
  adding: hf/han/hanfeng/66.txt (stored 0%)
  adding: hf/han/hanfeng/1.txt (deflated 74%)
  adding: hf/han/wu.txt (stored 0%)
  adding: hf/1.txt (stored 0%)
[root@hf-01 d6z]# ls 
1.txt 8.txt hf hafe.zip

zip壓縮文件後不刪除以前的文件mysql

zip解壓文件

  • 解壓zip包——>yum install -y unzip
  • unzip yasuo.zip 解壓文件
    • 解壓文件的時候,會提示 「是否覆蓋」、「是否替換」等, A 表示所有解壓(由於壓縮的時候不會刪除源文件)
[root@localhost d6z]# unzip yasuo.zip
Archive:  yasuo.zip
replace 2.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
  inflating: 2.txt                   
 extracting: hf/han/hanfeng/66.txt   
  inflating: hf/han/hanfeng/1.txt    
 extracting: hf/han/wu.txt           
 extracting: hf/1.txt                
 extracting: hf/11.txt               
[root@localhost d6z]#

zip解壓文件到指定目錄

  • unzip 1.txt.zip -d lala/ 解壓文件到指定目錄下(若不指定目錄,就會在當前目錄下)
[root@localhost d6z]# mkdir lala
[root@localhost d6z]# unzip 1.txt.zip -d lala/
Archive:  1.txt.zip
  inflating: /lala/1.txt
  • zip解壓文件不能指定文件名,壓縮的時候是什麼文件名,解壓的時候仍是這個文件名
  • zip的壓縮文件,是沒法查看的

查看zip壓縮包的文件列表

  • unzip -l yasuo.zip 查看壓縮文件列表
[root@localhost d6z]# unzip -l yasuo.zip
Archive:  yasuo.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
  1283485  11-09-2017 16:02   2.txt
        0  11-10-2017 10:40   hf/
        0  11-10-2017 10:41   hf/han/
        0  11-10-2017 10:45   hf/han/hanfeng/
        0  11-10-2017 10:41   hf/han/hanfeng/66.txt
  1283485  11-10-2017 10:45   hf/han/hanfeng/1.txt
        0  11-10-2017 10:41   hf/han/wu.txt
        0  11-10-2017 10:40   hf/1.txt
        0  11-10-2017 10:40   hf/11.txt
---------                     -------
  2566970                     9 files
[root@localhost d6z]#

總結

  • gzip、bzip二、xz這三種壓縮工具是能夠指定解壓文件的目錄和名稱,而zip只能夠指定目錄,卻不能指定解壓文件名稱
  • zip壓縮工具能夠壓縮文件和目錄,但gzip、bzip二、xz這三種卻不能夠壓縮目錄

6.6 tar打包

tar目錄概要

  • tar -cvf 123.tar 123
  • tar -cvf aming.tar 1.txt 123
  • tar -xvf aming.tar
  • tar -tf aming.tar
  • tar -cvf aming.tar --exclude 1.txt --exclude 2 123

網絡小知識

  • 帶寬的單位:比特(Byte)
    • 1Byte=8bit;1兆字節=8兆比特
  • 100兆網卡跑滿,應該是12.5兆字節每秒(這是傳輸速度)——>這是理論值

tar打包目錄

  • 打包對於文件大小無太大變化,可是多少會存在一些微小的變化
    • 若是每一個小文件小於4K(小於一個塊的大小),文件只有1K、2K、3K(未超過4K),有一萬個相似的文件,就須要4000K(40兆),但打包這些小文件就會相加,最後有可能只有十幾兆
  • tar -cvf hf.tar hf/ 把hf目錄打包成hf.tar,其中 / 符號可省略
    • c 表示建立,v 表示可視化,看到建立的過程,f 後跟tar打包的名稱——>v可省略,但cf必須有
[root@hf-01 d6z]# ls
1.txt  1.txt.zip  4.txt  5.txt  8.xt  hafe.zip  hf
[root@hf-01 d6z]# tar -cvf hf.tar hf/
hf/
hf/han/
hf/han/hanfeng/
hf/han/hanfeng/66.txt
hf/han/hanfeng/1.txt
hf/han/wu.txt
hf/1.txt
[root@hf-01 d6z]#
  • 若已經打包,再次去從新打包,會直接覆蓋以前的打包文件,而且沒有任何提示
[root@hf-01 d6z]# tar -cf hf.tar hf/
[root@hf-01 d6z]# ls
1.txt  1.txt.zip  4.txt  5.txt  8.xt  hafe.zip  hf  hf.tar
[root@hf-01 d6z]#

tar解包

  • tar -xvf hf.tar 把hf.tar包解開——>默認覆蓋以前的物件,無任何提示
[root@hf-01 d6z]# tar -xvf hf.tar
hf/
hf/han/
hf/han/hanfeng/
hf/han/hanfeng/66.txt
hf/han/hanfeng/1.txt
hf/han/wu.txt
hf/1.txt
[root@hf-01 d6z]# ls
1.txt  1.txt.zip  4.txt  5.txt  8.xt  hafe.zip  hf  hf.tar
  • 解包後會發現打包的的依舊存在

tar打包目錄和文件

  • tar -cvf han.tar hf/ 1.txt 4.txt 把文件和目錄一塊兒打包成han.tar
[root@hf-01 d6z]# tar -cvf han.tar hf/ 1.txt 4.txt
hf/
hf/han/
hf/han/hanfeng/
hf/han/hanfeng/66.txt
hf/han/hanfeng/1.txt
hf/han/wu.txt
hf/1.txt
1.txt
4.txt
[root@hf-01 d6z]# ls
1.txt  1.txt.zip  4.txt  5.txt  8.xt  hafe.zip  han.tar  hf  hf.tar

tar查看打包文件中的文件列表

  • tar -tf han.tar 查看han.tar中的文件列表
[root@hf-01 d6z]# tar -tf han.tar
hf/
hf/han/
hf/han/hanfeng/
hf/han/hanfeng/66.txt
hf/han/hanfeng/1.txt
hf/han/wu.txt
hf/1.txt
1.txt
4.txt

tar過濾指定的文件,不去打包它們

  • tar -cvf han.tar --exclude hanfeng hf/ 1.txt 4.txt 過濾hanfeng文件目錄,而後打包hf、1.txt、4.txt文件成han.tar
    • --exclude 後面跟過濾到的文件或目錄
    • 選項 f 後,必須跟tar包的名稱
    • 重複的打包名稱,會直接覆蓋掉以前的打包文件
[root@hf-01 d6z]# tar -cvf han.tar --exclude hanfeng hf/ 1.txt 4.txt
hf/
hf/han/
hf/han/wu.txt
hf/1.txt
1.txt
4.txt
  • 過濾掉文件、目錄和*.txt文件
    • 過濾"*.txt"文件必須加""
    • --exclude支持過個文件過濾
[root@hf-01 d6z]# tar -cvf han.tar --exclude hanfeng --exclude wu.txt --exclude "*.txt" hf/ 1.txt 4.txt
hf/
hf/han/

6.7 打包並壓縮

打包並壓縮目錄概要

  • tar -zcvf 123.tar.gz 123 把目錄和文件打包成123.tar.gz
  • tar -zxvf 123.tar.gz 把文件和目錄解包
  • tar -jcvf 123.bz2 123 把目錄和文件打包成123.tar.bz2
  • tar -jxvf 123.bz2 把文件和目錄解包
  • tar -Jcvf 123.xz 123 把目錄和文件打包成123.tar.xz
  • tar -Jxvf 123.xz 把文件和目錄解包
  • tar -tf 123.bz2 或 tar -tf 123.gz 或 tar -tf 123.xz 查看文件目錄

tar打包成gzip,解包

  • tar -zcvf gurui.tar.gz hf/ 1.txt 4.txt
[root@hf-01 d6z]# tar -czvf gurui.tar.gz hf/ 1.txt 4.txt
hf/
hf/han/
hf/han/hanfeng/
hf/han/hanfeng/66.txt
hf/han/hanfeng/1.txt
hf/han/wu.txt
hf/1.txt
1.txt
4.txt
[root@hf-01 d6z]# ls
1.txt  1.txt.zip  4.txt  5.txt  8.xt  gurui.tar.gz  hafe.zip  han.tar  hf  hf.tar
[root@hf-01 d6z]# du -sh gurui.tar.gz        查看打包文件的大小
1.2M	gurui.tar.gz
[root@hf-01 d6z]# du -sh hf/ 1.txt 4.txt
1.5M	hf/
1.5M	1.txt
1.5M	4.txt
  • tar解gzip包
  • tar -zxvf gurui.tar.gz
[root@hf-01 d6z]# tar -zxvf gurui.tar.gz
hf/
hf/han/
hf/han/hanfeng/
hf/han/hanfeng/66.txt
hf/han/hanfeng/1.txt
hf/han/wu.txt
hf/1.txt
1.txt
4.txt
[root@hf-01 d6z]# ls
1.txt      4.txt  8.xt           gurui.tar.gz  hafe.zip  hf
1.txt.zip  5.txt  gurui.tar.bz2  gurui.tar.xz  han.tar   hf.tar

tar打包成bz2

  • tar -cjvf gurui.tar.bz2 hf/ 1.txt 4.txt
[root@hf-01 d6z]# tar -cjvf gurui.tar.bz2 hf/ 1.txt 4.txt
hf/
hf/han/
hf/han/hanfeng/
hf/han/hanfeng/66.txt
hf/han/hanfeng/1.txt
hf/han/wu.txt
hf/1.txt
1.txt
4.txt
[root@hf-01 d6z]# ls
1.txt      4.txt  8.xt           gurui.tar.gz  han.tar  hf.tar
1.txt.zip  5.txt  gurui.tar.bz2  hafe.zip      hf
[root@hf-01 d6z]# du -sh gurui.tar.bz2
432K	gurui.tar.bz2
  • tar解bzip包
  • tar -xjvf gurui.tar.bz2
[root@hf-01 d6z]# tar -xjvf gurui.tar.bz2 
hf/
hf/han/
hf/han/hanfeng/
hf/han/hanfeng/66.txt
hf/han/hanfeng/1.txt
hf/han/wu.txt
hf/1.txt
1.txt
4.txt

tar打包成xz

  • tar -cJvf gurui.tar.xz hf/ 1.txt 4.txt
[root@hf-01 d6z]# tar -cJvf gurui.tar.xz hf/ 1.txt 4.txt
hf/
hf/han/
hf/han/hanfeng/
hf/han/hanfeng/66.txt
hf/han/hanfeng/1.txt
hf/han/wu.txt
hf/1.txt
1.txt
4.txt
[root@hf-01 d6z]# du -sh gurui.tar.xz
60K	gurui.tar.xz
  • tar解xz包
  • tar -xJvf gurui.tar.xz
[root@hf-01 d6z]# tar -xJvf gurui.tar.xz
hf/
hf/han/
hf/han/hanfeng/
hf/han/hanfeng/66.txt
hf/han/hanfeng/1.txt
hf/han/wu.txt
hf/1.txt
1.txt
4.txt

tar查看文件目錄

  • tar -tf 123.bz2 查看文件目錄
  • tar -tf 123.gz 查看文件目錄
  • tar -tf 123.xz 查看文件目錄
[root@hf-01 d6z]# tar -tf gurui.tar.gz
hf/
hf/han/
hf/han/hanfeng/
hf/han/hanfeng/66.txt
hf/han/hanfeng/1.txt
hf/han/wu.txt
hf/1.txt
1.txt
4.txt

總結

  • 咱們會發現,壓縮的越小,花費的時間越多

擴展

http://ask.apelearn.com/question/5435linux

相關文章
相關標籤/搜索