有一段时间连不上网,搭建服务器测试环境所需要的远端yum源也无法连接,于是想到了自建一个本地的yum源来解决这个问题。搭建本地yum源需要两个东西:一个是web服务器,另一个就是rpm包及包元素据。
搭建web服务器很简单,那么主要就是把远端的yum源镜像到本地,所以,找一块比较大的磁盘做好分区挂载到web服务器根目录下,然后执行脚本镜像远端数据到本地就可以了。根据自己的需求,我需要CentOS6和7两个版本的yum源,其中的源包括base、updates、extras和epel且不需要系统iso镜像。于是,连上一个速度快的网络开始同步吧!脚本的内容如下:
#!/bin/bash
## rsync mirror centos and epel with yun-idc
## visit http://mirrors.yun-idc.com/centos/6/
## http://mirrors.yun-idc.com/centos/7/
## http://mirrors.yun-idc.com/epel/6/
## http://mirrors.yun-idc.com/epel/7/
Rsync="/usr/bin/rsync"
Options="-azvL --exclude=SRPMS/ --exclude=xen --exclude=SCL/ --exclude=ppc64/
--exclude=ppc/--exclude=cr/ --exclude=fasttrack/ --exclude=isos/ --bwlimit=2000"
Reporoot="/var/www/html/centos"
Centos6base="$Reporoot/6/os/x86_64/"
Centos6updates="$Reporoot/6/updates/x86_64/"
Centos6extras="$Reporoot/6/extras/x86_64/"
Centos6plus="$Reporoot/6/centosplus/x86_64/"
Centos6epel="$Reporoot/epel/6/x86_64/"
Centos7base="$Reporoot/7/os/x86_64/"
Centos7updates="$Reporoot/7/updates/x86_64/"
Centos7extras="$Reporoot/7/extras/x86_64/"
Centos7plus="$Reporoot/7/centosplus/x86_64/"
Centos7epel="$Reporoot/epel/7/x86_64/"
Logdir="$Reporoot/logs/"
Date=`date +%Y-%m-%d`
Dateis=`date +%F-%H:%M:%S`
Logfile="$Logdir/$Date.log"
Resultfile="$Logdir/$Date.log.res"
Checkres(){
if [ $? == 0 ];then
echo -e "\033[1;32m $1 Rsync is success! $Dateis\033[0m" >> $Resultfile
else
echo -e "\033[1;31m $1 Rsync is fail! $Dateis\033[0m" >> $Resultfile
fi
}
Checkdir(){
if [ ! -d $1 ];then
mkdir -p $1
fi
}
Checkdir $Logdir
Rsyncrepo(){
Checkdir $2
$Rsync $Options $1 $2 |tee $Logfile
Checkres $1
}
Rsyncrepo rsync://mirrors.yun-idc.com/centos/6/os/x86_64/ $Centos6base
Rsyncrepo rsync://mirrors.yun-idc.com/centos/6/updates/x86_64/ $Centos6updates
Rsyncrepo rsync://mirrors.yun-idc.com/centos/6/extras/x86_64/ $Centos6extras
#Rsyncrepo rsync://mirrors.yun-idc.com/centos/6/centosplus/x86_64/ $Centos6plus
Rsyncrepo rsync://mirrors.yun-idc.com/centos/7.2.1511/os/x86_64/ $Centos7base
Rsyncrepo rsync://mirrors.yun-idc.com/centos/7.2.1511/updates/x86_64/ $Centos7updates
Rsyncrepo rsync://mirrors.yun-idc.com/centos/7.2.1511/extras/x86_64/ $Centos7extras
#Rsyncrepo rsync://mirrors.yun-idc.com/centos/7.2.1511/centosplus/x86_64/ $Centos7plus
Rsyncrepo rsync://mirrors.yun-idc.com/epel/6/x86_64/ $Centos6epel
Rsyncrepo rsync://mirrors.yun-idc.com/epel/7/x86_64/ $Centos7epel接下来配置客户端指向本地yum源就好了,配置文件内容如下:
[base] name=CentOS-$releasever - Base baseurl=http://$host/centos/$releasever/os/$basearch/ http://mirrors.aliyun.com/centos/$releasever/os/$basearch gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #released updates [updates] name=CentOS-$releasever - Updates baseurl=http://$host/centos/$releasever/updates/$basearch/ http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled=1 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras baseurl=http://$host/centos/$releasever/extras/$basearch/ http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/ gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled=1 #epel [epel] name=Aliyun EPEL baseurl=http://$host/centos/epel/$releasever/$basearch/ gpgcheck=0
















