0x01 前言

家里测试的虚拟机很多,而且生命周期很短,虽然有做虚拟机模版镜像,但我还是喜欢每次新建虚拟机的时候安装常用的包和进行系统升级。

那么问题来了,windows有WSUS服务(基于win server 2012配置WSUS服务)可供配置以达到节省流量的目的,可是Linux呢?

Linux肯定是镜像各种源服务器啦。

0x02 准备

首先要准备一台centos服务器并安装nginx与rsync,最重要的是,这台服务器需要有公网连接。

然后新建目录用于存放镜像文件:

首先配置nginx,nginx可以通过yum安装,也可以参考以下文章:

当然,如果你并没有特殊服务需要编译nginx,那么通过yum安装是最方便的:

安装完毕后直接直接修改nginx.conf即可,将server段修改为以下内容:

请注意第三行(高亮行)中的mirror.t.com这个域名,如果你只想通过IP进行访问,请删除此行。如果需要通过域名访问,那么请修改为你的域名。

配置完成后请通过以下命令启动或重新加载nginx:

最后就可以通过域名或IP尝试访问。

0x03 rsync

首先要确定你需要镜像的源,以下是我需要用到的源:

  • epel
  • centos7-base
  • centos7-updates
  • centos7-extras
  • centos7-centosplus
  • centos7.3.1611-base
  • centos7.3.1611-updates
  • centos7.3.1611-extras
  • centos7.3.1611-centosplus

如果你经常更新系统或者安装软件,那么你肯定会觉得有些源特别特别慢,所以我一般使用清华大学的开源软件镜像站作为源站,他们的地址是:

在清华大学镜像站中,我找到我所需要的所有连接后,还需要根据实际情况,新建目录。例如epel源:

当然,你也可以根据自己的实际情况进行目录命名。

如果你仔细查看源站中的目录结构会发现,里面很有许多你不需要的内容,尤其是安装镜像等文件大小极其庞大的文件。那么我们建立一个不同步文件与文件夹列表:

为了方便运行,我们新建一个简易的shell脚本:

最后运行脚本:

同步时间会很长,时间的长短视乎你的网络速度。一切顺利的话,完成后再次访问的界面如下:

0x04 客户机

需要先将客户机上原有的repo源做备份处理:

然后新建home.repo:

完成后清除源先的缓存再建立缓存:

最后查询一个rpm安装包进行验证:

在第10行(高亮行)中可以看到,安装源义经改为了epel-home这个源。

0x05 结语

上面我所同步的源,文件大小在32GiB左右。请预留出足够的空间用于存储文件。另外在同步简易shell脚本中的 createrepo 命令可能会导致高CPU使用率,第一次建立repo数据库后可以使用:

这个命令来更新数据库,而不需要重新建立。

最新的配置文件请浏览我的私有gitlab:

0x06 相关视频

https://www.bilibili.com/video/av20423498/