Linux檔案壓縮和解壓縮
- 打包:就是把一堆檔案放在一起,並不會節省磁碟空間,僅僅是進行一個 歸類整理的過程
- 壓縮:把一堆檔案放在一起,再進行壓縮,會節省磁碟空間
在Linux中存在如下幾種壓縮格式
- .gzip(壓縮速度最快)
- .bzip2
- .xz(壓縮效果最好)
【1】tar命令
製作壓縮包(打包壓縮)
選項
- -c:製作tar包
- -f:指定tar包的名字,必須放在所有引數的最後面
- -z:gzip壓縮格式
- -j:bzip2壓縮格式
- -J:xz壓縮格式
- -C:在製作壓縮包的時候,-C引數,可以只壓縮指定的檔案,而不加上路徑
{24-05-28 23:37}bogon:/opt root# touch {1..3}.txt
{24-05-28 23:38}bogon:/opt root# ls
1.txt 2.txt 3.txt
{24-05-28 23:38}bogon:/opt root# tar -czf a.tar.gz *.txt
{24-05-28 23:38}bogon:/opt root# ls
1.txt 2.txt 3.txt a.tar.gz
{24-05-28 23:39}bogon:/opt root# tar -cjf a.bz2 *.txt
{24-05-28 23:39}bogon:/opt root# tar -cJf a.xz *.txt
{24-05-28 23:40}bogon:/opt root# ls
1.txt 2.txt 3.txt a.bz2 a.tar.gz a.xz
# 如果我們在壓縮的時候不加-C引數,那麼壓縮後的壓縮包裡存在這完整的路徑
{24-05-29 9:29}locahost:/opt root# tar -zcvf a.tar.gz /etc/sysconfig/network-scripts/ifcfg-ens33
{24-05-29 9:29}locahost:/opt root# ls
1.txt 2.txt 3.txt a.tar.gz qq
{24-05-29 9:29}locahost:/opt root# tar -tf a.tar.gz
etc/sysconfig/network-scripts/ifcfg-ens33
# 如果我們在壓縮時加上了-C引數,那麼在就可以指定某一個路徑下的檔案,在壓縮後,壓縮檔案中就只會存在一個檔名字,而不是一個完整的路徑
{24-05-29 9:32}locahost:/opt root# tar -zcvf a.tar.gz -C /etc/sysconfig/network-scripts/ ifcfg-ens33
ifcfg-ens33
{24-05-29 9:32}locahost:/opt root# tar -tf a.tar.gz
ifcfg-ens33
# 我們也可以一次性指定多個檔名
{24-05-29 9:33}locahost:/opt root# tar -zcvf a.tar.gz -C /etc/ hosts passwd -C /etc/sysconfig/network-scripts/ ifcfg-ens33
hosts
passwd
ifcfg-ens33
- -x:釋放包
- -C:指定解壓的路徑
{24-05-28 23:47}bogon:/opt root# tar -xf a.tar.gz -C ./qq
【2】、gzip和bzip2
只可以壓縮和解壓縮檔案
[root@localhost ~]# dd if=/dev/zero of=testfile bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.0684654 s, 1.5 GB/s
#使用dd命令生成一個大檔案作為測試目標,/dev/hero檔案是一個“空氣檔案”,看不見但是卻又是真實存在的,類似於/dev/null“黑洞檔案”
(1)、gzip
[root@localhost ~]# gzip testfile
[root@localhost ~]# ll -lh
total 416K
-rw-------. 1 root root 1.1K Mar 18 13:30 anaconda-ks.cfg
-rw-r--r--. 1 root root 25K Apr 17 2023 epel-release-latest-8.noarch.rpm
-rw-r--r--. 1 root root 100K Mar 20 03:48 testfile.gz
-rw-r--r--. 1 root root 206K Sep 20 2021 yum-4.7.0-4.el8.noarch.rpm
-rw-r--r--. 1 root root 73K Sep 20 2021 yum-utils-4.0.21-3.el8.noarch.rpm
#gzip命令預設是在生成壓縮檔案後,刪除原檔案,-k引數可以使其在生成壓縮檔案時,保留原檔案
[root@localhost ~]# gzip -k testfile
[root@localhost ~]# ll -h
total 101M
-rw-------. 1 root root 1.1K Mar 18 13:30 anaconda-ks.cfg
-rw-r--r--. 1 root root 25K Apr 17 2023 epel-release-latest-8.noarch.rpm
-rw-r--r--. 1 root root 100M Mar 20 03:48 testfile
-rw-r--r--. 1 root root 100K Mar 20 03:48 testfile.gz
-rw-r--r--. 1 root root 206K Sep 20 2021 yum-4.7.0-4.el8.noarch.rpm
-rw-r--r--. 1 root root 73K Sep 20 2021 yum-utils-4.0.21-3.el8.noarch.rpm
#gzip在壓縮時存在等級劃分,-1 ~ -9
-1, --fast compress faster
-9, --best compress better
[root@localhost opt]# gunzip test.gz
[root@localhost opt]# ll -h
total 12K
drwxr-xr-x. 2 root root 6 Mar 18 20:20 fruit
drwxr-xr-x. 3 root root 71 Mar 19 03:00 ln
-rw-r--r--. 1 root root 4.5K Mar 20 04:04 test
-rw-r--r--. 1 root root 1022 Mar 18 21:57 x.py
(2)、bzip2
[root@localhost opt]# bzip2 -k test
[root@localhost opt]# ll
total 16
drwxr-xr-x. 2 root root 6 Mar 18 20:20 fruit
drwxr-xr-x. 3 root root 71 Mar 19 03:00 ln
-rw-r--r--. 1 root root 4585 Mar 20 04:04 test
-rw-r--r--. 1 root root 1723 Mar 20 04:04 test.bz2
-rw-r--r--. 1 root root 1022 Mar 18 21:57 x.py
[root@localhost opt]#
#和gzip一樣 bzip2在壓縮時預設不保留原檔案,-k引數可以讓其儲存原檔案
[root@localhost opt]# bunzip2 test.bz2
[root@localhost opt]# ll
total 12
drwxr-xr-x. 2 root root 6 Mar 18 20:20 fruit
drwxr-xr-x. 3 root root 71 Mar 19 03:00 ln
-rw-r--r--. 1 root root 4585 Mar 20 04:04 test
-rw-r--r--. 1 root root 1022 Mar 18 21:57 x.py
【3】、zip歸檔
用於Linux和Windows跨平臺使用
-r:遞迴壓縮
zip -r a.zip /etc/ /home
unzip,解壓操作
-l:檢視壓縮包的內容
-d:指定解壓到哪
unzip a.zip -d ./bak