Linux第十六天

这篇博客详细介绍了Linux中常用的压缩与解压缩命令,包括zip、unzip、gzip、bzip2、xz和tar的使用方法。还涵盖了如何在Linux上安装和配置yum,以更高效地管理软件包,包括配置yum服务器(如自建镜像站)和安装第三方软件。

1.zip 命令

1.zip 压缩成功后的文件名 要压缩的文件名
演示:将anaconda-ks.cfg压缩为a.zip
在这里插入图片描述
2.zip -r 递归压缩(指目录)
3.unzip -d 删除压缩文件中的单个文件
演示;我先创建一个test001目录,在这个目录下创建10个文件,之后压缩这10个文件为c.zip,之后用zip -d c.zip file05 删除压缩文件中的file05文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.zip -m 将文件添加到压缩文件中
演示:将anaconda-ks.cfg这个文件添加到压缩好的c.zip压缩文件中去
在这里插入图片描述
4.zip -x 压缩一些文件除了某个文件
演示:我们test001目录下有file01–file10这十个文件,现在我们将除了file05这个文件,其余文件全部压缩到/root/bbb中
在这里插入图片描述
4.zip -v 显示压缩的详细信息
演示:
在这里插入图片描述
in 压缩前大小 out 压缩后的大小 因为我们创建的都是空文件,所以都是0

2.unzip命令

解压命令,对应zip命令
1.unzip -d 解压到指定的路径
演示:将e.zip(中包含file01-file10文件)解压到/root下
在这里插入图片描述
在这里插入图片描述
2.unzip -v 查看压缩文件内容
演示:查看e.zip压缩文件下的内容
在这里插入图片描述
3.unzip -o 不询问直接覆盖
演示:我们test001下有个e.zip压缩文件中有file01–file10的文件,在/root下我们也有file01–file10的文件。因为有同名的文件了,如果将e.zip解压到/root下的话,会有每个文件的覆盖提示,我们可以用-o直接一键覆盖。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.unzip -n 不覆盖原来的文件
演示:默认的解压压缩文件到另一个文件下,如果这个文件下存在与压缩文件中同名的文件,就会询问是否要覆盖,会将这个文件的原文件改变,加上-n的话就不会

3.gzip命令

1.gzip 文件名
演示:zip 不能压缩单个文件但是gzip可以,但是gzip不会保留压缩前的文件
在这里插入图片描述
2.gzip -d 解压缩单个文件
演示:此时会发现被压缩的file01文件已经被还原
在这里插入图片描述
3.gzip -v 显示解压或者压缩的详细信息
演示:解压file01–file10文件并打印详细信息
在这里插入图片描述
4.gzip -l 不解压文件,直接查看压缩的内容
演示:查看e.zip压缩文件的内容
在这里插入图片描述
5.gzip -r 递归压缩
演示:我们创建一个目录zip1,再在zip1下创建一个目录zip2,和file01–file10文件,再在zip2下面创建file01–file10文件。然后递归压缩zip1,发现将
zip1下的文件file的10个文件以及zip2下的file10个文件全部压缩成功

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6.gzip -dr 递归解压
7.gzip -# :#为数字的意思,代表压缩等级,-1 最快,但是压缩比最差,-9最慢,但是压缩比最好,默认是-6.压缩比就是压缩后的大小/压缩前的大小。
8.gzip - t :测试解压,但不解压。
在这里插入图片描述
9.gzip -c
将压缩数据输出到屏幕上,一般配合着重定向使用

4.tar命令

虽然gzip,bzip2,xz也能够针对目录来进行压缩,不过,这两个命令对目录的压缩指的是将目录内的所有文件分别进行压缩的操作。而tar则是将这些文件打包成一个数据包,进行压缩。
tar可以将多个目录或者文件打包成一个大文件,同时换可以通过gzip,bzip2,xz的支持,将该文件同时进行压缩。

