RHEL的归档与压缩

一.为什么使用归档与压缩

为了方便文件在网络上传输,我们需要把多个文件打包成一个文件(归档)。常见的归档命
令包括tar和 cpio,这里讲的是tar的使用

二.tar的语法 

tar的语法如下:

tar cvf aa.tar file1 file2 file3

c的意思是创建归档

v的意思是创建归档时显示被归档的文件,为了简化输出,可以不写V(其实写不写V都是可以的,主要是看自己个人的习惯)

f的意思是用于指定归档的文件;这里指定的是将file1 file2 file3归档到aa.tar中

归档文件一般使用tar后缀

三.tar命令的使用 

先做准备,先拷贝几个文件到当前目录,命令如下

[root@RHEL8 ~]# cp /etc/hosts /etc/passwd /etc/services .
[root@RHEL8 ~]# ls
公共  模板  视频  图片  文档  下载  音乐  桌面  anaconda-ks.cfg  hosts  initial-setup-ks.cfg  passwd  services

然后把hosts、passwd、services这三个文件归档成一个文件aa.tar,命令如下

[root@RHEL8 ~]# tar cf aa.tar hosts passwd services 
[root@RHEL8 ~]# ls
公共  模板  视频  图片  文档  下载  音乐  桌面  aa.tar  anaconda-ks.cfg  hosts  initial-setup-ks.cfg  passwd  services

这里的归档文件是aa.tar,查看它们的大小,命令如下。

[root@RHEL8 ~]# ls -lh passwd services hosts aa.tar 
-rw-r--r--. 1 root root 690K 11月 29 12:27 aa.tar
-rw-r--r--. 1 root root  158 11月 29 12:25 hosts
-rw-r--r--. 1 root root 2.6K 11月 29 12:25 passwd
-rw-r--r--. 1 root root 677K 11月 29 12:25 services
可以看到,aa.tar文件的大小比三个文件大小的总和还大,说明用tar只有归档功能,并没
有压缩功能。
从上面的操作可以看出,当创建好归档文件后,源文件还是在的,即把 hosts、
passwd,services归档到aa.tar中之后,这三个文件依然存在。如果希望归档之后同时删除源
文件,可以加上--remove-files选项。

 删除aa.tar,然后再次归档,命令如下

[root@RHEL8 ~]# rm -rf aa.tar 
[root@RHEL8 ~]# tar cf aa.tar hosts passwd services --remove-files 
[root@RHEL8 ~]# ls
公共  视频  文档  音乐  aa.tar           initial-setup-ks.cfg
模板  图片  下载  桌面  anaconda-ks.cfg

可以看到,三个文件归到aa.rar中之后就被删除了。

查看归档文件中有哪些文件,可以使用t选项,命令如下。

[root@RHEL8 ~]# tar -tf aa.tar 
hosts
passwd
services

想在归档文件中追加一个文件用r选项,命令如下

[root@RHEL8 ~]# tar rf aa.tar anaconda-ks.cfg 
[root@RHEL8 ~]# tar -tf aa.tar 
hosts
passwd
services
anaconda-ks.cfg

 这里已经把anaconda-ks.cfg写入aa.tar中了。

对归档文件进行解档,命令如下

[root@RHEL8 ~]# tar xf aa.tar 
[root@RHEL8 ~]# ls
公共  视频  文档  音乐  aa.tar           hosts                 passwd
模板  图片  下载  桌面  anaconda-ks.cfg  initial-setup-ks.cfg  services

可以看到,解档时默认为解档到当前目录。如果要解档到指定的目录,需要加上“-C指定目录”,现在要把aa.tar解档到/opt目录当中,命令如下。

[root@RHEL8 ~]# ls /opt/
[root@RHEL8 ~]# tar xf aa.tar -C /opt/
[root@RHEL8 ~]# ls /opt/
anaconda-ks.cfg  hosts  passwd  services
[root@RHEL8 ~]# 

然后清空/opt/中的内容,命令如下。

[root@RHEL8 ~]# rm -rf /opt/*
[root@RHEL8 ~]# ls /opt/
[root@RHEL8 ~]# 

四.压缩 

前面讲的tar只是归档,并没有压缩功能,要是想压缩,有专门的工具,如gzip、bzip2、zip等。

先创建一个测试文件,命令如下。

[root@RHEL8 ~]# dd if=/dev/zero of=file bs=1M count=100
记录了100+0 的读入
记录了100+0 的写出
104857600 bytes (105 MB, 100 MiB) copied, 0.358312 s, 293 MB/s
(1)f是读取哪里的内容,这里是/dev/zero。
(2)of是组成的文件名。
(3)count指定zero的数目。
(4)bs指定每个zero的大小,如果没有指定单位则默认为B。 这里的意思是拿100个大小为1M的/dev/zero组成一个名称叫file的文件,此file的大小应
该是100M。
[root@RHEL8 ~]# ls -lh file 
-rw-r--r--. 1 root root 100M 11月 29 17:11 file
[root@RHEL8 ~]# 

gzip的用法

1 压缩:gzip file,压缩出来的文件后缀为gz
2 解压:gzip d file.gz

使用gzip对file进行压缩,命令如下。

[root@RHEL8 ~]# gzip file 
[root@RHEL8 ~]# ls -lh file.gz 
-rw-r--r--. 1 root root 100K 11月 29 17:11 file.gz
[root@RHEL8 ~]# ls -lh file.gz 

 

可以看到,file原来100M,压缩成file.gz的大小只有100K。因为file文件过于简单,所以
压缩率很高。

使用gzip对file进行解压,命令如下。

[root@RHEL8 ~]# gzip -d file.gz 
[root@RHEL8 ~]# 

一般情况下,tar和gzip结合在一起使用,用法如下。

tar zcf aa.tar.gz file1 file2 file3
在tar选项中加z表示调用gzip,z和c一起使用就表示压缩,后缀一般为tar.gz。这句话的
意思是把file1、file2、file3归档并压缩到aa.tar.gz 中。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值