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
标签:opt,文件,Mar,tar,--,压缩,解压缩,rw,root
From: https://www.cnblogs.com/xuruizhao/p/18277046