tar 一个重要的功能是备份文件,比如/etc。
其实,最简单的使用tar就只要记住下面的命令即可:
压缩 : tar -jcv -f 文件名.tar.bz2 要被压缩的文件或目录的名称
查询 : tar -jtv -f 文件名.tar.bz2
解压缩 : tar -jxv -f 文件名.tar.bz2 -C 想要解压到的目录
-c :建立打包文件,可搭配-v来查看过程中被打包的文件名
-f filename:-f 后面要立刻接被处理的文件名。

演示:例如将当前下的所有文件打包到/usr/local/src/root.tar下,文件名是root.tar
在这里插入图片描述

在这里插入图片描述
-x :解包或解压缩功能,一般配合着-c(大写)解压之后原文件还在
-c(大写) 目录:解压缩或者解包到指定的目录

演示:将/usr/local/src/root.tar的包,解包到/opt下
tar -x /usr/local/src/root.tar -C /opt
-t :查看打包文件的内容含有哪些文件名
演示:查看/usr/local/src/root.tar的包下有哪些文件
在这里插入图片描述
-r :追加文件到归档包中
演示:将123文件追加到/usr/local/src/root.tar的包下,然后使用tar -tf /usr/local/src/root.tar查看里面多了一个123文件
在这里插入图片描述

在这里插入图片描述
-A :添加tar文件至归档
-z :添加gzip属性,也就是使用gzip压缩。通常配合着-c使用,先用-c打包,在使用-z,gzip压缩。
演示:先将etc目录打包到/root/etc1.tar.gz下。之后在将etc目录,使用gzip打包压缩到/root/etc3.tar.gz下。之后加入**-t 查看包中的内容 -v 显示详细信息**。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

会发现这出现了tar:从成员中删除开头的“/”,这句话。在这你会发现画红线的地方都没有从根目录开始。那为什么要去掉根目录呢?
主要是为了安全。我们使用tar备份的数据可能会需要解压缩回来使用,在tar所记录的文件名(这里指的画红线)那就是解压缩后的实际文件名。如果拿掉了根目录,假设你将备份数据在/tmp解开,那么解压缩的文件名就变成/tmp/etc/xxx.如果没有去掉根目录,解压缩后的文件名就会是绝对路径,即解压缩后的数据一定会被放置到/etc/xxx去,如此一来,你原本的/etc/下面的数据,就会被备份数据所覆盖
在这里你会说,既然是备份数据,还原回去也没啥事啊,想象一下,如果你备份的数据是两年前旧版的centos6的,结果你在centos7上还原了,那不是出问题了吗?
-p (大写)这个选项的作用就是将根目录添加上。也就是上面所说的划红线的地方会加上/,也就是从根目录开始。

  • j :通过bzip2的支持进行压缩/解压缩
  • J :通过xz的支持进行压缩/解压缩
    特别注意:1.使用-f 时,要将f放到后面 或者单独将-f 拿出来,比如:tar -jcf ,或tar -zc -f .这是因为f后面接的是要立刻被处理的文件名,所以-f 文件是连在一起使用的,不可分开。 2.tar 不管是归档文件还是解压文件后,原文件还在,可以使用–remove-files或者后面接上;rm - rf
    演示:root下存在file01–file10这十个文件,现在将他们使用tar -zcf /root/file1.tar.gz 打包压缩到root下,并且文件名为file1.tar.gz,然后查看root下的文件会发现原文件file1–file10原文件依然在。如果使用tar -zcf /root/file2.tar.gz --remove-files 会发现,原文件不在,只留下压缩文件file2.tar.gz。也可以使用tar -zcf /root/file2.tar.gz;rm - rf file2.tar.gz。
    在这里插入图片描述
    在这里插入图片描述

5.bzip2 命令

