目錄
- 一.關于打包和壓縮
- 二.linux對rar檔案的壓縮和解壓縮
- 三.使用tar對檔案進行歸檔,壓縮,解壓縮
- 3.1 tar對檔案進行歸檔和解壓
- 3.2 歸檔的添加和洗掉
- 3.3 tar對檔案進行歸檔壓縮和解壓縮
- 四.linux對zip檔案的壓縮和解壓縮
- 五.使用gzip,bzip2,xz壓縮檔案,解壓檔案,查看檔案
一.關于打包和壓縮
1.打包(打包又稱為歸檔)是指將一大堆檔案或目錄變成一個總的檔案,壓縮則是將一個大的檔案通過特定的壓縮演算法變成一個小檔案,
2.歸檔和壓縮檔案的好處:方便管理,節約硬碟的資源,加快檔案傳輸速度,
3.LINUX中常見的歸檔壓縮檔案后綴名(歸檔壓縮格式):
| 歸檔壓縮后綴名 | 格式描述 |
|---|---|
| .rar | 表示通過WinRAR壓縮工具生成的檔案 |
| .zip | 表示通過zip壓縮工具生成的檔案 |
| .gz | 表示通過gzip壓縮工具生成的檔案 |
| .bz2 | 表示通過bzip2壓縮工具生成的檔案 |
| .xz | 表示通過xz壓縮工具生成的檔案 |
| .tar | 表示通過tar打包程式打包生成的檔案 |
| .tar.gz | 表示先由tar工具打包,然后由gzip工具進行壓縮生成的檔案 |
| .tar.bz2 | 表示先由tar工具打包,然后由bzip2工具進行壓縮生成的檔案 |
| .tar.xz | 表示先由tar工具打包,然后由xz工具進行壓縮生成的檔案 |
二.linux對rar檔案的壓縮和解壓縮
1.rar格式是windows系統最常見的壓縮格式,rar壓縮檔案可通過WinRAR壓縮生成,RAR是一種專利檔案格式,用于資料壓縮與歸檔打
包,RAR通常情況比ZIP壓縮比高,但壓縮/解壓縮速度較慢,一般linux都是通過tar打包檔案,很少處理rar檔案,但是難免會出現rar格式
的檔案,我們要學會處理此類檔案,
2.linux壓縮和解壓縮rar檔案使用rarlinux程式,此程式需要使用原始碼編譯安裝(原始碼編譯安裝詳情請查看“linux原始碼編譯安裝軟體原理”章
節),rar壓縮檔案的語法為:rar a 壓縮以后的檔案名 需要壓縮的檔案/目錄,rar解壓縮檔案的語法為:rar x 壓縮檔案,
#linux壓縮和解壓縮rar檔案使用rarlinux程式
[root@node5 ~]# wget http://www.rarlab.com/rar/rarlinux-3.8.0.tar.gz
#解壓縮檔案
[root@node5 ~]# tar xf rarlinux-3.8.0.tar.gz
[root@node5 ~]# cd rar
#編譯安裝rarlinux
[root@node5 ~]# make -j 4 && make install
#centos編譯安裝rarlinux-3.8.0.tar.gz檔案后,執行rar可能會出現“bash: /usr/local/bin/rar: /lib/ld-linux.so.2: bad ELF interpreter:No such file or directory”這樣的報錯,需要安裝以下兩個依賴包
[root@node5 ~]# yum install glibc.i686
[root@node5 ~]# yum install libstdc++.so.6 -y
#rar壓縮檔案的語法為:rar a 壓縮以后的檔案名 需要壓縮的檔案/目錄
[root@node5 ~]# rar a etc.rar /etc
[root@node5 ~]# ll etc.rar -h
-rw-r--r-- 1 root root 15M Nov 2 23:23 etc.rar
#rar解壓縮檔案的語法為:rar x 壓縮檔案
[root@node5 ~]# rar x etc.rar
[root@node5 ~]# ll -d etc
drwxr-xr-x 101 root root 8192 Nov 2 23:17 etc
#查看rar的命令幫助,直接輸入rar即可
[root@node5 ~]# rar
RAR 3.80 Copyright (c) 1993-2008 Alexander Roshal 16 Sep 2008
Shareware version Type RAR -? for help
Usage: rar <command> -<switch 1> -<switch N> <archive> <files...>
<@listfiles...> <path_to_extract\>
<Commands>
a Add files to archive
c Add archive comment
cf Add files comment
ch Change archive parameters
cw Write archive comment to file
三.使用tar對檔案進行歸檔,壓縮,解壓縮
1.tar命令用來對檔案進行打包,壓縮和解壓縮,
2.tar命令的打包是把幾個檔案/目錄集合在一個檔案里,通過tar打包之后的檔案,可以使用gzip,bzip2或xz等壓縮工具進行壓縮,
3.tar的語法格式為:tar [OPTION...] [FILE]...,tar命令的常用引數有:
- ? -c create創建檔案
- ? -x -extract [?ekstr?kt] 提取 解壓還原檔案
- ? -v --verbose顯示執行詳細程序
- ? -f --file指定備份檔案
- ? -t --list 列出壓縮包中包括哪些檔案,不解包,查看包中的內容
- ? -C (大寫)--directory 指定解壓位置
3.1 tar對檔案進行歸檔和解壓
只對檔案進行歸檔不壓縮
#對/boot目錄打包
#tar的引數前可以不加“-”,tar -cvf boot.tar /boot等價于tar cvf boot.tar /boot
#在對檔案進行打包的時候出現這么一句話“tar: Removing leading `/' from member names”,這是因為:在使用絕對路徑名歸檔檔案時,將默認從檔案名中洗掉該路徑中前面的 / 符號,這樣解壓時,會直接解壓到當前目錄, 如果不移除/壓縮,當解包時,直接按絕對路徑來釋放檔案,會覆寫原系統中此路徑的檔案,
[root@node5 ~]# tar -cvf boot.tar /boot
tar: Removing leading `/' from member names
/boot/
/boot/efi/
/boot/efi/EFI/
/boot/efi/EFI/centos/
/boot/grub2/
......
[root@node5 ~]# ll boot.tar -h
-rw-r--r-- 1 root root 92M Nov 3 10:57 boot.tar
#解壓
[root@node5 ~]# tar -xvf boot.tar
[root@node5 ~]# ll -d boot
dr-xr-xr-x 5 root root 4096 Apr 26 2019 boot
#指定解壓位置 -C
[root@node5 ~]# tar xf boot.tar -C /opt/
[root@node5 ~]# ll -d /opt/boot
dr-xr-xr-x 5 root root 4096 Apr 26 2019 /opt/boot
#把指定的檔案和目錄進行打包
[root@node5 ~]# tar cf guidan.tar 201810240430234009.pcm baidu.html iu.jpg wanyi.txt logqiege.sh stick
[root@node5 ~]# ll -h guidan.tar
-rw-r--r-- 1 root root 110K Nov 3 11:08 guidan.tar
#不進行解壓,查看tar包里面的內容
[root@node5 ~]# tar tf guidan.tar
201810240430234009.pcm
baidu.html
iu.jpg
wanyi.txt
logqiege.sh
stick/
[root@node5 ~]# tar cf boot.tar /boot
tar: Removing leading `/' from member names
[root@node5 ~]# ll -h boot.tar
-rw-r--r-- 1 root root 92M Nov 3 11:22 boot.tar
#解壓指定的檔案,boot目錄里存在initramfs-3.10.0-693.el7.x86_64.img檔案,現在我們只想解壓此檔案,別的檔案不解壓
[root@node5 ~]# tar xf boot.tar boot/initramfs-3.10.0-693.el7.x86_64.img
[root@node5 ~]# ll boot/initramfs-3.10.0-693.el7.x86_64.img -h
-rw------- 1 root root 20M Apr 26 2019 boot/initramfs-3.10.0-693.el7.x86_64.img
3.2 歸檔的添加和洗掉
1.此步驟對已經打包的檔案進行添加和洗掉,以及進行特定打包,
[root@node5 opt]# ls
apache-tomcat-8.0.51 boot.tar boot.tar.bz2 boot.tar.gz boot.tar.xz nginx sdb6_fulldump sdb6_incredump1 sdb6_incredump2 xfsdump_sdb6 xfsdump_shadow
#把指定的檔案和目錄進行打包
[root@node5 opt]# tar cf ceshi.tar sdb6_fulldump sdb6_incredump1 sdb6_incredump2 xfsdump_sdb6
#不進行解壓,查看tar包里面的內容
[root@node5 opt]# tar tf ceshi.tar
sdb6_fulldump
sdb6_incredump1
sdb6_incredump2
xfsdump_sdb6
#-r:向壓縮歸檔檔案末尾追加檔案
[root@node5 opt]# tar rf ceshi.tar xfsdump_shadow
[root@node5 opt]# tar tf ceshi.tar
sdb6_fulldump
sdb6_incredump1
sdb6_incredump2
xfsdump_sdb6
xfsdump_shadow
#向壓縮歸檔檔案洗掉指定檔案
[root@node5 opt]# tar --delete -f ceshi.tar sdb6_fulldump
[root@node5 opt]# tar tf ceshi.tar
sdb6_incredump1
sdb6_incredump2
xfsdump_sdb6
xfsdump_shadow
#對/usr/local/nginx/conf目錄進行打包,但是排除以default結尾和以types結尾的檔案
[root@node5 opt]# tar cf nginx1.19.tar /usr/local/nginx/conf --exclude=/usr/local/nginx/conf/*.default --exclude=/usr/local/nginx/conf/*.types
tar: Removing leading `/' from member names
#查看tar包發現,沒有以default結尾和以types結尾的檔案
[root@node5 opt]# tar tf nginx1.19.tar
usr/local/nginx/conf/
usr/local/nginx/conf/koi-win
usr/local/nginx/conf/koi-utf
usr/local/nginx/conf/win-utf
usr/local/nginx/conf/fastcgi_params
usr/local/nginx/conf/fastcgi.conf
usr/local/nginx/conf/uwsgi_params
usr/local/nginx/conf/scgi_params
usr/local/nginx/conf/nginx.conf
3.3 tar對檔案進行歸檔壓縮和解壓縮
1.此步驟不僅對檔案進行歸檔,還進行相應的壓縮,
2.tar進行壓縮常用的引數:
- ? -z, --gzip 以gzip方式壓縮 :tar zcvf newfile.tar.gz SOURCE ,擴展名: tar.gz
- ? -j : 以bz2方式壓縮 :tar jcvf newfile.tar.bz2 SOURCE 擴展名:tar.bz2
- ? -J : 以xz 方式壓縮 :tar Jcvf newfile.tar.xz SOURCE 擴展名:tar.xz
3.對/boot目錄進行三種不同方式的壓縮和解壓縮,并對比壓縮比率,
[root@node5 ~]# cd /opt/
[root@node5 opt]# pwd
/opt
[root@node5 opt]# ls
apache-tomcat-8.0.51 nginx sdb6_fulldump sdb6_incredump1 sdb6_incredump2 xfsdump_sdb6 xfsdump_shadow
#創建tar包
[root@node5 opt]# tar cf boot.tar /boot
tar: Removing leading `/' from member names
#創建tar.gz包
[root@node5 opt]# tar zcf boot.tar.gz /boot
tar: Removing leading `/' from member names
#解壓縮tar.gz包
[root@node5 opt]# tar zxf boot.tar.gz
#創建tar.bz2包
[root@node5 opt]# tar jcf boot.tar.bz2 /boot
tar: Removing leading `/' from member names
#解壓縮tar.bz2包
[root@node5 opt]# tar jxf boot.tar.bz2
#解壓縮tar.bz2包到/home/elk/目錄
[root@node5 opt]# tar jxf boot.tar.bz2 -C /home/elk/
[root@node5 opt]# ll /home/elk/boot -dh
dr-xr-xr-x 5 root root 4.0K Apr 26 2019 /home/elk/boot
#創建tar.xz包
[root@node5 opt]# tar Jcf boot.tar.xz /boot
tar: Removing leading `/' from member names
#解壓縮tar.xz包
[root@node5 opt]# tar Jxf boot.tar.xz
#對比三個壓縮檔案,發現boot.tar.xz壓縮比例最高,但是花費時間也最多
[root@node5 opt]# ll -h boot.tar*
-rw-r--r-- 1 root root 92M Nov 3 14:51 boot.tar
-rw-r--r-- 1 root root 84M Nov 3 14:54 boot.tar.bz2
-rw-r--r-- 1 root root 84M Nov 3 14:52 boot.tar.gz
-rw-r--r-- 1 root root 82M Nov 3 15:15 boot.tar.xz
四.linux對zip檔案的壓縮和解壓縮
1.ZIP檔案格式是一種資料壓縮和檔案儲存的檔案格式,原名Deflate,發明者為菲爾·卡茨(Phil Katz),zip格式的壓縮檔案在linux和
windows上都是很常見的,在linux中,zip是壓縮程式,unzip是解壓縮程式,
[root@node5 opt]# pwd
/opt
#將/usr/local/nginx/conf/目錄下所有的conf檔案壓縮成一個zip包
[root@node5 opt]# zip conf.zip /usr/local/nginx/conf/*.conf
adding: usr/local/nginx/conf/fastcgi.conf (deflated 60%)
adding: usr/local/nginx/conf/nginx.conf (deflated 64%)
#壓縮檔案
[root@node5 opt]# zip shadow.zip /etc/shadow
adding: etc/shadow (deflated 43%)
#壓縮目錄
[root@node5 opt]# zip -r boot.zip /boot
#解壓縮zip包
[root@node5 opt]# unzip conf.zip
Archive: conf.zip
inflating: usr/local/nginx/conf/fastcgi.conf
inflating: usr/local/nginx/conf/nginx.conf
[root@node5 opt]# ls usr/local/nginx/conf/
fastcgi.conf nginx.conf
#解壓縮zip包到指定目錄
[root@node5 opt]# unzip conf.zip -d /home/elk/
Archive: conf.zip
inflating: /home/elk/usr/local/nginx/conf/fastcgi.conf
inflating: /home/elk/usr/local/nginx/conf/nginx.conf
[root@node5 opt]# ls /home/elk/usr/local/nginx/conf/
fastcgi.conf nginx.conf
五.使用gzip,bzip2,xz壓縮檔案,解壓檔案,查看檔案
[root@node5 opt]# ls
apache-tomcat-8.0.51 nginx sdb6_fulldump sdb6_incredump1 sdb6_incredump2 usr xfsdump_sdb6 xfsdump_shadow
#gzip壓縮
[root@node5 opt]# gzip xfsdump_shadow
[root@node5 opt]# ls
apache-tomcat-8.0.51 nginx sdb6_fulldump sdb6_incredump1 sdb6_incredump2 usr xfsdump_sdb6 xfsdump_shadow.gz
#查看gzip壓縮之后的檔案
[root@node5 opt]# zcat xfsdump_shadow.gz
#解壓gzip檔案
[root@node5 opt]# gzip -d xfsdump_shadow.gz
#bzip2壓縮
[root@node5 opt]# bzip2 xfsdump_sdb6
[root@node5 opt]# ls
apache-tomcat-8.0.51 nginx sdb6_fulldump sdb6_incredump1 sdb6_incredump2 usr xfsdump_sdb6.bz2 xfsdump_shadow.gz
#查看bzip2壓縮之后的檔案
[root@node5 opt]# bzcat xfsdump_sdb6.bz2
#解壓bzip2檔案
[root@node5 opt]# bzip2 -d xfsdump_sdb6.bz2
#xz壓縮
[root@node5 opt]# xz sdb6_incredump2
[root@node5 opt]# ls
apache-tomcat-8.0.51 nginx sdb6_fulldump sdb6_incredump1 sdb6_incredump2.xz usr xfsdump_sdb6.bz2 xfsdump_shadow.gz
#查看xz壓縮之后的檔案
[root@node5 opt]# xzcat sdb6_incredump2.xz
#解壓xz檔案
[root@node5 opt]# xz -d sdb6_incredump2.xz
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/209224.html
標籤:其他
