前言
上一篇博客总结了文件的查找,这篇博客继续开始文件的压缩和打包的相关学习总结,对应《鸟哥的Linux私房菜》一书的第八章的部分内容
Linux中常见的压缩指令
在Linux的系统中,压缩文件的扩展名大多是:.tar,.tar.gz,.tgz,.gz,.Z,.bz2,.xz
不同的压缩文件名称对应的含义如下
其中.tar结尾的文件,只是程序打包(将很多文件归档)的数据,并没有压缩过
gzip,zcat/zmore/zless/zgrep
针对.Z,.zip和.gz压缩文件的一组命令
实例
[root@localhost ~]
drwxr-xr-x. 2 root root 12288 Apr 29 19:32 /etc/brltty
-rw-r--r--. 1 root root 12288 Apr 29 19:38 /etc/aliases.db
-rw-r--r--. 1 root root 15137 Sep 30 2020 /etc/autofs.conf
-rw-r--r--. 1 root root 21929 Apr 11 2018 /etc/brltty.conf
-rw-r--r--. 1 root root 26832 Oct 13 2020 /etc/dnsmasq.conf
-rw-r--r--. 1 root root 85472 Apr 30 20:55 /etc/ld.so.cache
-rw-r--r--. 1 root root 670293 Jun 7 2013 /etc/services
[root@localhost ~]
[root@localhost tmp]
[root@localhost tmp]
services: 79.7% -- replaced with services.gz
[root@localhost tmp]
-rw-r--r--. 1 root root 670293 Jun 7 2013 /etc/services
-rw-r--r--. 1 root root 136088 Jun 18 20:13 /tmp/services.gz
上述实例的最后,发现tmp文件夹下没有了原先的services文件夹,gzip在压缩的时候,在预设的情况下原本的文件不会被保留,直接会被压缩成.gz文件,源文件不再存在。
[root@localhost ~]
解压的操作
[root@localhost tmp]
[root@localhost tmp]
[root@localhost tmp]
bzip2,bzcat/bzmore/bzless/bzgrep
功能与gzip差不多,但是bzip2能提供更好的而压缩比,同时是针对bz2文件的解压缩命令
实例
[root@localhost tmp]
services: 5.409:1, 1.479 bits/byte, 81.51% saved, 670293 in, 123932 out.
[root@localhost tmp]
-rw-r--r--. 1 root root 123932 Jun 18 20:24 services.bz2
[root@localhost tmp]
[root@localhost tmp]
[root@localhost tmp]
-rw-r--r--. 1 root root 670293 Jun 18 20:24 services
-rw-r--r--. 1 root root 123932 Jun 18 20:39 services.bz2
xz,xzcat/xzmore/xzless/xzgrep
xz命令的用法,也和前两个一样,只是是针对xz的压缩文件
命令实例
[root@localhost tmp]
services (1/1)
100 % 97.3 KiB / 654.6 KiB = 0.149
[root@localhost tmp]
-rw-r--r--. 1 root root 123932 Jun 18 20:39 services.bz2
-rw-r--r--. 1 root root 135489 Jun 18 20:43 services.gz
-rw-r--r--. 1 root root 99608 Jun 18 20:24 services.xz
[root@localhost tmp]
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 97.3 KiB 654.6 KiB 0.149 CRC64 services.xz
[root@localhost tmp]
[root@localhost tmp]
-rw-r--r--. 1 root root 670293 Jun 18 20:24 services
-rw-r--r--. 1 root root 123932 Jun 18 20:39 services.bz2
-rw-r--r--. 1 root root 135489 Jun 18 20:43 services.gz
[root@localhost tmp]
[root@localhost tmp]
-rw-r--r--. 1 root root 670293 Jun 18 20:24 services
-rw-r--r--. 1 root root 123932 Jun 18 20:39 services.bz2
-rw-r--r--. 1 root root 135489 Jun 18 20:43 services.gz
-rw-r--r--. 1 root root 99608 Jun 18 20:24 services.xz
tar指令
tar命令可以将多个目录或者文件归档打包成一个大文件,同时还可以利用前面三个压缩命令的支持。
后续的先关实例都以bz2的压缩包为例
打包和压缩
1、使用tar命令备份/etc目录的数据
[root@localhost tmp]
/etc/nfs.conf
real 0m0.998s
user 0m0.863s
sys 0m0.063s
[root@localhost tmp]
/etc/exports.d/
/etc/nfs.conf
real 0m2.048s
user 0m1.965s
sys 0m0.010s
[root@localhost tmp]
/etc/nfs.conf
real 0m10.725s
user 0m10.310s
sys 0m0.255s
执行结果可以看到,从压缩成gz,到压缩成xz,耗时依次递增,毕竟压缩比也是依次提升的。
2、打包的时候排除指定的文件夹
这个可以通过–exclude来指定,如下所示
[root@localhost tmp]
3、打包比某个文件还新的文件
[root@localhost etc]
/etc
/etc/resolv.conf
/etc/group
/etc/gshadow
/etc/shadow
/etc/subgid
/etc/subuid
/etc/sysctl.conf
/etc/security
/etc/security/limits.conf
/etc/tuned/active_profile
/etc/tuned/profile_mode
[root@localhost tmp]
[root@localhost tmp]
-rw-r--r-- root/root 501 2022-06-12 18:54 etc/group
---------- root/root 398 2022-06-12 18:54 etc/gshadow
-rw-r--r-- root/root 887 2022-06-12 18:54 etc/passwd
-rw-r--r-- root/root 1976 2022-06-12 18:49 etc/profile
-rw-r--r-- root/root 76 2022-06-19 09:08 etc/resolv.conf
-rw-r--r-- root/root 2498 2022-06-12 18:55 etc/security/limits.conf
---------- root/root 719 2022-06-12 18:54 etc/shadow
-rw-r--r-- root/root 20 2022-06-12 18:54 etc/subgid
-rw-r--r-- root/root 20 2022-06-12 18:54 etc/subuid
-rw-r--r-- root/root 516 2022-06-12 18:56 etc/sysctl.conf
-rw-r--r-- root/root 14 2022-06-19 09:08 etc/tuned/active_profile
-rw-r--r-- root/root 5 2022-06-19 09:08 etc/tuned/profile_mode
4、除了打包,还可以通过管道边打包,边解压
[root@localhost etc]
[root@localhost etc]
上述命令中的 - 其实表示的是生成的打包文件,不过我们马上就解压了,所以我们不想让中间文件存在,就用 - 来处理。这个操作等同于cp -r 。
其中的- 代表标准的输入输出命令,| 代表管道命令,这些我们在后面bash和shell学习的时候会总结。
查阅tar文件
通过上面总结的命令选项来看,如果需要查看tar压缩包的文件,则需要用到-t选项
实例
[root@localhost tmp]
在查看的时候,会发现,压缩包中并没有/etc的根目录,通常要压缩指定文件的时候也会提示——并没有将根目录压缩到压缩包中,如果需要在压缩包中保留根目录,我们需要用到-P 选项。
将tar打包的数据解压
通过上面总结的命令选项来看,将tar包的文件解压,则需要用到-x选项。
[root@localhost tmp]
[root@localhost tmp]
上面的操作是将整个tar包全部解压,其实tar命令还支持,只解压单个文件
[root@localhost tmp]
---------- root/root 398 2022-06-19 09:19 ./etc/gshadow
---------- root/root 690 2022-06-19 09:19 ./etc/shadow-
---------- root/root 719 2022-06-19 09:19 ./etc/shadow
---------- root/root 387 2022-06-19 09:19 ./etc/gshadow-
[root@localhost tmp]
[root@localhost tmp]
[root@localhost etc]
总用量 4
----------. 1 root root 719 6月 19 09:19 shadow
总结
至此,关于文件的基本操作,算是总结完成,后续会梳理学习bash和shell的基础内容
|