若说gzip是为了替换commpress并提供更好的压缩比而成立的,那么bzip2是为了替换gzip并提供更佳的压缩比而来的。它的用法和gzip几乎相同,只是扩展名由.gz变成了.bz2而已。
这里需注意,gzip与bzip2.压缩文件还是解压文件的话都不会保留原文件,这需要使用-k选项,压缩文件并保留原文件使用-k ,解压文件并保留原文件使用 -dk
1.bzip2 文件
压缩文件但不保留源文件
2.bzip2 -d
解压文件
3.bzip2 -v
显示详细信息
4.bzip2 -t
测试解压,但不真正解压文件
在这里插入图片描述
5.bzip -kd
解压文件并保留原文件
演示:先用bzip2 -d 解压file1.gz 查看发现解压后出现解压文件file1,但原文件file1.gz消失了。之后我在创建一个文件file7,用bzip2 压缩后,有个压缩文件file7.bz2,之后使用bzip2 -kd file7.bz2 解压file7.bz2,产看出现了file7并且原文件file7.bz2也在。
在这里插入图片描述
在这里插入图片描述

6.xz命令

虽然bzip2已经具有很棒的压缩比,不过显然某些自由软件开发者还不满足,因此后来还推出了xz,这个压缩比更高的软件。这个软件的用法也跟gzip/bzip2几乎一模一样。
1.xz 文件
压缩文件,原文件消失
在这里插入图片描述
2.xz -d
解压缩
在这里插入图片描述
3.xz -k
压缩文件并保留原文件
在这里插入图片描述

在这里插入图片描述
4.xz -kd
解压缩文件,并保留原压缩文件
xz可以将gzip压缩比的21%更近一步优化到15%。不过xz最大的问题就是时间花太久,我们可以通过time [gzip|bzip2|xz] -c 文件名 > file1 (-c 是将压缩过程产生的数据输出到屏幕上,这儿后面用了重定向,将它打印到file1文件中)去执行运算,结果发现这三个命令的运行时间依序是
所以,如果你并不觉得时间是你的成本考虑,那么使用xz会比较好。如果时间是你的重要成本,那么gzip是比较适合的压缩文件。压缩率:xz > bzip2 >gzip
#7.显示压缩文件的命令
zcat , zless , bzcat ,bzless , xzcat 不解压只显示压缩内容

8.如何在linux解压rar压缩文件

在这里插入图片描述
[root@admin opt]# yum install wget
[root@admin opt]# wget http://www.rarsoft.com/rar/rarlinux-x64-5.4.0.tar.gz
[root@admin opt]# tar xf rarlinux-x64-5.4.0.tar.gz
[root@admin opt]# cd rar
[root@admin rar]# yum install gcc gcc-c++ make
[root@admin opt]# make
[root@admin opt]# make install
[root@admin opt]# rar a file 压缩
[root@admin opt]# rar e file 解压

9.linux上yum安装软件

一种是yum的方式,一种是rpm的方式。这两种都是软件包管理工具
还有一种是源代码安装。yum与rpm安装的包都是tar.gz这种的
一.yum
在这里插入图片描述
yum是一个基于shell前端的软件包管理器,可管理rpm包,并自动解除软件包之间的依赖关系。**yum仓库(之中存放许多软件包,所以叫仓库也叫源)在哪:1.官方源(在国外)通过linux系统上/etc/yum.repos.d/CentOS-Base.repo这个配置文件连接。2.国内开源镜像站(也就是将官方源缓存在国内,下载更快一点) **3.软件的官方源(也就是软件单独的下载地址)4.公司内部的yum服务器也就是公司私有的镜像站(一种是本地配置的yum源,这种不一般不用,玩玩就行。第二种是运维人员建立一个类似于阿里云的镜像站,也就是我们说的yum服务器。我们可以自己往上面添加包,供公司内部使用)
配置yum源,也就是配置.repo结尾的文件
讲解2:配置2中的yum源:基础源中如果找不到所存在的软件,就在扩展源中找也就是下面的epel
在这里插入图片描述

yum的各种配置

