天天看點

【Linux雲計算架構:第一階段-Linux作業系統入門到精通】第9章——檔案的歸檔和壓縮

第九章 檔案的歸檔和壓縮

本節所講内容:

9.1 tar指令進行檔案的歸檔和壓縮

9.2 zip管理壓縮檔案

9.3 了解gzip-bzip2- xz管理壓縮檔案-file-sort檢視檔案

9.1 tar指令進行檔案的歸檔和壓縮

9.1.1 歸檔和壓縮檔案

歸檔和壓縮檔案的好處:節約硬碟的資源 ,加快檔案傳輸速率

tar指令 作用:打包、壓縮檔案

【Linux雲計算架構:第一階段-Linux作業系統入門到精通】第9章——檔案的歸檔和壓縮

作用:打包、壓縮檔案;tar 檔案是把幾個檔案和(或)目錄集合在一個檔案裡,該存檔檔案可以通過使用gzip、bzip2或xz等壓縮工具進行行壓縮後傳輸

檢視man tar

用法:tar [OPTION…] [FILE]…

參數:

-c  create建立檔案
-x  -extract [ˈekstrækt]  提取 解壓還原檔案
-v  --verbose顯示執行詳細過程
-f  --file指定備份檔案
-t  --list 列出壓縮包中包括哪些檔案,不解包,檢視包中的内容
-C (大寫)--directory   指定解壓位置      

例:給/boot/grub目錄 打包

[root@xuegod63 ~]#  tar -cvf grub.tar /boot/grub/  # tar的參數前可以不使用‘-’      

或:

[root@xuegod63 ~]#  tar cvf grub.tar /boot/grub/      

tar: 從成員名中删除開頭的“/”

/boot/grub/
/boot/grub/splash.xpm.gz
[root@xuegod63 ~]# ls gurb.tar
[root@xuegod63 ~]# tar xvf grub.tar   #解壓縮
boot/grub/
boot/grub/splash.xpm.gz
[root@xuegod63 ~]# ls  boot  #得到boot目錄      

注意:在使用絕對路徑名歸檔檔案時,将預設從檔案名中删除該路徑中前面的 / 符号。這樣解壓時,會直接解壓到目前目錄。 如果不移除/壓縮時,當解包時,直接按絕對路徑來釋放,會覆寫原系統中此路徑的檔案。

例1:指定解壓位置 -C

[root@xuegod63 ~]# tar xvf grub.tar.bz2 -C /opt/      

tar: 從成員名中删除開頭的“/”

/boot/grub/
/boot/grub/splash.xpm.gz
[root@xuegod63 ~]# ls /opt/      

boot

例2:把兩個目錄或目錄+檔案打包成一個軟體包:

[root@xuegod63 ~]# mkdir back
[root@xuegod63 ~]# cp /etc/passwd back/
[root@xuegod63 ~]# tar -cvf back.tar /boot/grub  back/ /etc/passwd      

tar: 從成員名中删除開頭的“/”

/boot/grub/
/boot/grub/splash.xpm.gz
back/
back/passwd
/etc/passwd      

例3:不解包,檢視tar中的内容:

[root@xuegod63 ~]# tar -tvf grub.tar         # List all files in archive.tar verbosely.      

例4:對比加v的效果

[root@xuegod63 ~]# tar -xf grub.tar 
[root@xuegod63 ~]# tar -xvf grub.tar 
boot/grub/
boot/grub/splash.xpm.gz      

9.1.2 tar 歸檔+壓縮:

文法:tar czvf newfile.tar.gz SOURCE

常用參數:

-z, --gzip   以gzip方式壓縮  擴充名: tar.gz
-j :        以bz2方式壓縮的  擴充名:tar.bz2
-J :        以xz 方式壓縮   擴充名:tar.xz      

例1:建立.tar.gz 包

[root@xuegod63 ~]# tar cvf etc.tar /etc 
[root@localhost test]# tar zcvf etc.tar.gz /etc  #歸檔,注意備份的名字字尾
[root@localhost test]# tar zxvf etc.tar.gz   #解壓縮      

例2:建立.tar.bz2包

文法: #tar jcvf newfile.tar.bz2 SOURCE

[root@xuegod63 ~]#  tar -jcvf etc.tar.bz2 /etc   #生成 壓縮檔案
[root@xuegod63 ~]#  tar -jxvf etc.tar.bz2 /etc    #解壓縮
[root@xuegod63 ~]#  tar jxvf etc.tar.bz2 -C  /opt    #解壓到opt目錄下      

例3:建立.tar.xz包

[root@xuegod63 ~]#  tar -Jcvf etc.tar.xz /etc
[root@xuegod63 ~]#  tar -xvf etc.tar.xz    #tar.xz 這類包,解壓縮      

或:

[root@xuegod63 ~]#  tar -Jxvf etc.tar.xz  #      

對比三種壓縮方式後壓縮比例:

[root@xuegod63 ~]# ll -h etc.tar*
-rw-r--r-- 1 0 root   36M 5月  10 12:10 etc.tar
-rw-r--r-- 1 0 root   9.6M 5月  10 12:14 etc.tar.bz2    #這個常用
-rw-r--r-- 1 0 root   12M 5月  10 12:11 etc.tar.gz    #這個常用
-rw-r--r-- 1 0 root   7.7M 5月  10 12:16 etc.tar.xz   #這個壓縮比例最高,壓縮的時間是最長      

