第九章 檔案的歸檔和壓縮
本節所講内容:
9.1 tar指令進行檔案的歸檔和壓縮
9.2 zip管理壓縮檔案
9.3 了解gzip-bzip2- xz管理壓縮檔案-file-sort檢視檔案
9.1 tar指令進行檔案的歸檔和壓縮
9.1.1 歸檔和壓縮檔案
歸檔和壓縮檔案的好處:節約硬碟的資源 ,加快檔案傳輸速率
tar指令 作用:打包、壓縮檔案
作用:打包、壓縮檔案;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參數由大到小
[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目錄下所有檔案,按從大到小排序