一.配置网络源(基础源):a.找网络镜像站地址(国内yum源:网易163 yum源,安装方法查看:http://mirrors.163.com/.help/ (我推荐)
中科大的 yum源,安装方法查看:https://lug.ustc.edu.cn/wiki/mirrors/help
搜狐的 yum源,安装方法查看:?http://mirrors.sohu.com/help/
阿里云的 yum源,安装方法查看:?http://mirrors.aliyun.com/repo/ (推荐)
清华大学的 yum源,安装方法查看:?https://mirrors.tuna.tsinghua.edu.cn/
浙江大学的 yum源,安装方法查看:?http://mirrors.zju.edu.cn/
中国科技大学yum源,安装方法查看:?http://centos.ustc.edu.cn/)
b.配置:把下载下来的.repo的文件放在/etc/yum.repo.d/
c.清理并重新生成缓存 yum clean all ;yum makecache
二.配置网络源(epel,扩展源):EPEL的全称叫 Extra Packages for Enterprise Linux 。EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如
CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL之后,就相当于添加了一个第三方源。
方法一:从基础源里找epel-release。
yum list | grep epel-release 。
安装epel-release包。
yum install -y epel-release
安装完成之后,会在/etc/yum.repo.d/生成两个epel.repo epel-testing.repo.
清理并重新生成缓存 yum clean all ;yum makecache。
方法二:从镜像站上获取:wget https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm 或者进入这个网站https://mirrors.aliyun.com/epel/ 找到要下载的包,右键复制下载地址
之后wget 下载地址 就可以将这个包下载下来
安装:yum install epel-release-latest-7.noarch.rpm
[root@admin local]# rpm -ihv epel-release-latest-7.noarch.rpm
安装完成之后,会在/etc/yum.repo.d/生成两个epel.repo;epel-testing.repo.
清理并重新生成缓存 yum clean all ;yum makecache。

**讲解3:**软件的官方源(也就是软件单独的下载地址)。比如我们要找nginx这个软件,官方源,基础源,扩展源,本地配置的源都没有(这里不提自己配置的yum服务器)。我们就要首先考虑自己去访问软件的官方源的网站(网站上面有配置软件源的格式),然后拿到配置文件格式(图一),之后再/etc/yum.repos下像配置自己的本地yum源一样建立一个以repo结尾的文件,将从官网复制到的配置文件格式粘贴。这样一个软件源就配置好了,之后使用yum命令安装这个软件。这里我给出nginx和mysql这两个软件的官方网站nginx:http://nginx.org/en/linux_packages.html#RHEL-CentOS
mysql:https://dev.mysql.com/downloads/file/?id=489467
在这里插入图片描述
图一:
在这里插入图片描述

讲解4:配置yum服务器(自己的镜像站)

网络服务有很多(ftp,http等)这里我们采用ftp这种网络服务
[root@yangs ~]# yum -y install vsftpd #(vsftpd这个软件是基于ftp开发的,是基于linux的一个服务端,这一步也就是安装一个服务端)
[root@yangs ~]# mkdir /var/ftp/{centos7u4,centos6u8} #这的文件名自己定,/var/ftp下的目录也就是各个仓库。7的镜像在centos7u4,6的镜像在centos6u8
[root@yangs ~]# systemctl start vsftpd #启动vsftp这个服务
[root@yangs ~]# systemctl enable vsftpd #这个是设置这个服务可以开机后启动

配置防火墙
[root@yangs ~]# firewall-cmd --permanent --add-service=ftp #开通这个服务的防火墙
[root@yangs ~]# firewall-cmd --reload #生效防火墙

关闭SELinux(这个是基于内核的防火墙,这个要关闭掉,不然公司内部人员访问时会被阻止)
[root@yangs ~]# setenforce 0 #关闭
[root@yangs ~]# vim /etc/sysconfig/selinux
在/etc/sysconfig/selinux 文件下把SELINUX的值改成disabled #永久的关闭防火墙

挂载centos镜像(这步和之前配置本地yum源的挂载步骤相似)
临时挂载:[root@yangs ~]# mount /home/centos7u2.iso(传输的镜像) /var/ftp/centos7u2
#将镜像挂载到上面创建的文件夹下,这步之前需要将windows上的镜像传输到linux上,可以传输多个镜像,也可以挂载多个镜像。本地yum源那块,我们挂载的是一个光驱文件(/dev/sr0),所以本地yum源那挂载的镜像使用的是镜像中的软件包,而这块挂载后使用的是操作系统(比如你挂载一个centos7的镜像上去,那就意味着只有7系统的用户才能访问你这个服务器,而你将6的镜像也挂载上去,那么6 7 系统都可以访问你这个yum服务器)

永久挂载镜像:
1.将挂载写入/etc/fstab 之后 mount -a 让文件立即生效同时可以检查是否写入错误
2.写入判断语句到/etc/rc.d/rc.local 之后 chmod +x /etc/rc.d/rc.local
在这里插入图片描述
判断6和7镜像是不是在,在的话执行两个挂载
这样我们的yum服务器就配置好了,只不过它上面只有镜像上面带的包,如果需要其他包,还要下载然后上传到我们自制yum服务器上。比较下之前我们配置本地yum源和我们这次创建yum服务器
两者的基础包都是你所挂载的镜像上的包,但yum服务器可以自己上传其他包,本地yum源不行。
测试我们的服务器是否使用:
打开浏览器,输入ip地址回车
上传第三方包到yum服务器
我们知道第三方软件包的获取一种是我们讲解3中的官方获取,一种就是yum缓存的。这个怎么理解:我们可以通过修改yum的配置文件,让它把下载的包缓存下来。这样我们就可以拿到想要的包,然后上传到我们自己的yum的服务器上。其实也就是将网络源上的包下载下来,上传到我们自己的yum服务器上。
YUM缓存包(nginx和zabbix为例):
配置nginx及zabbix源
[root@localhost ~]# vim /etc/yum.repos.d/nginx.repo #配置yum源
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

  1. 启动yum缓存安装nginx(启动yum缓存,需到yum的配置文件/etc/yum.conf下去修改参数,如果你不启动的话,yum就不会缓存包,那么我们就无法拿到想要的包,图一)
    [root@yangs ~]# vim /etc/yum.conf (图一,将0改为1)
    [root@yangs ~]# yum clean all #清除缓存
    [root@yangs ~]# yum -y install nginx # 下载软件
    [root@yangs ~]# find /var/cache/yum/x86_64/7/ -iname " *.rpm" -exec cp -rf {} /var/ftp/nginx #这一步就是找 /var/cache/yum/x86_64/7/ 下的以rpm结尾的包,并将它拷贝到/var/ftp/nginx。为什么要拷贝到/var/ftp/nginx下,因为/var/ftp下为我们yum服务器包的存放地址。这一步也就将我们缓存的包直接上传到了yum服务器上
    之后我们就可以登录yum服务器看到新上传的nginx包
  2. 创建reopdata: 这步是将新上传的软件打包成一个仓库
    [root@yangs ~]# yum -y install createrepo
    [root@yangs ~]# createrepo /var/ftp/nginx //如果加入新软件包,重新创建
    [root@localhost ~]# ls /var/ftp/nginx/
    nginx-1.8.1-1.el6.ngx.x86_64.rpm repodata

图一:
在这里插入图片描述
[main]
cachedir=/var/cache/yum/ b a s e a r c h / basearch/ basearch/releasever #/var/cache/yum为缓存的包的地址
keepcache=0 #0为关闭缓存,我们需要缓存,所以要将0改为1
debuglevel=2 #日志的级别
logfile=/var/log/yum.log #日志存放的地址
exactarch=1
obsoletes=1
gpgcheck=1 #要不要开启验证
plugins=1 #下载插件的功能要不要开启
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

到此,我们自己配置的yum服务器(私有镜像站)就完成了!!!但是为了让别人更好的使用我们需要写一个使用手册上传到yum服务器上。
cd /var/ftp
vim file1 (文件名自己指定,这个文件里面写入使用方法)
下图是使用手册的案例:
在这里插入图片描述
AUTHOR 是作者名字
mai 联系方式
certid id地址
这三个可以自己发挥。写入自己想要写入的
需注意baseurl中的写法不在同我们之前配置本地yum源不一样了
下面的使用方法就是在客户端上配置yum源的方法:
在公司内部就可以去到上面下载软件了。下面就是客户端(也就是其他员工的linux)
去配置一个yum源从而去连接到我们的镜像站上。在这里,我们需要去重新启动一个终端去做。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值