9.2 zip管理壓縮檔案

zip軟體包解壓縮指令:

zip是壓縮程式,unzip是解壓程式。      

例1:壓縮檔案:

[root@xuegod63 ~]# zip a.zip /etc/passwd       

例2:将所有.jpg的檔案壓縮成一個zip包

[root@xuegod63 ~]# zip all.zip *.jpg        

例3:壓縮一個目錄

[root@xuegod63 ~]# zip -r grub.zip /boot/grub   #一般不用      

解壓縮:

[root@xuegod63 ~]# unzip grub.zip
[root@xuegod63 ~]# unzip grub.zip -d /opt/  #  -d  解壓到指定的目标/opt      

9.3 了解gzip-bzip2- xz管理壓縮檔案-file-sort檢視檔案

我們建立壓縮的TAR存檔,TAR指令它支援三種不同的壓縮方式。

gzip壓縮速度最快;
bzip2壓縮生成的檔案比gzip小,但使用不如gzip廣;
xz壓縮工具相對較新,但是會提供最佳的壓縮率      

9.3.1 壓縮工具(自動以原有的檔案名作為壓縮後的檔案名)

壓縮工具:gzip  bzip2    xz    zip 
常見的壓縮格式: .gz  .bz2   .xz  .zip      

文法格式:

壓縮

gzip 檔案  ====》  gzip a.txt   =====》 a.txt.gz
bzip2 檔案 ===》 bzip2 b.txt  =====》 b.txt.bz2
xz 檔案 ===》xz c.txt ===》c.txt.xz

[root@xuegod63 ~]# mkdir xuegod
[root@xuegod63 ~]# touch  xuegod/a.txt
[root@xuegod63 ~]# gzip xuegod/a.txt 
[root@xuegod63 ~]# ls xuegod/a*
xuegod/a.txt.gz

`注:隻能對檔案進行壓縮,且壓縮後源檔案會消失,一般不用`。
    (但bzip2,xz這兩個工具可以通過添加參數-k來保留下源檔案)


[root@xuegod63 ~]# cp /etc/passwd 1.txt
[root@xuegod63 ~]# bzip2 -k 1.txt
[root@xuegod63 ~]# ls  1.txt.bz2

[root@xuegod63 ~]# xz -k 1.txt
[root@xuegod63 ~]# ls 1.txt.xz      

解壓:

gzip  -d   檔案
bzip2 -d   檔案   -k 保留源檔案
xz  -d   檔案    或   unxz  檔案    -k 保留源檔案      

例:

[root@panda mnt]# gzip -d 1.txt.bz2
[root@xuegod63 ~]# bzip2 -d 1.txt.bz2
[root@panda mnt]# xz -d 1.txt.bz2      

9.3.2 file檢視檔案

file指令

作用: file - determine file type #确定檔案類型

用法: file /etc/passwd

注:linux系統不根據字尾名識别檔案類型      

用file指令檢視檔案的類型。

[root@xuegod63 ~]# file /etc/passwd
/etc/passwd: ASCII text      

9.3.3 按一定規則排序檢視檔案

檢視檔案:

[root@xuegod63 ~]# ls -ltr    按時間排序  t 表示時間,  -r 從小到大,不加r參數由大到小      
【Linux雲計算架構:第一階段-Linux作業系統入門到精通】第9章——檔案的歸檔和壓縮
[root@xuegod63 ~]# ls -lSr  按大小排序  -r 從小到大  
[root@xuegod63 ~]# ls -lSrh  按大小排序  -r 從小到大  ,加-h 參數,看檔案大小,更清楚
[root@xuegod63 ~]# ls -lS   從大到小      

檢視目錄:

[root@xuegod63 ~]# du -sh /etc   看某個目錄大小      

檢視分區大小:

[root@xuegod63 ~]# df -h  可以快速檢視磁盤大小的存儲空間      

9.3.4 排序:處理大量資料時會用到的指令sort

例1:預設按字母規則進行排序

[root@xuegod63 ~]# cat  /etc/passwd | sort | more      

例2: 按資料排序

[root@xuegod63 ~]# vim file2   #每行随意寫一些數字      

例2: 按資料排序,預設從小到大

2
23
231
[root@panda mnt]# sort -n file2  #-n預設從小到大  
[root@xuegod63 ~]# sort  -r file2   #-r 反序排序(升序變成降序進行排序) 從大小到      

例3:支援按月份排序

[root@xuegod63 ~]# vim  file3  #寫入以下内容
January 
March
April
February
[root@xuegod63 ~]# sort -M file3
April
February
January 
March      
-t 指定一個用來區分鍵位置字元
    -k 後面跟數字,指定按第幾列進行排序
    -r 反序排序(升序變成降序進行排序)

[root@xuegod63 ~]# sort  -t ":" -k3 -r /etc/passwd | more  #按: 做分隔符,以第3列,也就是使用者UID,來從大到小排序
[root@xuegod63 ~]# du -h  /etc | sort  -r | more  #把etc目錄下所有檔案,按從大到小排序      

繼續閱讀