文件压缩和解压缩

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
posted @ 2024-06-30 22:04  Linux小菜鸟  阅读(1)  评论(0编辑  收藏  举报